im使用xampp,当im使用我的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");
标题("访问控制最大页:1000");header('Content-Type:application/json');
$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);
?>
这里的问题是,会话有一个唯一的会话ID,它是通过与服务器的连接生成的。
因此,如果您连接到localhost,则您的IP为127.0.0.1
,并且如果您使用实际IP启动会话,则您将获得类似于:192.168.0.10
的信息,并生成并启动新会话ID。解决此问题的一种可能方法是在主机文件中输入一个主机条目。
问题是:你想实现什么?测试时是否切换URL?如果是,为什么?