【问题标题】:PHP - Session variables are being deleted after POSTPHP - POST 后会话变量被删除
【发布时间】:2017-06-03 07:06:28
【问题描述】:

我有这个问题:我有一个 HTML 表单,用于添加带有一些字段的新用户;更重要的是昵称和密码。当我完成这些字段后,我提交并且一切正常(新用户也出现在数据库中)。

但是,在那之后,我丢失了我的 SESSION 变量。我知道这一点,因为我在每个页面的开头都给他们打电话,以了解是否登录了正确的用户。我认为错误是由昵称和密码字段产生的。是否有可能 PHP、Chrome 或任何将表单昵称和密码解释为登录用户昵称和密码的东西,这就是 SESSION 变量崩溃的原因?

谢谢。


编辑:有部分代码:

表格:

<input type="text" name="user" required />
<input type="password" name="pass" required />
<input type="submit" name="add_user" />

有两个输入。很简单。一个基本的表单,带有重定向到 PHP 页面的提交,它与 POST 数据一起使用:

if(isset($_POST["add_user"])){

$nick=$_POST["user"];
$password=$_POST["pass"];

$query="insert into users(nick,password) 
values('$nick','$password')";
$result=mysqli_query($conexion,$query);}

之后,SESSION 变量就不能工作了。我有 $_SESSION['login']、$_SESSION['password'] 等等,它们是使用登录名创建的。但是,添加新用户后,它们就消失了。

我打印了我的 session_vars,并确认它们在 POST 后消失了。

----------------------------------------------- -----

好的,我解决了。这是用户权限审查的错误。毕竟,代码很好(至少这部分)。无论如何,谢谢大家。

【问题讨论】:

  • 你能发布一些代码来重现这个问题吗?
  • 检查您设置这些值的位置并(如果可能)设置一个调试点,或者至少生成一些输出以查看它何时被实际调用以及使用什么。尝试添加 print_r($_SESSION); 以查看保存的值。
  • session_start(); ...在之前的每一页上
  • 你说SESSION['login'] - 你在使用$_SESSION['login'] 不是吗!
  • 我在所有这些页面上都有 session_start()。我正在使用 $_SESSION,不用担心。

标签: php session post


【解决方案1】:

html Page1.php

<input type="text" name="user" required />
<input type="password" name="pass" required />
<input type="submit" name="add_user" />

php

// Start the session
session_start();

if(isset($_POST["add_user"])){

$nick=$_POST["user"];
$password=$_POST["pass"];

$query="insert into users(nick,password) 
values('$nick','$password')";
$result=mysqli_query($conexion,$query);}


$_SESSION["user"] =  $nick;
$_SESSION["pass"] = $password;

注意: Page2.php

现在您可以在 php 代码顶部首先添加的每个页面上使用 Session:

    session_start();  

echo $_SESSION["user"];
echo $_SESSION["pass"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2014-09-13
    • 2012-05-14
    相关资源
    最近更新 更多