PHP入门之字符串、Cookie和Session简介
来源:互联网 发布:肯德基优惠券软件 编辑:程序博客网 时间:2024/05/29 14:56
一,字符串(详情见,代码注释)
/* ---------------------定义--------------------- */
$strA = 'hello world A';
$strB = "hello world B";
$strC = <<<Fuck
hello world C
Fuck;
echo $strA . "--" . $strB . "---" . $strC . "\n";
/* ---------------------除去空格--------------------- */
$space = " space sample ";
echo trim($space) . "0 \n"; // 除去 两边空格
echo rtrim($space) . "0 \n"; // 除去 右边空格
echo ltrim($space) . "0 \n"; // 除去 左边空格
/* ---------------------计算长度--------------------- */
$strD = " space sample ";
echo strlen($strD) . "\n"; // 计算长度
echo mb_strlen($strD, "utf8") . "\n"; // 按照固定编码,计算长度
/* ---------------------截取--------------------- */
$subA = 'Fuck The Sing';
$SubB = '你怎么知道不好听';
echo substr($subA, 2, 4) . "\n";
echo mb_substr($SubB, 2, 4, 'utf8') . "\n";
/* ---------------------查找--------------------- */
$queryA = 'Fuck The Sing';
echo strpos($queryA, 'The') . "\n"; // 区分大小写
/* ---------------------替换--------------------- */
$replace = 'Fuck The Sing';
echo str_replace('the', 'a', $replace) . "\n";
/* ---------------------格式化--------------------- */
$formatA = '100.1';
echo sprintf('%01.3f', $formatA) . "\n"; // 0:占位符, 1:总共1位以上 , 3:三位以上, f:结尾
/* ---------------------合并 + 分割--------------------- */
$splitA = 'sun-moon-star';
$splitB = 'the result';
echo implode('-', array(
$splitA,
$splitB
)) . "\n";
print_r(explode('-', $splitA));
/* ---------------------转义--------------------- */
$escapeA = "What's the fuck mean?";
echo addslashes($escapeA) . "\n"; // 输出转义字符
二、Cookie
1,简介
---- Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。
setcookie('test', time());
ob_start();
print_r($_COOKIE);
$content = ob_get_contents();
$content = str_replace(" ", ' ', $content);
ob_clean();
header("content-type:text/html; charset=utf-8");
echo '当前的Cookie为:<br>';
echo nl2br($content);
2,设置cookie
1)PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个:
name( Cookie名)可以通过$_COOKIE['name'] 进行访问
value(Cookie的值)
expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
path(有效路径)如果路径设置为'/',则整个网站都有效
domain(有效域)默认整个域名都有效,如果设置了'www.imooc.com',则只在www子域中有效
$value = 'test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); //有效期一小时
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域
2)PHP中还有一个设置Cookie的函数setrawcookie,setrawcookie跟setcookie基本一样;
唯一的不同就是value值不会自动的进行urlencode,因此在需要的时候要手动的进行urlencode
setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);
3)因为Cookie是通过HTTP标头进行设置的,所以也可以直接使用header方法进行设置。
header("Set-Cookie:cookie_name=value");
3,删除cookie
1)在PHP中删除cookie也是采用setcookie函数来实现
可以看到将cookie的过期时间设置到当前时间之前,则该cookie会自动失效,也就达到了删除cookie的目的
setcookie('test', '', time()-1);
2)也可以直接通过header来删除cookie
header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s \G\M\T', time()-1));
4,设置有效路径
cookie中的路径用来控制设置的cookie在哪个路径下有效,默认为'/',在所有路径下都有
以下设置会使test在/path以及子路径/path/abc下都有效,但是在根目录下就读取不到test的cookie值
setcookie('test', time(), 0, '/path');
5,cookie与session的异同
cookie将数据存储在客户端,建立起用户与服务器之间的联系,通常可以解决很多问题,但是cookie仍然具有一些局限:
cookie相对不是太安全,容易被盗用导致cookie欺骗
单个cookie的值最大只能存储4k
每次请求都要进行网络传输,占用带宽
session是将用户的会话数据存储在服务端,没有大小限制,通过一个session_id进行用户识别,
PHP默认情况下session id是通过cookie来保存的,因此从某种程度上来说,seesion依赖于cookie。
但这不是绝对的,session id也可以通过参数来实现,只要能将session id传递到服务端进行识别的机制都可以使用session。三、Session
1,简介
session是将用户的会话数据存储在服务端,没有大小限制,通过一个session_id进行用户识别
2,使用
PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写
session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);
session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等
默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,
这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题
3,删除和销毁
1)删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。
session_start();
$_SESSION['name'] = 'jobs';
unset($_SESSION['name']);
echo $_SESSION['name']; //提示name不存在
2)如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在
session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
session_destroy();
说明:
如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。
4,案例:存储用户的登录信息
session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。
session的数据存放在服务器,安全性较高
session_start();
//假设用户登录成功获得了以下用户数据
$userinfo = array(
'uid' => 10000,
'name' => 'spark',
'email' => 'spark@imooc.com',
'sex' => 'man',
'age' => '18'
);
header("content-type:text/html; charset=utf-8");
/* 将用户信息保存到session中 */
$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['name'] = $userinfo['name'];
$_SESSION['userinfo'] = $userinfo;
//* 将用户数据保存到cookie中的一个简单方法 */
$secureKey = 'imooc'; //加密密钥
$str = serialize($userinfo); //将用户信息序列化
//用户信息加密前
$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
//用户信息加密后
//将加密后的用户数据存储到cookie中
setcookie('userinfo', $str);
//当需要使用时进行解密
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
$uinfo = unserialize($str);
echo "解密后的用户信息:<br>";
print_r($uinfo);
5,cookie和session的异同
cookie将数据存储在客户端,建立起用户与服务器之间的联系,相对不安全,且最大4k,每次请求都要进行网络传输
session是将用户的会话数据存储在服务端,相对安全,没有大小限制,通过一个session_id进行用户识别
PHP默认情况下session id是通过cookie来保存的,因此从某种程度上来说,seesion依赖于cookie
但这不是绝对的,session id也可以通过参数来实现,只要能将session id传递到服务端进行识别的机制都可以使用session。
有技术上的问题,或者想法,欢迎来交流
QQ联系:957339173@qq.com // 备注 CSDN
github:https://github.com/yline
阅读全文
0 0
- PHP入门之字符串、Cookie和Session简介
- php入门(字符串,cookie,session)
- PHP之cookie和session
- cookie和session简介
- Session和Cookie简介
- php 之 cookie 和 session 简单解读
- PHP之浅谈cookie和session
- cookie简介和session简介
- php session和cookie
- PHP cookie和session的分析之cookie篇1
- PHP cookie和session的分析之session篇2
- cookie和session简介用法
- Servlet之cookie和session简介及其作用
- PHP中的Session和Cookie
- php的session和cookie
- php的session和cookie
- php-cookie和session-1217
- php专题-session和cookie
- 【Dubbo分布式服务框架】3.基于注解的服务提供者和消费者
- 利用表格建立如下网页(歌曲自选,至少选择3首歌曲)。
- linux下配置SSH免密码连接
- Maven项目下的Spring Quartz简单集成
- AngularJS—学习 ui-router
- PHP入门之字符串、Cookie和Session简介
- 51Nod 1019 逆序数
- resultset结果集封装为json的各种形式
- IPC--共享内存
- jQuery的extend方法
- META标签的用法
- Android 6.0多个权限申请,教你使用Google easypermissions框架,100%申请成功
- 剑指offer面试题[11]-数值的正整数次方
- 常用设计模式