南强小屋 Design By 杰米

在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中如何使用就介绍完了,希望对你的学习有所帮助。

标签:
PHP如何使用Session,PHPSession无法使用,php使用Session验证码,php中session的用法

南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米

评论“PHP中的Session对象如何使用”

暂无PHP中的Session对象如何使用的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。