一、function.php
#################################################
# 取得token form
#################################################
if (!function_exists("getTokenHTML")) {
function getTokenHTML() {
$_SESSION['token'] = substr(md5(uniqid(mt_rand(), 1)), 0, 8);//取得一個亂數
$pass = password_hash($_SESSION['token'], PASSWORD_DEFAULT);//加密
return "<input type='hidden' name='token' id='token' value='{$pass}' />";//傳回隱藏token
}
}
#################################################
# verify token
#################################################
if (!function_exists("verifyToken")) {
function verifyToken($hash) {
if (password_verify($_SESSION['token'], $hash)) { //判斷token
return ;
}
redirect_header(WEB_URL, 3000, 'token 驗證失敗');
}
}
二、後台
- 取得token
$token = getTokenHTML();
$smarty->assign("token", $token);
- 驗證
#驗證token
verifyToken($_POST['token']);
三、樣板
在表單中加入 <{$token}>