首页 文章

PHP会话未被传递

提问于
浏览
0

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

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

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>

2 回答

  • 0

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

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

    您必须在每个文件的顶部包含 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(); 并检查它们是否等同于登录用户 .

相关问题