为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
千巷猫影 2021-04-28 17:18:50
我正在制作一个Web应用程序,用户可以在其中登录并访问个人资料并进行测验。我大部分工作了,唯一的问题是,它似乎“忘记”了哪个用户登录。这意味着我无法从用户登录会话时访问任何变量。例如,$_SESSION['username'] = $username;当我尝试$username在其他会话或页面中使用变量时,我有一个返回未知变量的变量。另外,我还没有终止我的登录会话。现在,我正在尝试将测验的结果与用户的用户名一起存储到数据库中,但它仅存储得分而不是用户名。下面是我的代码。authenticate.php文件(包含有关用户名的变量)<?phpsession_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 SQLif ($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"?>
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

session_start();例如,将您的代码放在最顶端,例如,位于final.php文件的最顶端,而不是放在process.php文件的最顶端。


例如;


<?php

    session_start();

    include 'database.php'; 

?>


查看完整回答
反对 回复 2021-05-07
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您可以尝试的简单解决方案

session_start();

我们必须将其添加到php文件的顶部,否则php抛出异常,例如“已发送标头”或“无法启动会话”等。


查看完整回答
反对 回复 2021-05-07
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信