PHP - 会话无法在移动设备上运行

Dan*_*ons 13 php session session-variables

对于登录我使用a session_start(),对于桌面它的工作正常,但在移动设备上,它不起作用.session_id()例如,当我使用变量时,session_id('login')它可以在移动设备上运行,但在其他计算机上打破其他会话.但是当session_id()自动生成时,它在移动设备上不起作用.我该怎么办?

我在index.php上的session_start代码

session_start();
if (isset($_SESSION['username'])){
    session_id();
}
Run Code Online (Sandbox Code Playgroud)

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 } ?>
Run Code Online (Sandbox Code Playgroud)

Kis*_*hor 6

不确定你的代码是做什么的,因为我没有看到任何关于设置用户名或任何类型的东西.你的代码做的是,它启动会话并检查会话中的用户名变量是否设置,如果是,则调用session_id.

你能用它来检查会话是否正确创建?

session_start();
if (session_status() !== PHP_SESSION_NONE)
{
echo session_id();
}
Run Code Online (Sandbox Code Playgroud)

如果session_status不是,则启动会话并显示会话ID PHP_SESSION_NONE


eat*_*lyo -2

我的问题是在服务器端,session.save_path未定义到我的服务器。非常感谢所有帮助我的人:)

  • 这如何解释它可以在桌面上运行但不能在移动设备上运行? (3认同)