因爲HTTP協議是無鏈接、無狀態的,因此HTTP協議沒法記住客戶端的信息。爲了彌補HTTP協議的這兩種不足,因此出現了會話技術。php
服務器端,將可以惟一標識用戶的數據保存在客戶端的一種方式。以後,瀏覽器在每次請求時,都會自動攜帶給服務器。html
由於Cookie文件是保存到瀏覽器端的,其每次隨身攜帶cookie數據到服務器,中途容易被其餘腳本攔截,因此Cookie不安全,一般用來保存一些不重要的數據。如:登陸時間。瀏覽器
<?php // 增長一個Cookie setcookie('book', 'xiaoaojianghu', time()+3600);
<?php // 刪除一個Cookie setcookie('book', '', time()-1); unset($_COOKIE['book']);
<?php // 修改一個Cookie setcookie('book', 'tianlongbabu', time()+3600);
<?php // 讀取Cookie數據 echo '<pre>'; var_dump($_COOKIE['book']);
setcookie有7個參數:安全
參數1:cookie的名字服務器
參數2:cookie的值cookie
參數3:有效期session
參數4:有效路徑post
參數5:有效域,用來設置cookie在哪一個域名下有效ui
參數6:是否只能在HTTPS協議下傳輸url
參數7:是否只在HTTP協議下
session也是會話技術的一種,session以cookie爲基礎,將重要的數據保存到服務器,同時,將可以惟一標識這份數據的數據以cookie的形式保存到客戶端。
驗證碼、防跳牆、購物車
<?php session_start(); $_SESSION['sex'] = female;
<?php session_start(); unset($_SESSION['sex']); session_destroy(); // 刪除session文件
同2.3.1
<?php session_start(); echo '<pre>'; var_dump($_SESSION);
防止用戶未經登陸就進入咱們的後臺。直接登陸index.php會報錯。
form.html代碼以下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上傳</title> </head> <body> <form action="check.php" method="post"> 用戶名:<input type="text" name="user"><br> 密碼:<input type="password" name="pass"><br> <input type="submit" value="提交"> </form> </body> </html>
check.php代碼以下:
<?php // 接收表單提交的用戶名密碼 $user = $_POST['user']; $pass = $_POST['pass']; // 暫時給定合法用戶爲 張三 admin if($user == 'admin' && $pass == 'admin'){ session_start(); $_SESSION['user'] = $user; header("Refresh:3;url=index.php"); echo "登陸成功"; exit(); }else{ header("Refresh:3;url=form.html"); echo '登陸失敗'; exit(); }
index.php代碼以下:
<?php session_start(); if(!isset($_SESSION['user'])){ header('Refresh:2;url=form.html'); echo '非法訪問,當心我告你'; exit(); } echo '後臺首頁';