第一節 PHP與Web頁面交互
PHP與Web頁面交互是實現PHP網站與用戶交互的重要手段。
在PHP中提供了兩種與Web頁面交互的方法,一種是通過Web表單提交數據,另一種是直接通過URL參數傳遞數據。
Web表單提交數據有兩種方式:GET方法和POST方法。
POST方法不依賴於URL,不會將傳遞的參數值顯示在地址欄中,而是將參數值放置在是HTTP包的包體中,這樣可以傳輸更多的內容,傳輸方法也更加安全,所以POST方法通常用於上傳信息。
GET方法完全依賴於URL,參數值會附在URL之後,以?分割URL和傳輸數據,多個參數用&連接,這樣傳輸安全性很低,而且受到URL長度的限制,傳輸內容很小,所以GET方法通常用於獲取信息。
Web表單用get方法提交數據,最終效果如同直接通過URL參數傳遞數據。
PHP針對這兩種請求方法,提供了兩個全局變量 _GET[ ],分別用來獲取POST請求和GET請求的參數值。
$_GET[ ]
建立一個get請求的表單頁面名叫form_get.html:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>GET方式的表單</title> </head> <body> <form action="form_get.php" method="get"> 帳戶:<input name="username" type="text" /><br /> 密碼:<input name="password" type="password" /><br /> 郵箱:<input name="email" type="email" /><br /> <input type="submit" /> </form> </body></html>
<?phpecho "<pre>"; var_dump ( $_GET ); $username = $_GET ["username"]; $password = $_GET ["password"]; $email = $_GET ["email"]; echo "<br />接收到的帳戶:" . $username; echo "<br />接收到的密碼:" . $password; echo "<br />接收到的郵箱:" . $email;?>
$_POST[ ]
同formget.html,我們建立一個名叫formpost.html,內容僅僅把<form>元素的action和method修改一下:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>POST方式的表單</title> </head> <body> <form action="form_post.php" method="post"> 帳戶:<input name="username" type="text" /><br /> 密碼:<input name="password" type="password" /><br /> 郵箱:<input name="email" type="email" /><br /> <input type="submit" /> </form> </body></html>
運行界面除了地址欄和標題欄,其他內容完全和formget.html一致。這時候點擊跳轉到同目錄下的formpost.php文件,文件內容為:
<?phpecho "<pre>";var_dump ( $_POST );$username = $_POST ["username"];$password = $_POST ["password"];$email = $_POST ["email"];echo "<br />接收到的帳戶:" . $username;echo "<br />接收到的密碼:" . $password;echo "<br />接收到的郵箱:" . $email;?>
第二節 會話控制
會話控制是一種跟蹤用戶的通信方式
例如:當一個用戶在請求一個頁面後,再次請求這個頁面,網站是無法知道這個用戶剛才是否曾經來訪問過。由此我們就會覺得奇怪,平時我們在電商網站購物時,只要我們在這個站點內,不論我們怎麼跳轉頁面,網站總會記得我是誰,這是怎麼做到的呢?這就是運用了HTTP會話控制。在網站中跟蹤一個變量,通過對變量的跟蹤,使多個請求事物之間建立聯繫,根據授權和用戶身份顯示不同的內容、不同頁面。
cookie
cookie是在伺服器端創建,並寫回到客戶端瀏覽器
瀏覽器接到指令則在本地臨時文件夾中創建了一個cookie文件,其中保存了你的cookie內容
客戶端瀏覽器每次訪問網站時,都會檢測是否有該網站的cookie信息,如果有的話,也會同時發送過去。
注意:
cookie內容的存儲是鍵/值對的方式,鍵和值都只能是字符串。
定義cookie
setcookie(鍵, 值, 有效期(秒))setcookie("name","zhangsan",time()+1000); //如果不設置有效期,關閉瀏覽器就會消失setcookie("pwd","123",time()+1000);
刪除cookie(設定過期時間,使失效)
setcookie("name","",time()-1);setcookie('age',null,time()-1);setcookie('sex',"",time()-1);
session
session與cookie相似,只是原來將信息存在客戶端,現在保存到服務端
客戶端第一次訪問時將信息保存到伺服器,同時分配給用戶一個固定長度的字符串(sessionID),並以cookie方式保存在客戶端
在php.ini配置文件中,可以指定這個sessionID的名稱:
session.name = PHPSESSID
開啟session 要保證在它之前,沒有向瀏覽器輸出過任何內容,通常放在代碼第一行
session_start();
往session中存儲信息
$_SESSION['name'] = '張三';$_SESSION['sex'] = '男';$_SESSION['age'] = 18;
獲取session信息
$name=$_SESSION['name'];
銷毀session中的信息
unset($_SESSION);
銷毀session文件
session_destroy();
銷毀客戶端cookie信息
setcookie('PHPSESSID','',time()-1);
cookie與session的區別
建議將登陸信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中
PHP-GD庫「程式設計師培養之路第三十九天」
PHP-文件上傳和下載「程式設計師培養之路第三十八天」
PHP-文件處理系統「程式設計師培養之路第三十七天」