最后是我的private.page 很简单
Check cookie: 如果cookie存在并且正确。那么进入private.page
Cookie的设计:session cookie。内容是用户名和系统的签名。
把session id 和用户名用系统的私钥加密 就是系统的签名, 用来认证是系统创建的,别人不能模仿。因为只有系统有自己的密钥。Sign<session id, username>
用发送过来的用户名加上现在的session id 来验证签名。check是否有人改过用户名。session id是否正确。
<?php
/*
CS683 Step 6
Multi-user server:
Private page:
Check cookie
*/
//1. Get public key to verify the cookie.
$pubfile = file_get_contents('./public.pub');
$pubkey = openssl_pkey_get_public($pubfile);
/*2.If cookie not exist or is not correct. Go to login.php
3.Check cookie.
*/
if (!isset($_COOKIE["username"])||!isset($_COOKIE["sign"]))
header('Location:login.php');
else{
$newsid = (string)session_id();
$newcookie = $newsid.$_COOKIE["username"];
$ok = openssl_verify($newcookie, $_COOKIE["sign"], $pubkey);
if($ok)
{
echo "Hello ".$_COOKIE["username"]."! This is your private page!";
}
else
echo "Error.";
}
?>