PHP入门之字符串、Cookie和Session简介

来源:互联网 发布:肯德基优惠券软件 编辑:程序博客网 时间:2024/05/29 14:56
一,字符串(详情见,代码注释)
  1. /* ---------------------定义--------------------- */
  2. $strA = 'hello world A';
  3. $strB = "hello world B";
  4. $strC = <<<Fuck
  5. hello world C
  6. Fuck;
  7. echo $strA . "--" . $strB . "---" . $strC . "\n";
  8. /* ---------------------除去空格--------------------- */
  9. $space = " space sample ";
  10. echo trim($space) . "0 \n"; // 除去 两边空格
  11. echo rtrim($space) . "0 \n"; // 除去 右边空格
  12. echo ltrim($space) . "0 \n"; // 除去 左边空格
  13. /* ---------------------计算长度--------------------- */
  14. $strD = " space sample ";
  15. echo strlen($strD) . "\n"; // 计算长度
  16. echo mb_strlen($strD, "utf8") . "\n"; // 按照固定编码,计算长度
  17. /* ---------------------截取--------------------- */
  18. $subA = 'Fuck The Sing';
  19. $SubB = '你怎么知道不好听';
  20. echo substr($subA, 2, 4) . "\n";
  21. echo mb_substr($SubB, 2, 4, 'utf8') . "\n";
  22. /* ---------------------查找--------------------- */
  23. $queryA = 'Fuck The Sing';
  24. echo strpos($queryA, 'The') . "\n"; // 区分大小写
  25. /* ---------------------替换--------------------- */
  26. $replace = 'Fuck The Sing';
  27. echo str_replace('the', 'a', $replace) . "\n";
  28. /* ---------------------格式化--------------------- */
  29. $formatA = '100.1';
  30. echo sprintf('%01.3f', $formatA) . "\n"; // 0:占位符, 1:总共1位以上 , 3:三位以上, f:结尾
  31. /* ---------------------合并 + 分割--------------------- */
  32. $splitA = 'sun-moon-star';
  33. $splitB = 'the result';
  34. echo implode('-', array(
  35. $splitA,
  36. $splitB
  37. )) . "\n";
  38. print_r(explode('-', $splitA));
  39. /* ---------------------转义--------------------- */
  40. $escapeA = "What's the fuck mean?";
  41. echo addslashes($escapeA) . "\n"; // 输出转义字符

二、Cookie
1,简介
---- Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。
  1. setcookie('test', time());
  2. ob_start();
  3. print_r($_COOKIE);
  4. $content = ob_get_contents();
  5. $content = str_replace(" ", '&nbsp;', $content);
  6. ob_clean();
  7. header("content-type:text/html; charset=utf-8");
  8. echo '当前的Cookie为:<br>';
  9. 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子域中有效
  1. $value = 'test';
  2. setcookie("TestCookie", $value);
  3. setcookie("TestCookie", $value, time()+3600); //有效期一小时
  4. setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域
2)PHP中还有一个设置Cookie的函数setrawcookie,setrawcookie跟setcookie基本一样;
唯一的不同就是value值不会自动的进行urlencode,因此在需要的时候要手动的进行urlencode
  1. setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);
3)因为Cookie是通过HTTP标头进行设置的,所以也可以直接使用header方法进行设置。
  1. header("Set-Cookie:cookie_name=value");

3,删除cookie
1)在PHP中删除cookie也是采用setcookie函数来实现
可以看到将cookie的过期时间设置到当前时间之前,则该cookie会自动失效,也就达到了删除cookie的目的
  1. setcookie('test', '', time()-1);
2)也可以直接通过header来删除cookie
  1. 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值
  1. 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的读写
  1. session_start();
  2. $_SESSION['test'] = time();
  3. var_dump($_SESSION);
session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等

默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,
这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题

3,删除和销毁
1)删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。
  1. session_start();
  2. $_SESSION['name'] = 'jobs';
  3. unset($_SESSION['name']);
  4. echo $_SESSION['name']; //提示name不存在
2)如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在
  1. session_start();
  2. $_SESSION['name'] = 'jobs';
  3. $_SESSION['time'] = time();
  4. session_destroy();

说明:
   
   如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。

4,案例:存储用户的登录信息
   session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。
   session的数据存放在服务器,安全性较高
  1. session_start();
  2. //假设用户登录成功获得了以下用户数据
  3. $userinfo = array(
  4. 'uid' => 10000,
  5. 'name' => 'spark',
  6. 'email' => 'spark@imooc.com',
  7. 'sex' => 'man',
  8. 'age' => '18'
  9. );
  10. header("content-type:text/html; charset=utf-8");
  11. /* 将用户信息保存到session中 */
  12. $_SESSION['uid'] = $userinfo['uid'];
  13. $_SESSION['name'] = $userinfo['name'];
  14. $_SESSION['userinfo'] = $userinfo;
  15. //* 将用户数据保存到cookie中的一个简单方法 */
  16. $secureKey = 'imooc'; //加密密钥
  17. $str = serialize($userinfo); //将用户信息序列化
  18. //用户信息加密前
  19. $str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
  20. //用户信息加密后
  21. //将加密后的用户数据存储到cookie中
  22. setcookie('userinfo', $str);
  23. //当需要使用时进行解密
  24. $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
  25. $uinfo = unserialize($str);
  26. echo "解密后的用户信息:<br>";
  27. 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






















原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小恩爱账号忘了怎么办 华为账号更换后游戏账号怎么办 注册游戏账号需要身份证怎么办 英雄联盟被裁决了怎么办 百度网盘密码重置不了怎么办 sap密码输入被锁怎么办 dnf二级密码错10怎么办 大网卡网速慢了怎么办 小米路由器无线速度慢怎么办 小米手机无线速度慢怎么办 电脑网卡驱动没了怎么办 电脑显示网卡驱动不正常怎么办 微信别人拒收消息怎么办 电脑无线网卡速度慢怎么办 网吧吃鸡更新慢怎么办 手机号注册不了微信怎么办 小米账号密码忘了怎么办 小米手机账号密码忘了怎么办 华为手机账号密码忘记了怎么办 老年机开不了机怎么办 天谕没有顺网登陆怎么办 苹果密保问题忘了怎么办 密保手机没用了怎么办 qq密保手机没用了怎么办 手机开机按钮坏了怎么办 改了账号游戏角色消失怎么办 华为开机键坏了怎么办 抖音账号已重置怎么办 抖音账号被重置怎么办 吃鸡账号密码忘了怎么办 微信只记得账号忘了手机号怎么办 红米3开机键失灵怎么办 晚自习教室有许多虫子怎么办 泰迪吃草又呕吐怎么办 手机不断收到验证码信息怎么办 樱桃吃多了上火怎么办 过年不想回婆婆家过怎么办 旅行箱提手坏了怎么办 影棚人物后面有影子怎么办 微信运动图标不见了怎么办 逆光拍摄人黑了怎么办