如何在另一个会话中使用$ _SESSION ['variable']?

我正在制作一个Web应用程序,用户可以在其中登录并访问个人资料并进行测验。我大部分工作了,唯一的问题是,它似乎“忘记”了哪个用户登录。这意味着我无法从用户登录会话时访问任何变量。例如,$_SESSION['username'] = $username;当我尝试$username在其他会话或页面中使用变量时,我有一个返回未知变量的变量。另外,我还没有终止我的登录会话。


现在,我正在尝试将测验的结果与用户的用户名一起存储到数据库中,但它仅存储得分而不是用户名。


下面是我的代码。


authenticate.php文件(包含有关用户名的变量)


<?php

session_start();

// Change this to your connection info.

$DB_HOST = 'localhost';

$DB_USER = 'root';

$DB_PASS = '';

$DB_NAME = 'phplogin';

// Try and connect using the info above.

$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

if ( mysqli_connect_errno() ) {

    // If there is an error with the connection, stop the script and display the error.

    die ('Failed to connect to MySQL: ' . mysqli_connect_error());

}

// Now we check if the data was submitted, isset will check if the data exists.

if ( !isset($_POST['username'], $_POST['password']) ) {

    // Could not get the data that should have been sent.

    die ('Username and/or password does not exist!');

}

// Prepare our SQL

if ($stmt = $con->prepare('SELECT username, password FROM users WHERE username = ?')) {

    // Bind parameters (s = string, i = int, b = blob, etc), hash the password using the PHP password_hash function.

    $stmt->bind_param('s', $_POST['username']);

    $stmt->execute();

    $stmt->store_result();

    // Store the result so we can check if the st_account exists in the database.

    if ($stmt->num_rows > 0) {

        $stmt->bind_result($username, $password);

        $stmt->fetch();

        // st_account exists, now we verify the password.

        if (password_verify($_POST['password'], $password)) {

            // Verification success! User has loggedin!

            $_SESSION['loggedin'] = TRUE;

            $_SESSION['name'] = $_POST['username'];

            $_SESSION['username'] = $username;

            include_once 'homepage.php';


            // echo 'Welcome ' . $_SESSION['name'] . '!';

        } else {

            echo 'Incorrect username and/or password!';

        }

    } 


final.php文件


<php include "process.php"?>


千巷猫影
浏览 149回答 2
2回答

暮色呼如

session_start();例如,将您的代码放在最顶端,例如,位于final.php文件的最顶端,而不是放在process.php文件的最顶端。例如;<?php&nbsp; &nbsp; session_start();&nbsp; &nbsp; include 'database.php';&nbsp;?>

繁星点点滴滴

您可以尝试的简单解决方案session_start();我们必须将其添加到php文件的顶部,否则php抛出异常,例如“已发送标头”或“无法启动会话”等。
打开App,查看更多内容
随时随地看视频慕课网APP