Discuz论坛的登陆系统SESSION与COOKIES实现原理问题?
最近在学习session发现了不少问题,也了解了session是cookies实现的!
PHP.INI 配置如下
[Session]
session.save_path = "d:/session"
session.use_cookies = 1
;session.cookie_secure =
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
;session.entropy_length = 16
;session.entropy_file = /dev/urandom
session.cache_limiter = private
session.cache_expire = 180
session.use_trans_sid = 1
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
a.php
<?php
session_start();
$_SESSION['name']="hello";
?>
b.php
<?php
session_start();
echo $_SESSION['name'];
?>
问题0:
如果说cookies被清空后,然后浏览器被关闭,从新打开一个浏览器在次打开刚才的地址,那个session一定会丢失吗?为什么?
问题1:
当a.php执行的时候这个会话ID存在客户端的哪里了?哪个文件?(如果是通过本地IP地址访问的,非域名)
问题2:
如果说客户端清空了cookies是否能够回复客户端的以前的会话中的变量?如何实现?
DISCUZ的登陆系统的深入提问
发现discuz的登陆系统非常牛X,加入你有一个本论坛的ID,当你登陆的时候前5次输入不同的错误用户名字和密码,在登陆第六次的时候会提示你15分钟内不允许登陆,这时候你清空你当前浏览器的cookies,然后关闭你的浏览器再次用正确的用户名和密码登陆这个论坛,仍然提示15五分钟内不得登陆。
问题1:
如果说session id是保存在客户端的cookies中的,那我的cookies已经被清空了,为什么在登陆的时候服务器还是知道那个输入5次错误密码的人还是我?(前5次用不同错误的用户名和密码)
问题2:
如果说是基于服务器保存了IP地址认证的话,我是一个内网用户,那我整个内网用户都不能登陆这个论坛,因为论坛而言我的IP是我外网的IP,可是我内网的其他的用户仍然可以登陆为什么?