$ _SESSION [\'user\']不起作用

问题描述

| 所以这是记录日志的代码,也是我在其中设置内容的代码
<?php 
    session_start();
    $_SESSION[\'user\'] = \"kjkj\";
    $_SESSION[\'pass\'] = \"\";  
    $error = $user = $pass = \"\";

    if (isset($_POST[\'user\'])) {
        $user = sanitizeString($_POST[\'user\']);
        $pass = sanitizeString($_POST[\'pass\']);

     if ($user == \"\" || $pass == \"\") {
            $error = \"Not all fields were entered<br />\";
     } else {
            $query = \"SELECT store,c_pass FROM store
                    WHERE store=\'$user\' AND c_pass=\'$pass\'\";

            if (mysql_num_rows(queryMysql($query)) == 0) {
                $error = \"Username/Password invalid<br />\";
            } else {
            $_SESSION[\'user\'] = $user;
                $_SESSION[\'pass\'] = $pass;
            $str = $_SESSION[\'user\'] . \",You are now logged in. Please 
                       <a href=\'scheduler.php\'>click here</a>.\";

                die($str);
            }
        }
    } ?>
查询后,它将打印正确的商店名称。但是当我尝试在另一个这样的php文件中使用它时
if (!isset($_SESSION[\'user\']) ) {
    die(\"<p><h1>Please Login</h1></p>\");
} else {
    echo \"<p><form id =\'addemp\' method=\\\"post\\\" action=\\\"addUser.php\\\">
          Name<input type=\\\"text\\\" name=\\\"emp\\\" />
      \\\"\". $_SESSION[\'user\'] . \"\\\">
      <input type=\\\"submit\\\" value=\\\"AddUser\\\" />
    </form></p>\";
}
它是一个空字符串。不为null的只是空字符串。我尝试了在互联网上可以找到的所有解决方案,但都没有成功。我不知道为什么它不起作用。 任何帮助将不胜感激,谢谢。     

解决方法

        可能有很多事情。首先,会议是否在其他时间工作? 我认为您没有提供足够的信息来帮助我们。设置apache / php可能是一个问题,而不仅仅是您的代码。在我使用WAMP在Windows上进行开发时,发生了我的事情,并且temp文件夹没有正确的权限。正如我所说,可能有许多问题导致您的会话行为异常。 当您进行计数器刷新时 页面上是否保留数字? 在 每次使用会话都需要开始 session_start()方法被调用。 重要提示:之前不能有任何回声或打印等 session_start()。 将
var_dump($user)
放在
$_SESSION[\'user\'] = $user;
之前,并检查$ user的内容,然后再保存。您的消毒功能可能无法正常工作。在第一个脚本的末尾也要执行此操作,以查看
$_SESSION
的内容,以确保正确保存变量。     ,        使用
$_SESSION
之前,您需要致电
session_start()
。另请注意,将密码保留在会话中是一种非常糟糕的做法,并且是一个很大的安全漏洞。     ,        如果您声称也在该页面中插入了session_start(),请执行以下两项操作: 1)更正您的html,这一行。
echo \"<p><form id =\'addemp\' method=\\\"post\\\" action=\\\"addUser.php\\\">
          Name<input type=\\\"text\\\" name=\\\"emp\\\" />
      \\\"\". $_SESSION[\'user\'] . \"\\\">
有一些不清楚的地方。您在哪里回显$ _SESSION?您的浏览器可能无法渲染它吗?您想完成什么?结束标签
>
可能是浏览器在解释错误。尝试先整理html。 如果那是输入字段的值,则写
Name <input type=\\\"text\\\" name=\\\"emp\\\" value=\\\"\".$_SESSION[\'user\'].\"\\\"/>
2)var_dump $ _SESSION [\'user \']以查看它是否真的是一个空字符串。
if (!isset($_SESSION[\'user\']) ) {
    die(\"<p><h1>Please Login</h1></p>\");
} else {
    var_dump($_SESSION[\'user\']);
}
    ,        听起来OP遇到了register_globals的问题。 在php.ini中设置
register_globals = Off
,然后重试代码。 我遇到了完全相同的问题-会话中有一个用户变量,然后设置
$user = array();
,发现
$user
变量正在覆盖
$_SESSION[\'user\']
变量。禁用register_globals可以修复它。 或者,您可以将$ user变量更改为类似$ myUser的名称,但是最好还是禁用register_globals。     ,        根据@kpaulsen答案, 我对他也遇到同样的情况,$ variable覆盖了$ _SESSION [\'variable \'],所以我遵循了他的建议,但对我来说效果不佳,然后我发现了另一种设置register_globals = Off的方法 在.htaccess上添加此行
php_flag register_globals off
    ,        也许是我前一段时间遇到的一个问题,它使所有代码都完美无缺,但是却忘记在连接脚本中插入
session_start();
,而女巫则收到了登录
$_POST[\'somevariable\']
以便与数据库进行验证。 在恢复时,请不要忘记在您的连接上开始会话。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...