【发布时间】:2014-09-30 11:38:04
【问题描述】:
我正在开发一个网站,用户必须登录后才能访问他们的个人资料。但我不知道如何通过在地址栏中键入 sitename.com/profile.php 来限制用户直接访问个人资料页面。我在 Stack Overflow 上搜索时遇到了这段代码 这是我的 login.php 脚本
if(!empty($row['username']) AND !empty($row['password']))
{
$_SESSION['login'] = true;
$_SESSION['username'] = $row['username'];
echo '<script>window.location = "profile.php"</script>';
}
现在我在 profile.php 的顶部放了这段代码
<?php
session_start();
if (!$_SESSION['login']){
echo '<script>window.location = "index.html"</script>';
}
?>
用户仍然可以通过直接输入 URL 来访问 profile.php。我做错了什么?
【问题讨论】:
-
不要使用
echo '<script>window.location = "index.html"</script>';它会导致浏览器往返包含整个网页,只是因为浏览器会从服务器请求另一个页面,所以这一切都会被忽略。使用header('Location: profile.php'); exit; -
谢谢它的工作。如果我不输入 exit 怎么办?最后
-
添加 'session_start();'
login.php表单顶部的命令也是如此。开始使用 Sessions 后,您必须在应用程序的每个页面顶部添加session_start();,以维护会话。 -
如果不添加
exit;PHP 会继续运行脚本。正如您已经知道的那样,您想向浏览器发送一个完全不同的页面,继续该脚本的其余部分是没有意义的,并且在许多情况下,继续会做您不希望在这种情况下做的事情。 -
谢谢你的简单解释:)
标签: javascript php mysql session