PHP -cookie session
Cookie:
直接看代码-说明及用法都在代码中:
<?php date_default_timezone_set('Asia/Shanghai'); //设置正确的时区?> <?php /* PHP中通过setcookie函数来创造Cookie。使用前必须了解: Cookie是 HTTP 头标的组成部分,而头标必须在页面其它内容之前发送, 它必须最先输出。若在setcookie函数之前输出一个HTML标记或echo语句。 甚至一个空行都会导致程序出错。 setcookie() 函数语言自行参考php手册 */ //这里把过期时间设为0可以直接删除cookie //setcookie('visittime',"",0); if(isset($_COOKIE['visittime'])) { echo "上次访问的时间是:".$_COOKIE['visittime']; } else { //设置cookie的有效时间为300秒,及五分钟 setcookie('visittime',date('Y-m-d H:i:s'),time()+300); //删除setcookie --这里把过期时间设为0可以直接删除cookie //setcookie('visittime',"",time()-1); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> </body> </html>
=====================================================================
Session:
首先要说一下,session也是一个个存在服务器的文件,而通过session ID来读取的session,session ID可以存在客户端的cookie里,也可以存放在数据库里等等
<?php /*启(创建)动session会话。和cookie一样,使用session前,游览器不能有任何输出 --所以放在最前面很保险 说明: 其实不管放哪里。php代码都会比html先执行。由后台成生游览器可以认识的html所以,这里防止的是 在其他php代码执行输出前,先进行会话的启动和注册! */ session_start(); $_SESSION['admin'] = null; //注册一个会话,并且赋空 ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> function yz(id) { <?php /*这里如果先输出echo的话。会话就会出现错误*/ //echo '这是错误的!'; $_SESSION['ad'] = '1234567890'; ?> window.open(id); } </script> </head> <body> <input type="button" value="跳转" onclick="yz('sessionto.php');"/> </body> </html>
session读取:
<?php /*读取会话也是一样的,都是使用会话。所以得先启动。*/ session_start(); echo "注意读取会话时,前面是可以有html输出的,但是注册会话就不行了<br />"; echo $_SESSION['ad']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> </body> </html>
==============================================================
设置session失效时两种方法
1-
<?php //让session一分钟后失效 $time = 1*60; //设置session的失效时间 /*session_set_cookie_params() 函数必须在session_start()函数之前调用 但是不推荐使用此函数,此函数在一些游览器上会出现问题,所以一般手动设置失效时间 */ session_set_cookie_params($time); //使用函数 session_start(); //初始化设置 $_SESSION['username'] = 'mr'; ?>
2-
<?php /*使用 setcookie() 函数可对Session设置失效时间,如让Session在一分钟后失效,关键代码如下*/ session_start(); //给出session失效时间 $time = 1*60; /*session_name 是session的名称,session_id是判断客户端用户的标识,因为session_id是 随机产生的唯一名称,所以session是相对安全的。失效时间和cookie的失效时间一样,最后一个参数 为可选产数,是防止cookie的路劲(就是cookie的作用目录) cookie()共有6个参数。 最后两个分别是 作用域名,和是否通过安全连接https */ setcookie(session_name(),session_id(),time()+$time,"/"); //使用setcookie()手动设置session失效时间 $_SESSION['user'] = 'mr'; ?>
=====================================================================
客户端禁止Cookie的情况:
请求端:
<?php session_start(); //还是要首先启动session会话的?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <!-- 当客户端禁止Cookie时,页面见的session传递就会失效,因为session_id是存放在cookie里的。 所以这是我们要用GET的方式传递Session_ID ,但在之前我们必须先启动session --> <form id="form1" name="form1" method="post" action="common.php?<?=session_name();?>=<?=session_id();?>"> <input type="submit" value="提交" /> </form> </body> </html>
接收端:
<?php /*原理 -- session原理为请求该页面之后会产生一个session_id ,如果这个时候禁止了Cookie就无法传递 session_id , 在请求下一个页面时候将会重新产生一个session_id ,这样就造成了session在页面传递 失效. */ $sess_name = session_name(); //获取session名称 --获取session是那个文件 $sess_id = $_GET[$sess_name]; //根据session名称获取session_id Get方式 session_id($sess_id); //关键步骤 -根据sessionid获取来确定信息 session_start(); $_SESSION['admin'] = 'mrsoft'; ?>
=====================================================================