会话未保存为某些变量
问题描述:
我在网站上有2个页面;从URL获取username
,将其放入$_SESSION
,并显示该用户所属的组列表。会话未保存为某些变量
当用户选择一个组时,该站点将转到下一页(group.php
页面),并在其URL中提供该组名称以便在组页面中使用该组名称。
在群组页面中,有一个表单可以发送要显示在群组页面中的消息(kindda就像Facebook墙,我猜)。
问题出在这里:
在组列表页面username
被发送到会话中; 群组名称被组页面拾取后,我也将其发送到会话中, 但由于某种原因,当页面到达if(isset($_POST['texts']))
部分时,它会记住用户名,但不记录组名。
任何想法为什么是这样?
以下是组页面的代码。
<?php
session_start();
include_once("../connect.php");
$username = $_SESSION['username'];
$result = mysqli_query($conn, "SELECT id FROM users WHERE username='$username'");
while($row = mysqli_fetch_array($result)) {
$uid = $row['id'];
}
if(isset($_GET['groupname'])) {
$groupname = $_GET['groupname'];
}
$result = mysqli_query($conn, "SELECT id FROM groups WHERE groupname='$groupname'");
while($row = mysqli_fetch_array($result)) {
$gid = $row['id'];
}
$_SESSION['groupname'] = $groupname;
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form action=
<?php
echo "'group.php?id=" . $gid . "'";
?> method="post" name="newtext">
<textarea name="texts" rows="4" cols="30"></textarea>
<input type="submit" id="subtext" name="submit" value="Submit" />
</form>
<?php
//add text message
if(isset($_POST['texts'])){
$texts = $_POST['texts'];
if($texts == "") {
echo "<script>alert('no message writen')</script>";
}else{
mysqli_query($conn, "INSERT INTO texts (`sender`, `sent`, `group`, `text`)
VALUES ('$uid', now(), '$gid', '$texts');");
echo "<script>alert('message recieved!')</script>";
}
}
?>
</div>
</body>
</html>
答
这是因为在这种情况下$ _GET ['groupname']不再存在。
echo "'group.php?id=" . $gid . "'";
我不使用你$ _GET [ '身份证']什么地方看到的,所以动作要
group.php?组名= GROUPNAME_HERE的 代替group.php?ID = 1
这应该工作:
<form action="group.php?groupname=<?php echo $groupname; ?>" method="post" name="newtext">
我还要补充的其他STA在这里决定如果变量不存在,该怎么办。
if(isset($_GET['groupname'])) {
$groupname = $_GET['groupname'];
}
+0
结束,告诉页面检查两个选项 – user3187759 2014-10-11 21:37:14
你在做'group.php?id'不应该是'group.php?groupname'吗? – 2014-10-11 20:14:02
这应该用引号'action =“”''也可以。 – 2014-10-11 20:15:19
您在session或url中使用保存组名? – 2014-10-11 20:21:16