【问题标题】:Session Value Not Working会话值不起作用
【发布时间】:2012-06-28 04:13:06
【问题描述】:

我试图制作一个将操作设置为服务器 php self 的单页脚本,但是在运行脚本时,即使我输入了正确的密码,我也会得到“您必须提供密码”。我这样做对吗。请告诉我我的错误

登录.php

    <?php
        $pass = 'defense6';

        if(isset($_POST['submit'])){

            if(($_POST['password'] == $pass)) {    
                   $_SESSION['password'] = md5($_POST['password']);
                   header('Location: index.php');
            } else {
                echo 'Password Invalid';
            }

        }
        else {
            echo 'You must supply a password.'.$_SESSION['password'] ;
        }
        ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">  
Password: &nbsp;<input name="password" type="password" /><br/><br/>
:
<input type="submit" name="submit" value="Login" style="float:right;" />

<br/>
  <p></p>
</form>

index.php

<?php
$pass = 'defense6';
 if($_SESSION['password'] == md5($pass)) {}
else {header('Location: login.php');}
?>

【问题讨论】:

  • 什么是$_POST['submit']?因为如果您看到"You Must Supply a Password"that 是失败的 if 语句。您需要学习一些基本的调试技能并弄清楚程序流程如何通过您的脚本进行。尝试检查var_dump($_POST)
  • 您是否在所有使用会话变量的文件的开头调用session_start()
  • 对不起 meagar 但发生的事情是表单正在提交并重定向到索引但他们没有 session_start 所以它重定向回登录并出现没有帖子['submit']
  • 它实际上包含表单找到提交然后重定向到索引的所有内容。由于他们没有 session_start 代码说 else {header('Location: login.php');}。然后重定向页面后不再有post数据并报错。
  • 不要通过查找表单字段来检查帖子。这是不可靠的。使用$_SERVER['REQUEST_METHOD'] == 'POST'。这是 100% 可靠的。

标签: php forms post submit


【解决方案1】:

您需要在使用会话的每个页面上添加seesion_start()

session_start() 基于通过 GET 或 POST 请求或通过 cookie 传递的会话标识符创建会话或恢复当前会话。

【讨论】:

【解决方案2】:

在页面开头添加session_start(),这将有助于跨请求维护会话。

【讨论】:

  • 哇不能相信我错过了这个。感谢您指出我的错误。
猜你喜欢
  • 1970-01-01
  • 2018-10-30
  • 2010-11-04
  • 2014-07-09
  • 2013-11-19
  • 1970-01-01
相关资源
最近更新 更多