Session
php
Session 指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所通过的这段时间,也数组
就是用户浏览这个网站所花费的时间。从上述的定义中咱们能够看到,Session 其实是一浏览器
个特定的时间概念。 服务器
通常来讲,在网站上某一个页面中的变量(指服务器端变量,下同)是不能在下一页中用cookie
的,有了session就好办了。session中注册的变量能够做为全局变量使用。这样咱们就能够session
将session用于用户身份认证,程序状态记录,页面之间参数传递。dom
如何建立SESSIONide
使用session以前不能有任何输出函数
使用session 必须开启标志 代码为测试
<?php
Session_start();
?>
在PHP中session 会话是保存在一个全局数组中,这个数组为$_SESSION,你能够经过增长数
组索引增长会话元素。看例子
<?php
session_start();//开启session标志
$_SESSION['USER'] = 'zppx';//设置一个会话元素USER 值为zppx
$_SESSION['pass'] = 'password';//设置一个会话元素pass 值为password
?>
将以上代码保存为session_1.php,并浏览
同时新建一个文件为session_2.php
代码为
<?php
session_start();//开启session标志
//查看设置的结果
print_r($_SESSION);
?>
浏览能够查看输出的结果:
Array ( [USER] => zppx [pass] => password )
说明咱们的会话已经产生做用
如今咱们来看下一个简单的使用原理
<?php
//简单的计数器
session_start();
if(!isset($_SESSION['counter'])){
$_SESSION['counter'] = 1;
}else{
$_SESSION['counter'] ++;
}
echo $_SESSION['counter'];
?>
保存为session_3.php
不断的浏览刷新这个页面能够看到值在不断的变化
如今须要咱们来解释几个问题。
1. 如何修改已经保存的session的值呢?
$_SESSION['NAME'] = 'PHP';
2. 销毁session
session_unset();
session_destroy();
3. 查看sessionid ,session_id()
echo session_id();
4. session编码与解码
$string = session_encode();
echo $string;
session_unset();
session_decode($string);
print_r($_SESSION);
session相关参数的解释
/* *
* session 用来跟踪用户的状态,默认生成sessionid
* session 配置的相关参数
* session_auto_start 开启session
* session_name 发送到客户端得session cookie名称 默认为 phpsesionid
* session.cookie_lifetime 生命周期
* session.cookie_path 有效路径 默认“/”不须要需该
* session.cookie_domain 对什么域名有效
* session_sava_handler session存储到什么文件,默认为 files文件
* session_save_path 存储路径
* session_gc_maxlifetime 过时时间
* session.use_trans_sid 跟踪当COOKIE禁用采用url
* 查看当前会话配置
* session_get_cookie_params();
* session_set_cookie_params();
*
*
*
* */
//print_r(session_get_cookie_params());
COOKIE
cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
PHP 在http 协议的头信息里发送cookie,所以 setcookie() 函数必须在其它信息被输出到浏览器
前调用,这和对 header() 函数的限制相似
cookie 是个很小的 文本文件4kb,当用户访问网站时,会当即生成个这样的文件,保存在
用户的客户端
一般以username@domainname保存
* cookie技术
* 1.记录访客的信息
* 2.页面之间传递变量
设置cookie
使用 setcookie()函数设置cookie
如 setcookie("visit","php",mktime()+86400,"/")
参数祥解:setcooke(name, value, expires, path , domain, secure);
* cookie 属性
* 1.name 名字(必须)
* 2.value 值
* 3.expires 过时时间(必须)
* 4.path 设置“/” 表示这个域全部数组均可以访问
* 5.domain 有效的域名
* 6.secure 布尔值 ,若是为true 表示只有ssl加密链接才发送cookie到客户端
代码片断
<?php
$value = 'szzppx';
setcookie("TestCookie", $value); /* 简单 cookie设置 */
setcookie("TestCookie", $value, time()+3600); /* 有效期 1个小时 */
setcookie("TestCookie", $value, time()+3600, "/~zppx/",".xxx.com", 1); /* 有效目录 /~zppx,有
效域名 xxx.com 及其全部子域名 */
?>
Cookie 的读取:
直接用php 内置超级全局变量$_COOKIE 就能够读取浏览器端的cookie
以前咱们设置了个visit
如今咱们来读取
print $_COOKIE[visit];
cookie 的删除:
只需把有效时间设为小于当前时间,和把值设置为空
如:setcookie("visit ", "", time()-1);
常见问题解决:
1) 用 setcookie()时有错误提示,多是由于调用setcookie()前面有输出或空格。也可能你的文
档是从其余字符集转换过来,文档后面可能带有 BOM 签名(就是在文件内容添加一些隐藏
的BOM 字符)。解决的办法就是使你的文档不出现这种状况。还有经过使用ob_start()函数
也能处理一点。
2) $_COOKIE 受magic_quotes_gpc 影响,可能自动转义。
3) 使用的时候,有必要测试用户是否支持cookie。
<?php
/* *
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);//修改错误提示信息
ini_set('display_errors',true);//设置PHP错误提示
*/
if(!isset($_COOKIE['visit'])){
setcookie("visit","php",mktime()+86400,"/") or die("客户端禁止cookie");
echo "hellow first";
}else{
echo "second";
}
下面为一个完成的cookie操做类,供后期参考
<?php
class cookieclass{
private $cookiename;
private $cookievalue;
private $cookieexpiry;
public function __construct(){
$num_args = func_num_args();
if($num_args >0){
$args = func_get_args();
$this->cookiename = $args[0];
$this->cookievalue = $args[1];
$this->cookieexpiry = $args[2];
$this->cookieset();
}
}
//设置cookie
public function cookieset(){
try{
if($this->cookiename !="" && $this->cookievalue !="" &&
$this->cookieexpiry !=""){
setcookie($this->cookiename,$this->cookievalue,time()+$this->cookieexpiry);
}else{
throw new exception("你必须对cookie设置个名字和过时时间");
}
}catch(exception $e){
echo $e->getmessage();
}
}
//修改cookie中指定的值
public function change($newvalue){
$_COOKIE[$this->cookiename] = $newvalue;
}
//取得须要的值
public function getvalue(){
return $_COOKIE[$this->cookiename];
}
//删除某个值
public function remove(){
$this->change("");
}
}
?>
//创建个COOKIE
$mycookie = new cookieclass("cookieid","php","60");
echo $mycookie->getvalue();