Title1

Title2

Title3

6-5 防止偽造表單

一、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 驗證失敗');
  }
}

二、後台

  1. 取得token
    
    	$token = getTokenHTML();
    	$smarty->assign("token", $token);

     

  2. 驗證
    
    	#驗證token
    	verifyToken($_POST['token']);

     

三、樣板

在表單中加入     <{$token}>