首页 » 网站建设 » phpint技巧_PHP cookie技能

phpint技巧_PHP cookie技能

访客 2024-10-23 0

扫一扫用手机浏览

文章目录 [+]

当用户利用浏览器再去访问做事器中的web资源时, 就会带着各自的数据去。

cookie技能理解:

phpint技巧_PHP cookie技能

1 cookie是做事器给客户真个, 以Set-Cookie: name=shunping; expires=Wed, 21-Sep-2011 07:53:25 GMT回送客户端http相应,

phpint技巧_PHP cookie技能
(图片来自网络侵删)

当浏览器获取到该信息后, 就会将该cookie数据保存到客户真个cookie文件中, 文件名格式:用户名@网站URL

2 cookie保存的便是字符串(包括中文), 默认会对中文进行urlencode进行编码, 而解码采取urldecode进行解码,

3 cookie可以有多个键<==>值对, 可以给不同的键值, 指定不同的有效韶光;

在一个文件内可以单独删除过期的cookie键值对, 而保留未过期的cookie键值对

window 7 操作系统存放位置

C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies

由于系统默认是隐蔽这些文件, 对此我们须要在文件选项中将隐蔽选项去掉。

setcookie()函数利用

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false[, bool $httponly = false ]]]]]] )

name 必要参数, 输入的cookie名字

value 可选参数, 输入的cookie的值, 保存在客户端

expire 可选参数, 是通过在php.ini文件中由session.cookie_lifetime选项设置的值, cookie的有效韶光, 是个Unix韶光戳,

默认值为0, cookie 将会在会话结束后(一样平常是浏览器关闭)失落效, 单位秒

语法存不才面的分外值:

0: 默认值;

time()-1: 删除COOKIE通用形式, setCookie('key', '', time()-1);

PHP_INT_MAX: 逻辑上表示永久有效。

path 可选参数。
在做事器的有效路径, 也是通过php配置文件指定的值, 在php.ini中由session.cookie_path选项设置的值,

默认值为"/",表示在cookie中要设置的路径在全体域内都有效。

domain 可选参数。
有效的域名, 如设置为'.xxxxxx.com', cookie能在此域名下的所有子域都有效;

把稳:配置文件为空值(session.cookie_domain =)

当前目录下只能获取同级以及上级Cookie信息, 但是不能获取子目录下的Cookie信息。

secure 可选参数。
指明是否仅通过安全的https连接中传送, 默认值false

httponly 可选参数。
设置此参数为true, 则cookie不会受脚本措辞(如Javascript)所影响, 默认值为false, 此参数是php 5.2.0新加入的

把稳:setcookie()函数必须位于<html> 标签之前。

语法上的问题:

1 $_COOKIE仅仅支持获取COOKIE数据而不能设置COOKIE数据

$_COOKIE['key'] = 'value'; 是不可行的

2 $_COOKIE仅仅可以获取当前要求携带的COOKIE数据

导致下面的语法征象, 当前脚本周期设置的COOKIE, 不能利用$_COOKIE获取到值

setCookie('key','value');var_dump($_COOKIE); //返回值:array(0){}

3 COOKIE数据仅仅支持字符串类型(实际上:int bool float等标量类型自动会转换成字符串)

<?php$value = mt_rand(1, 9); //随机显示1-9的整数setCookie('key', $value);echo gettype($_COOKIE['key']); //显示结果:string?>

setcookie("array",array("name"=>'hkz')); //不支持数组类型Warning: setcookie() expects parameter 2 to be string

实例:

<?php$value = 'something from somewhere';setcookie("TestCookie", $value);setcookie("TestCookie", $value, time()+3600);setcookie("TestCookie", $value, time()+3600, "/test", ".example.com", 1);?>

.example.com .加上兼容性更多的浏览

<?phpsetcookie("cookie[three]", "cookiethree");setcookie("cookie[two]", "cookietwo");setcookie("cookie[one]", "cookieone");if (isset($_COOKIE['cookie'])) {foreach ($_COOKIE['cookie'] as $name => $value) {echo "$name : $value <br />\n";}}?>

上例将输出:three : cookiethreetwo : cookietwoone : cookieone

<?phpsetcookie("cookie['three']", "cookiethree");setcookie("cookie['two']", "cookietwo");setcookie("cookie['one']", "cookieone");if (isset($_COOKIE['cookie'])) {foreach ($_COOKIE['cookie'] as $name => $value) {echo "$name : $value <br />\n";}}?>

上例将输出:three : cookiethreetwo : cookietwoone : cookieone\'three\' : cookiethree\'two\' : cookietwo\'one\' : cookieone

因此setcookie("cookie[three]", "cookiethree")下three不适宜加引号;

数组形态的Cookie运用

<?phpsetcookie("user[username]","skygo"); //设置为$_COOKIR["user"]["username"]setcookie("user[password]",md5("12345")); //设置为$_COOKIE["user"]["password"]setcookie("user[email]","zhangsan@163.net"); //设置为$_COOKIE["user"]["email"];foreach($_COOKIE["user"] as $key => $value){echo $key.":".$value."\n";}?>

删除Cookie三种方法

<?phpsetcookie("Account");setcookie("isLogin","",time()-1);setcookie("test","",time()+1800) //0.5小时后失落效?>

删除Cookie和重定向

<?phpsetCookie("test","",time()-3600); //删除Cookieheader("Location:http://localhost/dingxiang.php"); //重定向页面exit();?>

利用header()函数设置cookie;

header("Set-Cookie:name=$value[;expires=$expires[;path=$path[;domain=$domain[;...]]]");

后面的参数和上面列出setcookie()函数的参数一样.

比如: $value = 'something from somewhere';

header("Set-Cookie:name=$value");

实例:

<?php//1、设置相应头信息header('Content-type:text/html; charset=utf-8');//2、设置相应头,设置cookie参数(username与password)header('Set-Cookie:username=admin; expires='.gmdate('D, d-M-Y H:i:s',time()+3600).' GMT');header('Set-Cookie:password=123456; expires='.gmdate('D, d-M-Y H:i:s',time()+3600).' GMT',false); //设置第二个参数,避免覆盖echo $_COOKIE['username'];echo $_COOKIE['password'];?>

实际利用时

Cookie适宜完成:

永劫光保存, 敏感性相对较低(进行了安全处理的敏感数据)。

例如:存储上岸状态, 记录用户搜索习气, 未登录时购物车。

利用中, 须要把稳:

COOKIE, 可能受限于浏览器, 导致COOKIE的数据量受到限定。

cookie无法保存数组

序列化和反序列化在cookie中的运用

办理方法:把复合数据类型数组转换为字符串, 保存在cookie中, 利用序列化

重新把字符串转换成数组, 进行反序列化处理

<?phpheader("Content-type: text/html; charset=utf-8");$user_info = array("username"=>"老王", "sex"=>"男", "age"=>30);$user = serialize($user_info);setcookie('user', $user);if(isset($_COOKIE['user'])){echo $_COOKIE['user'];}$userinfo = $_COOKIE['user'];$userinfo = unserialize($userinfo);var_dump($userinfo);?>

json在cookie中的运用

json_encode(数组): 把数组转换为json格式的字符串

json_decode(json格式的字符串,[true/false]): 把json格式的字符串转换为工具(默认值:false)或者数组(true)

<?phpheader("Content-type: text/html; charset=utf-8");$user_info = array("username"=>"老王", "sex"=>"男", "age"=>30);$user = json_encode($user_info);setcookie('user', $user);if(isset($_COOKIE['user'])){echo $_COOKIE['user'];}$userinfo = $_COOKIE['user'];$userinfo = json_decode($userinfo);var_dump($userinfo);?>

标签:

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读1 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读1 评论0