0

我有一个向 MySQL 数据库插入一些东西的表单。

用户名。密码。ID。

我将用户名存储到会话中,然后更改标题 (.php?recovery=success)。之后,我想测试我的会话是否有效(供以后使用,所以我可以转到数据库中该用户名的列来获取我们插入的 ID,如果我只是回显 $ID,它将生成一个新 ID .

else if (isset($_GET['recovery']) && $_GET['recovery'] == 'success') 
{
echo $_SESSION['user'];

    /* 

    ***REMOVED FOR TESTING***

    $fetch = $connect->query("SELECT * FROM users WHERE username = ':username' LIMIT 1");
    $fetch->bindValue(':username', $_SESSION['user']);
    $fetch->execute();

    while($row = $fetch->fetch( PDO::FETCH_ASSOC )) {
        echo $row['recover_id'];
    }
    */
}

问题:

我填写了表格,提交时我需要恢复.php?recovery=success,然后在回显会话数据时,没有输出?

我需要打开一个新会话的文件 session.inc.php。

这是整个代码:

http://pastebin.com/ba77rDi3

我究竟做错了什么?

我是 PHP 新手,尤其是 PDO。谢谢!

额外的:

会话.inc.php

<?php
session_start();
?>
4

2 回答 2

2

看起来您的代码正在将信息存储到 Session 中,然后通过对标头的调用进行重定向(请参见代码段)。

                // Let's store these into a session now.
                $_SESSION['user'] = $username;
                $_SESSION['pass'] = $password;

                //Now let's refresh the page, to a different header.
                header('Location: recover.php?recovery=success');

只是要小心;我建议明确调用

session_write_close()

在重定向之前,确保在执行离开当前页面之前正确保存会话数据......就像这样:

                    // Let's store these into a session now.
                    $_SESSION['user'] = $username;
                    $_SESSION['pass'] = $password;


                    session_write_close();                       

                    //Now let's refresh the page, to a different header.
                    header('Location: recover.php?recovery=success');
于 2013-03-24T16:13:10.547 回答
1

问题是:

我将代码放在检查是否未设置恢复的语句

if (!isset($_GET['recovery'])) {

在代码顶部,如果您没有在 pastebin 中看到。

我将代码放在该语句之外,它起作用了。

于 2013-03-24T16:54:01.577 回答