您好,登录后才能下订单哦!
php会话控制
一、cookie
1、会话控制之Cookie概述
cookie是在http协议下,服务器或脚本可以维护客户端信息的一种方式。
2、Cookie的操作
//向客户端发送一个Cookie,将变量username值为skygao,保存客户端一周的时间
setcookie("username","skygao", time()+60*60*24*7);
//使用setCookie()函数的全部参数设置
setcookie("username","skygao", time()+60*60*24*7, "/test",".example.com", 1);
setcookie参数解释
参数描述示例
name 名字调用名为cookiename的cookie
value 值假设第一个参为cookiename,通过$_COOKIE[‘name’取得值]
exprice 有效时间设置cookie的过期时间和日期,用一个标准的Unix时间标记,可以用time()函数取得,以秒为单位.
path 范围服务器端的有效路径,设置为“/”表示这个域中所有数组都可以被访问读取。
domain 域名设定cookie有效域名
secure 指明cookie只能通过安全的
https传送设为true时只能使用安全的https,默认为false,即设置是否仅在https安全连接时才发送cookie到客户端,0或1。
读取Cookie
$_COOKIE[‘cookie名’]即可获取cookie中的内容。
<?php
//输出Cookie中保存的所有用户信息
print_r($_COOKIE);
3、Cookie的数组形态应用
<?php
setcookie("user[username]","skygao"); //$_COOKIE["user"]["username"]
setcookie("user[password]",md5("123456")); //$_COOKIE["user"]["password"]
setcookie("user[email]","skyga@lampbrother.net");//$_COOKIE["user"]["email"]
//遍历$_COOKIE[“user”]数组
foreach($_COOKIE["user"]as $key => $value){
//输出Cookie数组中二维的键值对
echo$key.":".$value."\n";
}
4、删除Cookie
–1.省略setcookie()函数的所有参数列
–2.设置cookie为已过期
<?php
//只指定Cookie识别名称一个参数,即删除客户端中这个指定名称的Cookie资料
setCookie("account"); //第一种方法
//设置Cookie 在当前时间过期,因此系统会自动删除识别名称为isLogin的Cookie
setCookie("isLogin", "", time()-1); //第二种方法
二、session
1、会话控制session的工作机制
Session和Cookie相似,都是用来储存使用者的相关资料。但最大的不同之处在于Cookie是将数据存放在客户端的计算机之中,而Session则是将数据存放于服务器系统之下。
cookie和session在php中的使用区别:
– cookie和session都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别。
–它们之间的联系是session ID 一般保存在cookie中,或者放在URL上。
–点击IE中的“工具”—“Internet选项”,在弹出的对话框里点击“安全”—“自定义级别”项,将“允许每个对话COOKIE”设为禁用.
2、session的应用
Session的声明与使用
– Bool session_start(void)
–注意:session_start()函数之前不能有任何输出
–如:$_SESSION[‘session名’]
session_start(); //启动Session 的初始化
$_SESSION["username"]= "skygao"; //注册Session 变量,赋值为一用户名称
$_SESSION["uid"]= 1; //注册Session 变量,赋值为一个用户的ID
注册一个会话变量和读取Session
注销变量与销毁Session
–删除服务器端保留session信息的文件
–删除内存中由Session数组保存的变量
–清除所有变量可以使用 $_SESSION=array()
代码1:
<?php
//开启会话session(cookie不用)
//session_start()前面不能有任何输出, 这个函数向客户端发一个session_id保存在cookie中
// 还在服务器中创建一个和保存在客户端同名的session文件(文本)
session_start();
//使用$_SESSION这个数组
$_SESSION['username']="jons";
$_SESSION['age']=18;
$_SESSION['sex']="nv";
$_SESSION['lx']['email']="mz@aaa.com";
$_SESSION['lx']['phone']='119';
echo $_SESSION['username'];
代码2:
<?php
//开启session
// 1. 判断客户端是否有了sessionid 变量名为PHPSESSID, 直接使用这个session id开启会话
// 也不新创建文件了,直接找这个同名session id的session文件
session_start();
echo '<br>';
print_r($_SESSION);
echo '<br>';
echo '<br>';
echo $_SESSION['username'];
代码3:
<?php
//1开启会话session 1
session_start();
//多余的
$username= $_SESSION['username'];
//unset($_SESSION['username']);
//2就可以删除数组中的所有内容, 即session对应的这个用户文件的内容就空了
$_SESSION= array();
//删除客户中cookie听sessionid
if(isset($_COOKIE[session_name()])){
setCookie(session_name(),"", time()-3600, "/");
}
//4销毁session
session_destroy();
echo"再见:{$username}";
3、Session的配置选项
配置Session
– session.auto_start = 0 ; 在请求启动时初始化session
– session.cache_expire= 180 ; 设置缓存中的会话文档在 n 分钟后过时
– session.cookie_lifetime = 0 ;设置按秒记的cookie的保存时间,
相当于设置Session的过期时间,为0时表示直到浏览器被重启
– session.auto_start=1,这样就无需每次使用session之前都要调用session_start()。但启用该选项也有一些限制,如果确实启用了 session.auto_start,则不能将对象放入会话中,因为类定义必须在启动会话之前加载以在会话中重建对象。
–session.cookie_path = / ; cookie的有效路径
–session.cookie_domain = ; cookie的有效域
– session.name =PHPSESSID;用在cookie里的session的名字
–session.save_handler = files ; 用于保存/取回数据的控制方式
– session.save_path= /tmp ;在 save_handler 设为文件时传给控制器的参数,这是数据文件将保存的路径.
–session.use_cookies = 1 ; 是否使用cookies
4、Session的自动垃圾回收机制
php.ini中相关的配置
– session.cookie_lifetime=0; 关闭浏览器相应的cookie文件即被删除
– session.gc_maxlifetime=1440;设置过期session时间,默认1440秒(24分钟)
–session.gc_probability/session.gc_divisor;启动垃圾回收机制的概率(建议值为1/1000~5000)
代码:
//开启会话session(cookie不用)
//session_start()前面不能有任何输出, 这个函数向客户端发一个session_id保存在cookie中
// 还在服务器中创建一个和保存在客户端同名的session文件(文本)
// 调度PHP的机制使用session
session_start();
//使用$_SESSION这个数组
$_SESSION['username']="jons";
$_SESSION['age']=18;
$_SESSION['sex']="nv";
$_SESSION['aaaaaaaa']="bbbbbbbbbbbbbbb";
$_SESSION['lx']['email']="mz@aaa.com";
$_SESSION['lx']['phone']='119';
echosession_name()." = ".session_id()."<br>";
5、基于URL传递session的id
为啥要使用URL传session id
什么是基于url传session id
参数规则
URL加session id也是自动的
<form action=”back.php<?php echo SID ?>” method=”post”>
Name:<input type=”input” name=”username”>
Pass:<input type=”password” name=”pass”>
<input type=”submit” name=”send” value=”登录”>
</form>
微信扫一扫 、关注公众号
不定时分享资料视频
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
开发者交流群:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。