会话控制

1.setcookie


2.header ( string $string [, bool $replace = true [, int $http_response_code ]] ) 通常只用到第一个参数string

header("Set-Cookie:name=value;[expires=date;][path=path;][security;][httponly;]");

比如header("Set-Cookie:cookie=cookietest;expires=".(time()+10).";path='/';security;");

注意字符串的拼接。比如"abcd=".function()."efgh"

3.数组定义现在常用

$test=[

        "1"=>"asda",

        "2"=>"asdsadas",

        "3"=>"qwewqe"

];

4.session  默认session_id及对应数据通过cookie存储!!!

(1)会话:服务器和浏览器保有的共同小秘密的这段时间


准备建立会话的时候,服务器会分析浏览器的请求,看里面是否有session_id,若没有,则创建一个并赋值,然后传给浏览器,一般会被浏览器保存在cookie中。之后浏览器再去访问服务器时,会携带session_id,服务器就可以认识浏览器了。

服务器会为每个session_id创建session文件,存放一些会话数据.每次浏览器访问服务器都会根据session_id认领自己的信息。

2)开启会话 session_start();

(3)读取和设置会话数据  $_SESSION全局变量(是个数组)

session_start();

if(isset($_SESSION['views'])){    $_SESSION['views']=$_SESSION['views']+1;}

else{    $_SESSION['views']=1;}

echo "浏览量:". $_SESSION['views'];?>  //每刷新一次,浏览量+1 views不是session_name,session_name默认是PHPSESSID,在php.ini中配置

(4)销毁 Session

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量:

session_start();if(isset($_SESSION['views'])){    unset($_SESSION['views']);}?>

您也可以通过调用 session_destroy() 函数彻底销毁 session:

session_destroy();?>

注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

(5)用setcookie()来设置session的过期时间

setcookie(session_name(),session_id(),time()+3600); //session_id()返回所有session的id,而session_name都相同。name与id相同,过期时间不同,则就是不同的session。如图


(6)session的会话配置选项

php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分): 

1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递; 

2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值是“PHPSESSID”; 

3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用! 

4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除! 

(7)当cookie被禁用 怎么使用session?传递session_id(url中的? 作用与$_GET---参数传递) 

什么是$_GET

通过 URL 参数传递给当前脚本的变量的数组。






课程上的例子按下图所示写法,这个超链接写法有难度,注意赋值给href的是一大串字符串,会跳转到dump1.php页面,该页面的URL有用 ?连接的参数,即sessionid与sessionname


在某一php页面写的。然后点击该页面的超链接


跳转到dump1.php. 查看URL.注意?后的参数



要在dump1.php中获取URL的参数,必须用$_GET全局变量。图中session_id()函数用于设置该session_name对应的id。



8.会话销毁


9.自定义会话处理器 ,,可以自定义会话存储函数来将会话数据存储到数据库。shuhttps://www.imooc.com/video/15867

SessionHandlerInterface {

/* 方法 */

abstract public close ( void ) : bool

abstract public destroy ( string $session_id ) : bool

abstract public gc ( int $maxlifetime ) : int

abstract public open ( string $save_path , string $session_name ) : bool

abstract public read ( string $session_id ) : string

abstract public write ( string $session_id , string $session_data ) : bool

}


session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc [, callable $create_sid [, callable $validate_sid [, callable $update_timestamp ]]] ) : bool

你可能感兴趣的:(会话控制)