【发布时间】:2014-10-11 20:11:52
【问题描述】:
我的网站有 2 个页面;从 URL 中获取 username,将其放入 $_SESSION 并显示该用户所属组的列表。
当用户选择一个组时,站点会转到下一页(group.php 页面)并在其 URL 中提供组名称,以便在组页面中使用。
在群组页面中有一个发送消息的表单,这些消息将显示在群组页面中(我猜有点像 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>
【问题讨论】:
-
你在做
group.php?id不应该是group.php?groupname吗? -
这也应该用引号引起来
action="<?php echo "'group.php?id=" . $gid . "'"; ?>"。 -
您在会话或 url 中使用保存组名?