【发布时间】:2017-10-28 10:02:04
【问题描述】:
对于使用session_start() 登录即时通讯,对于桌面它可以正常工作,但在移动设备上,它不起作用。当我使用变量创建session_id() 时,例如session_id('login') 它可以在移动设备上运行,但会中断其他计算机上的其他会话。但是当session_id() 自动生成时,它在移动设备上不起作用。我该怎么办?
我在 index.php 上的 session_start 代码
session_start();
if (isset($_SESSION['username'])){
session_id();
}
login.php 文件的完整代码
<?php
require('config.php');
$usernameOK = false; $passwordOK = false;
if (isset($_POST['username']) and isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
$UserQuery = "SELECT username FROM `members` WHERE username='$username'";
$userTestResult = mysqli_query($connection, $UserQuery);
$usernameTEST = mysqli_num_rows($userTestResult);
if($usernameTEST == 1){$usernameOK = true;}
$PasswordQuery = "SELECT password FROM `members` WHERE username='$username'";
$result = mysqli_query($connection,$PasswordQuery);
$row = mysqli_fetch_row($result);
if (password_verify($password, $row[0])){$passwordOK = true;}
if($usernameOK == true && $passwordOK == true){
$_SESSION['username'] = $username;
}else{
$error_message = "Incorrect login data";
}
}
if (isset($_SESSION['username'])){
header("Location: ../");
exit;
}else{?>
<form class="login-form" method="POST">
<?php if(isset($error_message)){ ?><div class="mini-mes error"> <?php echo $error_message; ?> </div><?php } ?>
<span class="placeholder">username</span>
<input type="text" name="username" placeholder="username" required>
<span class="placeholder">password</span>
<input type="password" name="password" id="inputPassword" placeholder="password" required>
<button type="submit">Login</button>
<a class="form-link" href="register.php">Register</a>
</form>
<?php } ?>
【问题讨论】:
-
您是否检查过您的移动设备中是否启用了 cookie?
-
@RicardoOrtegaMagaña 是的,我的移动设备上启用了 cookie
-
你用的是什么浏览器?
-
@RicardoOrtegaMagaña 我正在使用 iPhone 和 Safari 浏览器,但 iPhone Chrome 也会发生这种情况
-
在会话变量中设置数据后,您能否检查“重定向”是否与它生成的页面相同,例如:example.com 并且可能重定向看起来像example.com ,应该是一样的,看万维网
标签: php session session-variables