【问题标题】:PHP Session not being passedPHP 会话未通过
【发布时间】:2015-03-27 01:26:32
【问题描述】:

我正在为我的学校用户名和密码进行身份验证。学校有自己的后端脚本用于表单 POST。它允许一些具有特定名称的隐藏输入进行自定义,例如,成功时重定向页面。但是,我在该页面上不能有任何session_start() 或我的任何php 代码,因为在login.php 之后,登录页面被重定向到学校页面,然后被重定向回我的index.php。帖子值被传递给index.php,但在页面刷新时,它会返回登录页面,因为会话没有与帖子值一起保存。

对此的任何帮助都会非常有帮助。

Index.php

<?php
session_start();
$_SESSION['username'] = $_POST['sid'];
if(!isset($_SESSION['username'])){
header("Location: login.php");
} else {
?>
// HTML here
<?php
}
?>

Login.php

<form action="authenticator.pl" name="form1" method="POST">
    // Using hidden inputs I specify which page to redirect to... These are specific hidden inputs that are accepted.
</form>

【问题讨论】:

    标签: php session authentication forms-authentication


    【解决方案1】:

    如果您没有将发布数据发送到 index.php 页面,则以下行将清除用户名会话值。

    $_SESSION['username'] = $_POST['sid'];
    

    【讨论】:

    • 那么解决这个问题的方法是什么?
    • 如果用户名会话变量由 login.php 文件设置,您可以完全删除该行。
    【解决方案2】:

    您必须在需要检查他们是否已登录的每个文件的顶部包含sessions_start();

    在 login.php 的顶部放置一个 if 语句来检查它们是否存在会话。如果确实如此,则将其重定向到 index.php。

    在 index.php 的顶部检查他们是否使用 if 语句登录。如果它们继续到 index.php 的其余部分,如果不是(否则 {})然后将它们重定向到 login.php

    在 login.php 脚本中运行检查和身份验证后设置 SESSION。您可以像这样设置会话:

    $_SESSION['userid']     = $id;
    $_SESSION['username']   = $name;
    $_SESSION['userpass']   = $pass;
    

    请务必在 index.php 顶部添加 session_start(); 并检查它们是否等同于已登录用户的会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 2012-01-31
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多