一、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