我搜索了很多例子和解决方案,都遇到了同样的问题,如果有人能帮忙,我将不胜感激。
基本上,我已经连接了数据库,当他们正确登录时,页面将指向login_success.php
。一旦进入页面,我希望向用户显示他们的详细信息。
我显然不期待答案,我只是希望了解我哪里错了。
<?php
ob_start();
include 'connect.php';
} else {
header('Location: main_login.php?error=2');
}
ob_end_flush();
?>
您似乎没有在登录文件中启动会话。这将导致您的$_SESSION
变量在登录后无法转移到下一页。由于您在所有文件中都需要connect.php
(很可能),因此应该将session_start()
放在最上面。这样你的会话就开始了,你不必在每个代码页上都键入那一行。
您正在回显login_success.php
中html
标记之前的信息。相反,进入你想要显示的代码并使用:
<?= "your email is... ".$_SESSION['myusername']; ?>
<?= $row['forename'] . " " . $row['surname']; ?>
如果您没有看到任何$row
变量的任何内容,请尝试将$row
打印到屏幕上以检查它们的周期。
<? print_r($row); ?>
如果您没有看到$row
的任何内容,则说明您的查询不起作用。
在会话中分配用户名和密码之前,应该先获取用户名和密码,如下所示:
$login_user = mysql_query("SELECT * FROM $tbl_name WHERE email_address = '".$myusername."' and password = '".$mypassword."'");
$row = mysql_fetch_array($login_user);
$_SESSION['myusername'] = $row['myusername'];
$_SESSION['mypassword'] = $row['password'];
并且不再使用mysql函数,它们不再得到支持和维护,并且正式贬值。