服务器端页面如何决定对页面的请求是否已获得授权?

时间:2010-09-16 03:16:41

标签: php html

这是正常情况,用户输入带密码的用户名,然后可以访问整个系统。假设我有一个页面a.php(或ASP),如何限制只有被授权的用户可以查看a.php,对于其他用户,如果他们在浏览器中键入(http://host/a.php),他们将得到一个错误?

而且,它是通过cookie完成的吗?如果您可以在幕后详细解释,我将不胜感激:)

2 个答案:

答案 0 :(得分:3)

这是一个冗长的话题,需要这么多解释才能适应这个空间。我建议你阅读关于如何使用PHP创建登录系统的以下初学者水平教程。然后,您将了解幕后发生的事情:

  1. PHP Simple Login Script Tutorial - 非常详细的指南,以创建PHP和MySQL登录系统。
  2. Creating a Secure PHP Login Script - 如何创建允许安全身份验证的安全PHP登录脚本。
  3. Developing a Login System with PHP and MySQL - 另一个greate PHP和MySQL登录教程。
  4. Login – Logout with a Session in 1 file - 在一个文件中写入登录和注销的PHP代码。
  5. Creating a file based login system - 没有mysql数据库的PHP登录系统
  6. Login system - 学习使用cookie
  7. 创建PHP和Mysql登录系统
  8. PHP Log In Script – video tutorial - 视频教程如何创建PHP和Mysql登录系统。

答案 1 :(得分:1)

可以使用Cookie完成,但大多数PHP站点都使用Sessions。

有关详细信息,请参阅:http://www.php.net/manual/en/session.examples.basic.php

所涉及的步骤:

1。)创建一个登录页面,检查有效的用户名和密码,然后将密钥值保存到引用用户表的会话变量中。 signin.php(sudo-code)

session_start();

if(username is correct && password is correct)
{
  $_SESSION['userkey'] = GUID from database
}

2。)创建一个包含会话变量的PHP页面,并检查变量是否已设置。

signincheck.php(sudo-code)

session_start();
$is_signed_in = false;

if (isset($_SESSION['userkey'])) 
{
    if(isvalid userkey)
    {
    $is_signed_in = true;
    }
}

3.)要求每个页面中的页面只需要注册。

require('signincheck.php');

if($is_signed_in === true)
{
  allow access to page
}
else
{
  header redirect to some other page
}