设为首页 加入收藏

TOP

PHP全栈学习笔记9(一)
2019-08-15 23:32:45 】 浏览:108
Tags:PHP 全栈 学习 笔记

image.png

php的会话控制,什么是会话控制,http等。
什么是会话控制思想,http协议。

cookie 和 session

http是超文本传输协议,是网络上最广泛的一种网络协议。

http最大特点是无连接无状态,clinet到http request到server,server到http response到clinet。

建立一个连接,连接完结束了。

image.png

cookie保存在客户端中,内存中的cookie,由浏览器维护,保存在内存中,浏览器关闭后就没了,保存在硬盘中的 cookie,有一个过期时间,除非手动清除和过期时间过了。

cookie使用场景

image.png

image.png

Cookie:达成服务器和浏览器之间长久连接的状态。

浏览器的cookie以小文件的形式保存在客户端中。

作用:长期登录,购物车。

设置cookie: bool

setcookie($name,$value,$expire,$path,$domain,$secure,$httponly);

$expire:默认为0s。time()

认识COOKIE?
1.cookie是存储在客户端中的,至于怎么存储,存储的文件是什么这和服务器没有关系,和客户端有关系。
2.COOKIE过期了,也是客户端来判断要不要传递给服务器,如果过期了就删除对应的COOKIE文件。用户也可以手动的清理COOKIE,那么之前保存的COOKIE就全部不见了
3.COOKIE发送到服务器也是有条件的,不是什么时候都发送,要符合指定的域名,指定的路径等信息才会发送到对应的服务器上去。
4.COOKIE也是可以伪造的,所以检查服务器发送的COOKIE是否合法有效就很关键

<?php
// 内存cookie,浏览器关闭后cookie数据消失了
setcookie('username','dashu');
setcookie('age',12);
setcookie('email','dashucoding');
?>

读取cookie,cookie数据保持在$_COOKIE,这是一个数组

<?php
var_dump($_COOKIE);
?>

image.png

image.png

setrawcookie()不会进行urlencode()编码

setrawcookie-send a cookie without urlencoding the cookie value.

更新cookie,删除cookie

image.png

image.png

通过header的方式操作cookie

<?php
通过header形式设置cookie
// header('Set-Cookie: a=1');
header('Set-Cookie: b=2;expires='.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));
header('Set-Cookie: b=2;expires='.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600).'; domain=.php.org');
?>
var Cookie={
 set: function(key, val, expiresDays){
  // 判断是否设置expiresDays
  if(expiresDays) {
  var date = new Date();
  date.setTime(date.getTime() + expiresDays*24*3600*1000);// 格式化时间
   var expiresStr = "expires=" + date.toGTMString() + ';';
   }else{
    var expiresStr = '';
  } 
   document.cookie = key+"=" +escape(val)+";"+expiresStr;
 },
 get: function(key){
  var getCookie=document.cookie.replace(/[ ]/g, ' ' );
  var resArr = getCookie.split(';');
  var res;
  for(var i=0, len = resArr.length; i<len; i++){
   var arr = resArr[i].split('=');
   if(arr[0] == key){
    res=arr[1];
    break;
   }
  }
  return unescape(res);
 }
};

image.png

Cookie实战之自动登陆

image.png

image.png

image.png

<?php
$username = $_POST['username'];
$password = md5($_POST['password']);
$autoLogin = $_POST['autoLogin'];
$link= mysqli_connect('localhost', 'root', '') or die('Connect Error');
mysqli_set_charset($link, 'utf8');
mysqli_setlect_db($link, 'test1') or die ('Database Open Error');

$sql="SELECT id,username,password FROM user WHERE username=' {$username}' && password='{$password}' ";

$sql = mysqli_escape_string($link,$sql);
$result = mysqli_query($link, $sql);

if(mysqli_num_rows($result) == 1){
 if($autoLogin == 1){
 $row = mysqli_fetch_assoc($resutl);
 setcookie('username', $username, strtotime('+7 days'));
 $salt = 'king';
 $auth = md5($username.$password.$salt).":".$row['id'];
 setcookie('auth',$auth,strtotime('+7 days'));
 }else{
 setcookie('username', $username);
 }
 exit("<script>alert('登录成功'); location.href = 'index.php'; </script>");
}else{
 exit("<script>alert('登录失败'); location.href = 'login.php'; <script>");
}

image.png

image.png

image.png

image.png

mysqli_connect

mysqli_set_charset

mysqli_select_db

mysqli_escape_string

mysqli_query

mysqli_num_rows

封装cookie

// cookie的设置,读取,更新,删除
<?php
class CustomCookie{
 static private $_instance = null;
 private $expire = 0;
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[PHP] debug_backtrace()可以获取.. 下一篇[PHP] 算法-二叉树的子结构判断的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目