1. 程式人生 > >2017.8.01

2017.8.01

刪除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