Loading...

php初级教程:12.网站用户验证的基本原理

几乎已经忘记了自己还在写php初级教程,经过网友的提醒,再次继续。

本章的内容是用户的验证原理。首先大致说一下我们浏览web的流程。当我们访问http://www.storyday.com/index.php的时候,服务器就会根据这个地址将index.php的执行结果发送给用户,然后便中断连接,此后用户无论做什么,服务器并不知道,服务器始终等待用户对页面的请求,如果请求的是静态文件,如html,jpg等等,服务器就直接将文件通过发送给请求放,如果是程序文件,如php,jsp,perl,服务器就执行该程序,然后将结果发送给浏览器,此后用户除了请求之外的东西,服务器一概不知,这就是所谓的http协议的无状态连接!

既然如此,那么我们如何判断用户是否登录呢?毕竟http和ftp、telnet等协议不一样,它只管发送用户请求的文件,并不维持状态,所以这个时候我们就需要其他的方式了,通俗的说,我们在下次发送请求的时候顺便携带一个标志来告诉服务器我是谁。最简单的例子,我们可以通过get的方式,比如http://www.storyday.com?name=jiangdong,这个时候我们就可以根据程序来判断,当前请求的是jiangdong。不过这样来的方式做会员认证的话不太现实和实用,因为别人可以很容易的伪造,那么这个时候就诞生了cookie和session。cookie是记录在用户端的一个小文件,它里面包含了你需要设置的信息,当然cookie我们可以通过服务器端程序php或者客户端的js来创建和读取,当用户请求页面的时候,cookie信息是会一起发送到服务器的(要更进一步了解可以去看看HTTP协议内容,或者相关的RFC文档),这样php就可以获取cookie的内容,从而判断用户是谁,然而cookie主要记录在客户端,所以也不是很安全,并且容易伪造,而且由于安全的原因,可能有些浏览器不支持(当然目前大部分浏览器都支持),不过如果你仅仅记录一些不太重要的信息还是可以使用的。

那么我们就应该用另外一种方式来记录用户信息了,这就是SESSION了。由于session是记录在服务器的,所以相对cookie要安全得多。怎么说呢?比如用户登录成功了(后面将会介绍如何判断用户登录成功),服务器端就会有一个变量来记录这个用户的信息,如果很多人同时访问这个网页的话如何分辨呢?每个session有对应的ID,这个ID是在创建session的时候随机产生的。当你访问页面的时候,浏览器会将这个ID发送给服务器,这样就能获取对应的session了,而这个ID就保存在你客户端的cookie里面,如果你客户端不支持cookie,那也没有关系,你的地址后面会自动加上 类似sessionID=md5一大串数字的,所以这个来说php是很方便的,对于安全性,我们可以这样理解,即使用户伪造了ID,不是同一台计算机也没有用的,即使同一台计算机,浏览器关闭完,session也就失效了,这样伪造的ID也没有任何用处,唯一不安全的就是你在网吧使用后忘记关闭浏览器。任何系统也没有办法解决此问题,当然session也会在你设置的时间后失效。后面我会告诉大家如何来测试。

大家只要明白http的无状态特性就行了,关于session如何记录,如何读取,了解更好,不了解关系也不大。这是基础只是,用php来实现可就是很容易的事情,明天或者后面我将会用php来实现session的处理,如果大家还有什么不明白的,请留言共同探讨!

还是来点代码吧,要不多没趣啊(不再用geshi美化代码了,不好复制):

在根目录下建立session.php,输入代码如下

<?php
session_start();//开始session
$_SESSION[‘USER’] = ‘生活点滴’;//给全局变量session赋直
?>
session已经创建,请访问下面的链接查看
<a href=”session1.php” mce_href=”session1.php”>demo</a>

然后 建立session1.php代码如下,

<?php
session_start();
echo “刚才session的值是:”.$_SESSION[‘USER’] ;
?>

http://localhost/session.php就可以看到结果了

该日志未加标签
发表于 2007-06-17 19:49:42 目录:PHP, 网站技术 [RSS 2.0] 你可以发表评论, 或者从您的网站 trackback
  • 相关阅读
  • homezz 美国专业主机商
    feed url
    上一篇: « 关于英语
    已经有2位大师动手指导 拒绝低俗
    • 1楼 neil 在2007.06.18 02:38发表评论如下: 回复

      我啥都不懂,就是帮你更正一下,第一段的phg?

      虽然不懂,但也长知识了

      • 2楼 cosβ 在2007.06.18 20:32发表评论如下: 回复

        呵呵,笔误,谢谢

        评论分页: 1
        (Required)
        (Required, not published)
        如果留言未显示无需重复留言,我将为你恢复!