使用我的Samsung Galaxy S7浏览器时,php会话变量在从一页移动到另一页或刷新登录页面时丢失。这并非一直发生,但在多部手机上会遇到相同的行为。
它在计算机和其他移动浏览器上正常工作。
我已将代码精简到最低限度以说明问题(当然,对用户ID /密码进行了适当的检查,但是下面的代码仅用于演示)
登录页面(logintest1.php)
<?
session_start();
$_SESSION=array();
$logout_time=5000; //how long until auto logoff?
if(!empty($_POST['userid']) && !empty($_POST['password'])){
//check login credentials
$_SESSION['test']['user_name']="test user";
$_SESSION['test']['user_id']=13;
header("location:logintest2.php");
exit();
}
?>
<!doctype html>
<html lang="en">
<head>
<title>login</title>
</head>
<body>
<h4>logintest1.php</h4>
<form class="form-signin" method="post" action="<?=$_SERVER['PHP_SELF'];?>">
<h1>Please sign in</h1>
<label for="userid_id">Username</label>
<input type="text" id="userid_id" name="userid" required autofocus><BR>
<label for="inputPassword" >Password</label>
<input type="password" id="inputPassword" name="password" placeholder="Password" required><BR>
<button type="submit">Sign in</button>
</form>
</body>
</html>
着陆页(logintest2.php):
<?
session_start();
if(!isset($_SESSION['test']['user_id'])){
header("location:logintest1.php");
exit();
}
echo("<PRE>");print_r($_SESSION);echo("</PRE>");
?>
<!doctype html>
<html lang="en">
<head>
<title>landing page</title>
</head>
<body>
<h3>Example landing page</h3>
<?
echo("<PRE>");print_r($_SESSION);echo("</PRE>");
?>
<a href='logintest3.php'>Go to next page</a>
</body>
</html>
我希望设置会话变量,并且用户保持登录状态,直到它们返回登录页面为止。但是,使用Galaxy S7浏览器,在刷新登录页面(甚至是后续页面)时,会话变量会被频繁删除,并且用户将被重定向回到登录页面。
这在PC和其他移动浏览器(包括Chrome)上可以正常工作。
在此先感谢您提供的帮助!