一、session的作用與cookie的作用相似,但是最大的不同在於session是將數據存放於服務器中。另外,session的應用必須先啟動(session_start()函數)。
所以,在客戶端僅需保存客戶的sessionID,而在服務器端(文件、數據庫、memcache)中保存session變量的值。
默認處理方式是使用web服務器中的的文件來記錄每個用戶的會話信息。
用戶請求web服務器時,將sessionID的值發送給服務器,在通過sessionID取出session變量。
二、一個簡單的郵件系統實例
1.connect.inc.php
<?php define("DSN", "mysql:host=localhost;dbname=testmail"); define("DBUSER","root"); define("DBPASS","root"); try{ $pdo = new PDO(DSN,DBUSER,DBPASS); }catch($PDOException $e) { die("連接失敗:".$e->getMessage()); } ?>
2.login.php
<?php session_start(); require "connect.inc.php"; if(isset($_POST['sub'])) { $stmt = $pdo -> prepare("select id,username from user where username=? and userpass=?"); $stmt -> execute(arrary($_POST["username"],$_POST["password"])); if($stmt -> rowCount()>0) { $_SESSION = $stmt -> fetch(PDO:FETCH_ASSOC);//將用戶全部信息注冊到session $_SESSION["isLogin"] = 1; header("Localtion:index.php"); } else { echo "用戶名或者密碼錯誤"; } } ?> <html> <head><title>郵件登錄系統</title></head> <body> <p>歡迎光臨郵件系統,session ID :<?php echo session_id(); ?></p> <form action="login.php" method="post"> 用戶名: <input type="text" name="username"><br> 密碼: <input type="password" name="password"><br> <input type="submit" name="sub" value="登錄"> </form> </body> </html>
3.index.php