在PHP开发中对比起Cookie,session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。下面则是对Session的介绍。
php中的Session与Cookie
在PHP开发中对比起Cookie,session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 session 的使用。
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。
对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能只做一次验证。为什么呢"htmlcode">
// 启动 session session_start(); // 声明一个名为 admin 的变量,并赋空值。 $_session["admin"] = null; "htmlcode">admin|N;一般内容结构:
变量名|类型:长度:值;
并用分号隔开每个变量。有些是可以省略的,比如长度和类型。
我们来看一下验证程序,假设数据库存储的是用户名和 md5 加密后的密码:
// 表单提交后... $posts = $_POST; // 清除一些空白符号 foreach ($posts as $key => $value) { $posts[$key] = trim($value); } $password = md5($posts["password"]); $username = $posts["username"]; $query = "SELECT `username` FROM `user` WHERE `password` = '$password'"; // 取得查询结果 $userInfo = $DB->getRow($query); if (!emptyempty($userInfo)) { if ($userInfo["username"] == $username) { // 当验证通过后,启动 session session_start(); // 注册登陆成功的 admin 变量,并赋值 true $_SESSION["admin"] = true; } else { die("用户名密码错误"); } } else { die("用户名密码错误"); }我们在需要用户验证的页面启动 session,判断是否登陆:
// 防止全局变量造成安全隐患 $admin = false; // 启动会话,这步必不可少 session_start(); // 判断是否登陆 if (isset($_SESSION["admin"]) && $_SESSION["admin"] == true) { echo "您已经成功登陆"; } else { // 验证失败,将 $_session["admin"] 置为 false $_SESSION["admin"] = false; die("您无权访问"); } "htmlcode"><"admin"]); // 这种方法是销毁整个 session 文件 session_destroy(); "htmlcode">session_start(); // 保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime, "/"); "htmlcode">// 保存一天 <"admin"] = true; "htmlcode">// 保存一天 <"admin"] = true; "htmlcode"><"./session_save_dir/"; // 保存一天 $lifeTime = 24 * 3600; session_save_path($savePath); session_set_cookie_params($lifeTime); session_start(); $_session["admin"] = true; "htmlcode"><"person.PHP"; $person = new person(); $person->setAge(21); $_session['person'] = $person; echo "check here to output age"; ".PHP"; } session_start(); $person = $_session["person"]; // 输出 21 $person->output(); ?>当我们执行 setage.php 文件的时候,调用了setage() 方法,设置了年龄为 21,并将该状态序列化后保存在 session 中(PHP 将自动完成这一转换),当转到 output.php 后,要输出这个值,就必须反序列化刚才保存的对象,又因为在解序列化的时候需要实例化一个未定义类,所以我们定义了以后回调函数,自动包含 person.PHP 这个类文件,因此对象被重构,并取得当前 age 的值为 21,然后调用 output() 方法输出该值。
到此,Session在PHP中如何使用就介绍完了,希望对你的学习有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com桃源资源网 Design By www.nqtax.com暂无“PHP中的Session对象如何使用”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。