新会话意外创建。还有一个在下一页

时间:2016-03-19 20:02:32

标签: php session

这是我的login.php代码段:

<?php
session_start();
include 'db_connection.php';

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

    $match_flag = false;
    $username = $_POST["username"];
    $password = $_POST["password"];


    //$_SESSION['username'] = $username;

    $query_select = "SELECT admin_username, admin_password FROM users_admin";
    $query_result = $conn->query($query_select);
    if($query_result){
        foreach($query_result as $rows){
            if(($rows['admin_username'] == $username)&&($rows['admin_password'] == $password)){
                $_SESSION['username'] = $username;
                echo "<br> Session ID -> ".SID;
                $match_flag = true;
                break;
            }
        }
    }

    if($match_flag){

        echo "1";
    }else{
        echo "0";
    }
    exit();
}
?>

这是我的dashboard.php代码:

<?php
session_start();

echo "Session is -> ".$_SESSION['username'];
echo "<br> Session ID -> ".SID;
if(!isset($_SESSION['username']))
{
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=http://www.example/login.php">';
    exit();
}
?>

运行login.php后会设置会话值并获取会话ID,当我看到会话文件时,我发现内容很好。但是当dashboard.php运行时,我会得到另一个但不同的会话ID,其中包含一个空的会话文件。这意味着在运行dashboard.php时正在创建一个新会话,但这完全出乎意料。我搜索了很多,但没有得到满意的答案。请指导我为什么会在新页面上再次启动会话?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

这只是一个有根据的猜测,但是您提供会话名称和会话ID的方式可能存在问题。至关重要的是,您的两个脚本都知道相同的会话ID。

有几种方法可以做到这一点。 如今大多数PHP安装都配置为使用cookie和cookie。一些PHP版本之前的会话参数通过URL参数传输。
PHP处理这些的方式在php.ini中配置。 您可能会在PHP手册中找到有关会话配置的部分:http://php.net/manual/session.configuration.php
请务必查看session.use_cookiessession.use_trans_sid指令。出于安全考虑,我建议您将所有内容设置为默认值。您可以通过<?php phpinfo(); ?>查看当前配置。