我有一个表单可以将一些东西插入到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?恢复=成功 然后在回显会话数据时,没有输出?
我需要文件session.inc.php,它会打开一个新会话。
这是整个代码:
我做错了什么?
我是PHP新手,特别是PDO。 谢谢!
附加:
Session.inc.php
<?php
session_start();
?>
答案 0 :(得分:2)
看起来您的代码正在将信息存储到会话中,然后通过调用标头重定向(请参阅代码段)。
// 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');
要谨慎;我建议明确致电
在重定向之前,确保在执行之前正确保存会话数据离开当前页面......如下所示:
// 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');
答案 1 :(得分:1)
问题是:
我把代码放在声明中,检查恢复是否不设置
if (!isset($_GET['recovery'])) {
在代码的顶部,如果你没有在pastebin中看到。
我把代码放在那个声明之外,它起作用了。