PHP - session 在移动设备上不起作用

标签 php session session-variables

对于使用 session_start() 的登录即时通讯,对于桌面它工作正常,但在移动设备上,它不起作用。当我用变量创建一个 session_id() 时,例如 session_id('login') 它在移动设备上工作,但在其他计算机上中断其他 session 。但是当 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 } ?>

最佳答案

不太确定你的代码做了什么,因为我没有看到任何关于设置用户名或任何类似的东西。您的代码所做的是,它启动 session 并检查 session 中的用户名变量是否已设置,如果是,则调用 session_id

你能用它来检查 session 是否正确创建吗?

session_start();
if (session_status() !== PHP_SESSION_NONE)
{
echo session_id();
}

如果 session_status 不是 PHP_SESSION_NONE,则启动一个 session 并显示 session ID

关于PHP - session 在移动设备上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44219709/

相关文章:

php - Predis - 捕获连接错误

PHP 数据库框架(轻松插入、编辑、搜索...)?像 phpMyAdmin 这样的东西

php - Laravel 用户登录时如何设置 session 变量

php - 我需要 ON event_sheduler 的 super 权限

php - 如何找到应用程序的基本 URL?

r - 在启动时检测 R session 是否在 RStudio 中运行

session - Grails过滤器在以下时间后停止工作

java - 在 GWT 应用程序中使用 session

ruby-on-rails - session 变量存储在Rails中的什么位置?

.net - 如何在类中引用 Session.Contents?