session+cookie

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();

相关文章
相关标签/搜索