2017.8.01
阿新 • • 發佈:2017-08-02
刪除session use 序列化 以及 執行 inpu 瀏覽記錄 href 一個
一、sessio變量的應用實例。
1、做個簡單的登錄界面,獲取所需的值。PHP文件裏面可以寫有HTML
<?php session_start();//必須先執行此句,前面不要有任何輸出。 header("Content-type:text/html;charset=utf-8");//解決中文亂碼 if(isset($_SESSION[‘username‘])){ header(‘location:user.php‘);//跳轉函數,location後面為地址。
} ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用戶登陸</title> </head> <body>
<form action="deng.php" method="post"> 用戶名:<input type="text" name="username" value="admin" /><br /> 密碼:<input type="password" name="password" value="123456" /><br /> <input type="submit" value="提交" /> </form>> </body> </html>
2、獲取所得數值,並把其賦值給session變量。後臺連接數據庫驗證所得值是否正確。
<?php /** */ session_start();//使用session變量就必須開啟, header("Content-type:text/html;charset=utf-8");//解決中文亂碼 if(isset($_POST[‘username‘])&&isset($_POST[‘password‘])){ //這裏需要查詢數據庫,目前只做簡單判斷 $username=$_POST[‘username‘]; $password=$_POST[‘password‘]; if($username==‘admin‘&&$password==‘123456‘)//此處沒有查詢數據庫,使用已知的值
{ //設置session $_SESSION[‘username‘]=$username; header(‘location:user.php‘); //跳轉到指定地方 }else{ echo "用戶名和密碼不匹配"; } }
3、在其他頁面使用session變量。在其他頁面通過之前設置好的session變量$_SESSION[‘username‘]從數據庫獲取其他所需數值。
<?php /** */ session_start(); header("Content-type:text/html;charset=utf-8");//解決中文亂碼
if(isset($_SESSION[‘username‘])){ echo "恭喜".$_SESSION[‘username‘]."登陸成功<br />"; echo ‘<a href="logout.php">退出登陸</a >‘; }else{ header(‘location:deng0.php‘); }
4、刪除會話,刪除會話id和會話變量以及客戶端cookie值。退出登錄時的操作。
<?php /** */ session_start(); header("Content-type:text/html;charset=utf-8");//解決中文亂碼 /* //刪除會話變量$_SESSION[‘user‘]="yangyang",不會刪除session文件和session_Id session_unset(); echo session_Id(),‘<br />‘; //刪除會話變量$_SESSION[‘user‘]="yangyang",不會刪除session文件和session_Id $_SESSION=array(); echo session_Id(),‘<br />‘; //刪除會話Id和會話文件,它不會刪除內存中的會話變量$_SESSION[‘user‘]="yangyang" session_destroy(); print_r($_SESSION);echo session_Id(),‘<br />‘; */ //如果要刪除會話Id和會話文件,並且清空會話變量,需要配合session_unset()來使用,此時服務器中的會話文件和Id和變量都被刪除了 //但是客戶端cookie還在 session_unset(); session_destroy(); //清空cookie會話Id的值,路徑必須寫上 setcookie(session_name(),session_id(),time()-10,‘/‘); echo "感謝使用!";
二、cookie變量的應用實例。
1、通過例子中的$_COOKIE[‘hist‘]變量存儲用戶最近10條瀏覽記錄
<?php /*序列化和反序列化函數測試 $arr=[1=>‘a‘,2=>‘b‘,3=>‘c‘]; $a=serialize($arr);// echo $a; print_r(unserialize($a)); */ header("Content-type:text/html;charset=utf-8");//解決中文亂碼
//1、獲取URL地址,用到變量$_SERVER[‘REQUEST_URI‘] $url=$_SERVER[‘REQUEST_URI‘];//獲取當前URL地址 //echo $url,‘<br />‘; //echo a,‘<br />‘; //2、將URL放入到cookie中 //用一個數組來保存URL,因為記錄比較多用變量存儲太麻煩 $arr=[]; //2、首先判斷是否有瀏覽記錄,如果有,則將當前URL放到瀏覽記錄的最前面//反之,則新建一個瀏覽記錄 if(isset($_COOKIE[‘hist‘])) { $arr=unserialize($_COOKIE[‘hist‘]);//變成數組,取出來的是字符串需要反序列化,因為下面要壓入數組中 array_unshift($arr,$url);//壓入數組,將URL地址放到歷史記錄最前面 $arr=array_unique($arr);//保證瀏覽記錄不重復 //只保存最近10條瀏覽記錄 if(count($arr)>10){ array_pop($arr);//彈出最早進入的一條數據 } //2、再次存放到cookie中 setcookie(‘hist‘,serialize($arr));//放入cookie中 }else{ $arr[]=$url;//將URL地址存入數組中 //1、首次設置cookie setcookie(‘hist‘,serialize($arr));//把數組序列化為字符串,存入$_COOKIE[‘hist‘] } echo "歷史瀏覽記錄<br />"; //print_r($arr); echo ‘<ol>‘; foreach($arr as $k=>$v){ //echo $v,‘<br />‘; echo ‘<li>‘.$v.‘</li>‘; } echo ‘</ol>‘; echo ‘<hr />‘; echo ‘<a href="?id=‘.mt_rand(1,100).‘">隨機產生一個Id</a >‘;
2017.8.01