我在许多地方读过,例如session_start() creates a cookie,session_start() creates a cookie,在php.ini的默认配置下,session_start()创建生成随机会话ID并将其存储在用户浏览器的cookie中。但是,我在php.net中找不到任何对此的引用。是否有一个地方可以找到一些适当的文档和内部工作?
其次,我想了解一个简单的登录系统如何在PHP中结合上面的顺序逐步过程,即session,生成的sessionID和session_start()设置的相关cookie。请帮助提供此流程的分步过程,例如: - (假设用户User1已经注册到系统中,现在他正在尝试访问需要登录系统的页面)
答案 0 :(得分:0)
咦?我不知道这里真正的问题是什么。
创建会话时,会将其保存在文件夹中的服务器上。 (可配置的)
cookie很重要(没有其他方法可以检查哪个会话属于访问者),所以这是保存内容的唯一方法。
大多数情况下,你不必关心这样的事情。 (会话)
当用户按下LOG IN按钮(发布表单)时,会在服务器(PHP)上发生这种情况:
1表单的数据位于$ _POST全局(关联数组,INPUT Name => INPUT Value
2您检查该值是否有效,如果有效,请将这些值与数据库的值进行比较
3A。登录成功后,您可以设置有关登录数据的会话。 (例如:$ _SESSION ["登录"] =数组(" id" => $ id,"用户名" => $ un,&#34 ;密码" => $ pw);)不要忘记加密密码(永远不要将普通密码保存到数据库中)
3B。登录失败,向访问者显示错误。
4用户已登录,服务器将会话中的数据与db值进行比较
4A。值有效继续
4b中。值不等于db值,注销用户(删除会话:unset($ _ SESSION [" login"]))
5访问者访问了'restrictededPage.php'如果会话数据是有效的,则EXISTS继续,否则重定向到404或访问者页面
编辑:
Cookie由session_start()设置,因此服务器可以找到分配给访问者的会话(sessionid)。
可以在php的配置中找到cookie的每个配置。
Cookie值包含单个'字符序列' (?)这是访问者会话的ID。 (如果您知道其他访问者的会话ID,则可以将Cookie的价值更改为其他访问者的ID,因此请勿以任何形式公开ID。)
您可以通过' session_get_cookie_params()'来获取Cookie的参数。
返回一个包含当前会话cookie信息的数组 数组包含以下项目:
"寿命" - cookie的生命周期。 "路径" - 路径 存储信息的地方。 "结构域" - cookie的域名。 "安全" - cookie只能通过安全连接发送。 "仅Http" - 只能通过HTTP访问cookie 协议
引用来自PHP的文档:http://sg2.php.net/manual/en/function.session-get-cookie-params.php
答案 1 :(得分:0)
当您致电session_start()
时,会在开头创建会话(及其Cookie,如果还不存在);它通过响应标题Set-Cookie
有效的会话ID仅显示&#34;此浏览器在&#34;之前已请求我的页面,仅此而已:PHP检查是否存在该名称的会话(请参阅源以了解如何< / em>发生了这种情况,但这对正常使用并不感兴趣),并将其反序列化为$_SESSION
。
由你将其与身份验证,授权和身份相结合 - 通常,登录功能会检查用户名和密码,如果正确,则设置会话变量&#34;这是用户1234&#34;:
if ($is_login) {
// in real use you would check the username & password against a db
if ($username == "Piskvor" && $password == "123456") {
$_SESSION['user'] = 789;
} else {
// bad username or password
$_SESSION['user'] = 0;
}
} else if ($is_logout) {
// logout this user from session
$_SESSION['user'] = 0;
}
然后在受限制的部分中,您可以检查会话变量:
if (is_numeric($_SESSION['user']) && $_SESSION['user'] > 0) {
do_something_super_secret();
} else {
redirect_to_login();
}
换句话说,PHP仅根据会话cookie为您创建/恢复$_SESSION
数组。完全取决于你构建一些东西(例如身份验证)。