PHP会话系统脚本重新加载页面没有消息[重复]

Posted

技术标签:

【中文标题】PHP会话系统脚本重新加载页面没有消息[重复]【英文标题】:PHP session system script reloads page without message [duplicate] 【发布时间】:2019-11-29 07:44:35 【问题描述】:

我对 php 完全陌生。我正在构建一个带有会话的 PHP 登录系统。这个想法是用户输入他们的用户名和密码。然后他们被重定向到一个被锁定的页面,该页面链接到其他锁定的页面。锁定页面有一个脚本来检查会话是否已启动。如果没有,用户将被重定向到登录页面。我面临的问题是系统基本上没有工作 - 没有错误,没有警报消息,我出于调试目的而放置,没有任何迹象表明脚本正在运行。唯一可以考虑的是登录表单刷新页面,但我仍然希望在代码执行后看到一个警告框。

这是我的登录脚本(index.php)(完全不是从随机教程网站复制粘贴的)(直播网址:http://daaseed.com/Player/):

<form action="" method="post">
    <input type="text" name="username" placeholder="Enter your username" required>
    <input type="password" name="password" placeholder="Enter your password" required>
    <input type="submit" value="Submit"> </form>
<?php
// Always start this first
session_start();

if ( ! empty( $_POST ) ) 
    if ( isset( $_POST['username'] ) && isset( $_POST['password'] ) ) 
        // Getting submitted user data from database
        $con = new mysqli("sfconsul.dot5hostingmysql.com ", "Nasko", "Nasko", "Nasko");
        $stmt = $con->prepare("SELECT * FROM Nasko WHERE username = ?");
        $stmt->bind_param('s', $_POST['username']);
        $stmt->execute();
        $result = $stmt->get_result();
        $user = $result->fetch_object();

        // Verify user password and set $_SESSION
        if ( password_verify( $_POST['password'], $user->password ) ) 


            $_SESSION['user_id'] = $user->ID;
        


        if ($con->connect_error) 
   die("Connection failed: " . $con->connect_error);

alert("Hello World");
    

?>

这是检查会话是否已设置的验证代码:

<?php
// You'd put this code at the top of any "protected" page you create

// Always start this first
session_start();

if ( isset( $_SESSION['user_id'] ) ) 
    // Grab user data from the database using the user_id
    // Let them access the "logged in only" pages
    alert("Done");
 else 
    // Redirect them to the login page
    header("Location: http://daaseed.com/Player/");

This is the screenshot from the login page after entering data and pressing the button

锁定页面显示内容而不检查会话(基于我的意见,因为不显示警告框)。

如您所见,代码存在一些问题,我无法找到解决方案。如何让上面的代码成功运行?

【问题讨论】:

欢迎来到php!可以帮助您以 10 倍的速度解决这些类型的问题,并以 10 倍的速度学习:使用允许逐步调试的 IDE。这意味着您可以在代码运行时逐行浏览代码,并检查变量的值,查看代码的确切位置等。Phpstorm IDE 是一个流行的选项,而 XDebug 是一个流行的工具来执行此操作调试 session_start() 必须在页面上的任何输出之前。显然不是。 【参考方案1】:

编辑 b/c 我没有看到 session_start() 来电:

问题可能在于 $stmt 的参数绑定或fetch_object()。您可能想改用fetch_assoc_array(),然后引用$user['password']。您可以尝试一下,或者以其他方式回显get_result() 对象并让我们知道它是什么吗?

【讨论】:

以上是关于PHP会话系统脚本重新加载页面没有消息[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php - 刷新页面后会话丢失[重复]

PHP会话的数据在页面重新加载之间不一致 - 但会话ID是相同的

重新加载页面,保持会话

避免重复的mysql连接

php 表单 - 2 个按钮(一个用于销毁会话并重新加载页面,一个用于进入下一页)

PHP脚本未加载托管在xampp中的[重复]