我使用的是PHP登錄腳本,對用戶名密碼&挑戰用戶。防止用戶FOM重新登錄註銷後通過點擊後退按鈕
一旦通過驗證程序存儲會話值。在註銷時,會話值被設置爲空白。
一旦登出我想避免讓用戶點擊返回按鈕幾次,和博彩允許查看數據的屏幕或不期而遇登錄自己回去。
我使用的會話,再直接到將驗證的用戶發送到新頁面。我也使用ob_start,ob_flush和ob_end_clean來防止錯誤或重定向。
問題: 這是真的安全嗎? 這是一個常用的方法嗎?
有alterternative到緩衝?下面
是一個小的證明了概念。
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Pragma: public");
session_cache_limiter('nocache');
// I'm not sure how effective any of the above seem to be.
session_start();
// start buffering because if we use header later we want to avoid error
ob_start();
echo "Type <b>in</b> or <b>out</b> to login/logout<br>";
?>
<form action='' method='POST'>
<input type='text' name='status' size='10' value=""><br/><br/>
<p> </p>
<input type='submit' name='Login' value='Login' /></form></p>
<?php
if ($_POST['status'] == 'in')
{
$_SESSION['logged_in'] = 'in';
ob_end_clean(); // clean and erase buffer so far
header('location:test2.php');
exit;
}
if ($_POST['status'] == 'out')
{
$_SESSION['logged_in'] = 'no';
echo "you are logged out <br>";
}
ob_flush(); // push output
echo "login status = " . $_SESSION['logged_in'] ;
?>
file test2.php
<?php
echo "You have logged in";
?>
吉茲似乎容易得多...... – 2010-07-28 20:52:00