當浏覽器將 cookie 數據關閉之後,網站使用cookie傳遞將不能進行,而url參數傳遞還是能夠進行(session),其實編寫php的session會話控制整體和cookie會話控制一樣
首先建立編寫要用到的php文件
這一步是和 cookie 一樣,其實session也可以通過cookie進行傳遞,在 cookie的基礎上在開的頭開啟session:session_start()
下面要注意的是,login.php 的跳轉頁面不能使用header 而只能通過 javascript 進行跳轉
//跳轉界面 echo '<script>';|r| echo location='index.php';|r| echo '</script>';
session 通過 cookie傳遞就是這樣,下面主要是講解一下 url參數傳遞
第一種:通過sid的方式進行參數傳遞,即在鏈接或表單後加上 “?sid=”
這種方法也可以使用配置文件中的PHPSESSID來替換sid,也能達到一樣的效果
login.php
; //跳轉頁面不能不是header if(isset($_POST[sub])){ include conn.inc.php; $sql=select id from users where name='{$_POST[name]}' and password='.md5($_POST[password]).'; $result=$mysqli->query($sql); //保存數據 if($result->num_rows > 0){ $row=$result->fetch_assoc(); $_SESSION[username]=$_POST[name]; $_SESSION[uid]=$_POST[uid]; $_SESSION[isLogin5]=1; //跳轉界面 echo '<script>';|r| echo location='index.php?sid=.session_id().'; //將session_id() 調過來|r| echo '</script>'; } echo 用戶名密碼有誤; } ?>其它頁面只要在鏈接後面加上 “?sid=” 即可
注銷程序不像cookie那樣,分四步:開啟、清空、刪除和徹底銷毀
//開啟session session_start(); //情況session值 $_SESSION=array(); //刪除客戶端的在cookie中的sessionid if(isset($_COOKIE[session_name()])){ setCookie(session_name(),'',time()-3600,'/'); //一定要寫上第四個參數(路徑) } //徹底銷毀session session_destroy();
a、 鏈接或表單後面都加上 ”?“, 這個跟通過sid傳遞相似,不過SID是常數
index.php:
>第二頁 >第三頁 >退出
//跳轉界面 echo '<script>';|r| echo location='index.php?.SID.'; //SID 常量如果開啟cookie則使用cookie,如果沒開啟就用session|r| echo '</script>';
代碼基本和cookie傳遞的一樣,就只是開頭需要開啟session:session_start();
作法:將配置文件中 session.use_trans_sid 的值改為 1
作用:在所有鏈接的地方默認加上 PHPSESSID 的形式