某些变量不会保存会话

时间:2014-10-11 20:11:52

标签: php mysql session mysqli

我在网站上有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>

1 个答案:

答案 0 :(得分:0)

因为在这种情况下,$ _GET [&#39; groupname&#39;]不再存在。

echo "'group.php?id=" . $gid . "'";

我没有看到你在任何地方使用$ _GET [&#39; id&#39;],所以行动应该是

group.php?组名= GROUPNAME_HERE  而不是 group.php?id = 1

这应该有效:

<form action="group.php?groupname=<?php echo $groupname; ?>" method="post" name="newtext">

我还会在这里添加一个else语句来决定如果该变量不存在该怎么做。

if(isset($_GET['groupname'])) {
    $groupname = $_GET['groupname'];    
}