使用我的IP而不是localhost时,php会话丢失

时间:2015-03-27 10:47:56

标签: php session

我正在使用xampp,当我使用我的IP而不是localhost /时,我的会话总是丢失 我怎么能保持会议?如果我使用localhost /

,它可以正常工作
<?php 
require '/mysqli.php';

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header("Access-Control-Allow-Credentials: true");

标题(&#39; Access-Control-Max-Age:1000&#39;);     标题(&#39;内容类型:application / json&#39;);

$myJson = json_decode(file_get_contents('php://input'));

$action = $myJson->action;

session_start();
if($action == 'login') {
    $myJson->password ? $role='admin' : $role='encoder';

    $_SESSION['username'] = $myJson->username;
    $_SESSION['role'] = $role;
    $_SESSION['id'] = session_id();

    if($role =='admin'){
        $sql = "SELECT * FROM `users` WHERE `username`='".$myJson->username."' AND `password`='".md5($myJson->password)."'";

        // $_SESSION['status'] = 
        $result = mysqli_query($conn, $sql);
        if(mysqli_num_rows($result) == 1){
            $_SESSION['status'] = "Login success.";
        } else {
            session_unset();
            session_destroy();
            $_SESSION['status'] = "Login failed.";
        }
    } else {
        $_SESSION['status'] = "Login success.";
    }

} else if ($action == 'logout') {
    session_unset();
    session_destroy();
    $_SESSION['status'] = "Logged out.";
} else if ($action == 'check' && session_id() == ''){
    $_SESSION['username'] = $_SESSION[''];
    $_SESSION['role'] = $_SESSION[''];
    $_SESSION['id'] = $_SESSION[''];
    var_dump($_SESSION);
}

echo json_encode($_SESSION);

&GT;

1 个答案:

答案 0 :(得分:1)

这里的问题是会话具有唯一会话ID ,这是通过与服务器的连接生成的。

因此,如果您使用 localhost 连接,则您的IP为127.0.0.1,如果您使用实际的IP启动会话,则会出现以下内容:192.168.0.10 new会话ID 生成并因此启动。 解决此问题的一种可能方法是在主机文件中输入主机条目。

问题是:你想达到什么目的?你在测试时切换URL了吗?如果,为什么?