2

我对 php 很陌生(4 天前开始学习),我有很多问题......

我有一个名为 index.php 的登录页面,在登录/验证用户名过程后,用户被带到 chat.php,它有一个链接到其他一些名为 someOtherPage.php 的 php 页面......我的问题是,如何防止用户无需登录即可直接访问 someOtherPage.php,只需在“www.nameOfMyWebsite.com/someOtherPage.php/”之类的 url 中输入

在回答了这个问题之后,我想再问一些关于 php 的问题......在同一个线程中问一个稍微不相关的问题(关于标题)是否有效?

4

3 回答 3

7

您需要在用户登录时维护会话。在登录时,使用用户名或用户 ID 设置会话变量。然后在受保护的页面上,检查此会话变量是否存在,然后再允许他们查看该页面。

一个基本的例子:

登录成功后:

$_SESSION['userId'] = x;

在请求受保护的页面时:

if(!isset($_SESSION['userId']))
{
    // not logged in
    header('Location: login.php');
    exit();
}

有关PHP 会话的更多信息。

于 2012-11-29T08:49:25.920 回答
1

大多数时候,会话变量用于完成您想做的事情。会话本身在每个页面的开头使用 session_start() 启动。

然后登录页面在成功登录后设置一个会话变量: $_SESSION['userId']=$userId; //不管id是什么。

第二页使用 if 来查看是否设置了会话变量。

if (isset($_SESSION['userId']))
{
     .......//here is your page text
}
else
{
     echo 'Sorry please login first before visiting this page!'; //also a redirect can be made here instead.
}

如果你有一个注销页面,你可以在那里使用 session_destroy() (在页面开头也使用 session_start() 之后)。

于 2012-11-29T08:52:57.410 回答
1

把它放在你每一页的顶部

if(!isset($_SESSION['xxx']))
{
   header('Location:index.php');
}
else
{
   header('Location:home.php');
}
//xxx indicate your session name which you had set after login
于 2012-11-29T08:59:08.963 回答