当用户使用其用户名/密码组合登录我的网站时,将运行以下代码:
if($user == $_POST['username'] && $password == $_POST['password']){
session_start();
$_SESSION['username'] = $username;
}
然后在另一个我限制访问登录用户的页面上,我之前有任何其他代码这个php:
<?php
session_start();
if(!isset($_SESSION['username'])) {
echo '<script>alert("You do not have access to this page. Please log in first.");</script>';
header("Location: createAccount.php");
exit();}
?>
如果用户没有,那基本上应该将用户发送到createAccount.php页面。代码似乎很简单,但由于某种原因不起作用。我对会话的理解是否存在缺陷?
答案 0 :(得分:1)
启动任何其他输出后,您无法发送标头。
<?php
session_start();
if(!isset($_SESSION['username'])) {
header("Location: createAccount.php");
exit();}
?>
应该适合你 - 如果这是在文件的最开始..如果你想,你可以设置一个会话错误消息变量,并在createAccount.php检查它是否存在并打印一个漂亮的“你必须登录或创建帐户“消息。