最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php環(huán)境下利用session防止頁(yè)面重復(fù)刷新的具體實(shí)現(xiàn)

 更新時(shí)間:2014年01月09日 17:11:50   作者:  
如何防止頁(yè)面重復(fù)刷新,在php環(huán)境下可以利用session來(lái)輕松實(shí)現(xiàn),下面是具體的代碼,需要的朋友可以參考下
b.php的代碼
復(fù)制代碼 代碼如下:

<?php
//只能通過(guò)post方式訪問(wèn)
if ($_SERVER['REQUEST_METHOD'] == 'GET')
{header('HTTP/1.1 404 Not Found'); die('親,頁(yè)面不存在');}
session_start();
$fs1=$_POST['a'];
$fs2=$_POST['b'];
//防刷新時(shí)間,單位為秒
$allowTime = 30;
//讀取訪客ip,以便于針對(duì)ip限制刷新
/*獲取真實(shí)ip開始*/
if ( ! function_exists('GetIP'))
{
function GetIP()
{
static $ip = NULL;
if ($ip !== NULL)
{
return $ip;
}
if (isset($_SERVER))
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第x個(gè)非unknown的有效IP字符? */
foreach ($arr as $xip)
{
$xip = trim($xip);
if ($xip != 'unknown')
{
$ip = $xip;
break;
}
}
}
elseif (isset($_SERVER['HTTP_CLIENT_IP']))
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$ip = $_SERVER['REMOTE_ADDR'];
}
else
{
$ip = '0.0.0.0';
}
}
}
else
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$ip = getenv('HTTP_CLIENT_IP');
}
else
{
$ip = getenv('REMOTE_ADDR');
}
}
preg_match("/[\d\.]{7,15}/", $ip, $onlineip);
$ip = ! empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $ip;
}
}
/*獲取真實(shí)ip結(jié)束*/
$reip = GetIP();
//相關(guān)參數(shù)md5加密
$allowT = md5($reip.$fs1.$fs2);
if(!isset($_SESSION[$allowT])){
$_SESSION[$allowT] = time();
}
else if(time() - $_SESSION[$allowT]-->$allowTime){
$_SESSION[$allowT] = time();
}
//如果刷新過(guò)快,則直接給出404header頭以及提示
else {header('HTTP/1.1 404 Not Found'); die('來(lái)自'.$ip.'的親,您刷新過(guò)快了');}
?>

代碼很簡(jiǎn)單,無(wú)非是把ip,以及通過(guò)POST方式提交到需要防刷新頁(yè)面的數(shù)據(jù)經(jīng)過(guò)md5加密后寫入session中,再通過(guò)存儲(chǔ)的session來(lái)判斷刷新時(shí)間間隔從而決定是否允許刷新。需要說(shuō)明的是"$fs1=$_POST['a'];"、"$fs1=$_POST['a'];"兩個(gè)參數(shù)是指其他頁(yè)面通過(guò)post方式提交到需要防刷新頁(yè)的參數(shù)。之所以除了ip之外還要加這些參數(shù)的原因是為了區(qū)別不同的post結(jié)果。(實(shí)際上所謂的防刷新也就是防止某一頁(yè)面被反復(fù)提交。)

更具體的說(shuō),比如上述代碼放在b.php頁(yè)面的開頭,我們?cè)赼.html頁(yè)面有一個(gè)如下表單:
復(fù)制代碼 代碼如下:

<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>b.html</title>
</head>
<body>
<form action="b.php" method="post" >
<input type="hidden" id="a" name="a" value="a"/>
<input type="hidden" id="b" name="b" value="b"/>
<button name="" type="submit" >提交</button>
</form>
</body>
</html>

可以看到這個(gè)頁(yè)面提交的a和b 2個(gè)參數(shù)正是前面b.php中的2個(gè)參數(shù)(實(shí)際上應(yīng)該反過(guò)來(lái)說(shuō),由提交頁(yè)面的參數(shù)來(lái)決定)。在前面的php代碼中,已經(jīng)確定只能通過(guò)post訪問(wèn)被提交數(shù)據(jù)的頁(yè)面,所以直接輸入地址會(huì)得到一個(gè)404頭的錯(cuò)誤頁(yè)面,只能通過(guò)post方式來(lái)得到頁(yè)面,同時(shí)post刷新的時(shí)候會(huì)自己帶上參數(shù)地址,這樣就實(shí)現(xiàn)了同一頁(yè)面每個(gè)ip的防止刷新效果。

另外我們可以在被post的頁(yè)面增加通過(guò)referer判定來(lái)源網(wǎng)站,防止跨站提交,不過(guò)referer可以偽造,而且firefox和ie8經(jīng)常莫名其妙出現(xiàn)referer丟失的情況,所以暫時(shí)也就不加這個(gè)代碼。

相關(guān)文章

  • PHP實(shí)現(xiàn)的服務(wù)器一致性hash分布算法示例

    PHP實(shí)現(xiàn)的服務(wù)器一致性hash分布算法示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的服務(wù)器一致性hash分布算法,結(jié)合實(shí)例形式分析了php一致性hash分布算法類的具體定義與相關(guān)使用技巧,需要的朋友可以參考下
    2018-08-08
  • phpMyAdmin 鏈接表的附加功能尚未激活的問(wèn)題

    phpMyAdmin 鏈接表的附加功能尚未激活的問(wèn)題

    安裝了phpMyAdmin之后一直有這個(gè)問(wèn)題。雖然知道自己可能用不到這些功能,但是不解決這個(gè)問(wèn)題總覺(jué)著phpMyAdmin和MySQL的安裝沒(méi)有成功。
    2010-08-08
  • PHP獲取路徑和目錄的方法總結(jié)【必看篇】

    PHP獲取路徑和目錄的方法總結(jié)【必看篇】

    下面小編就為大家?guī)?lái)一篇PHP獲取路徑和目錄的方法總結(jié)【必看篇】。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • PHP PDOStatement::setFetchMode講解

    PHP PDOStatement::setFetchMode講解

    今天小編就為大家分享一篇關(guān)于PHP PDOStatement::setFetchMode講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • PHP判斷密碼強(qiáng)度的方法詳解

    PHP判斷密碼強(qiáng)度的方法詳解

    這篇文章主要介紹了PHP判斷密碼強(qiáng)度的方法,涉及php正則判斷、ajax交互及頁(yè)面元素動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析

    PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析

    這篇文章主要介紹了PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法,結(jié)合實(shí)例形式分析了php常見(jiàn)時(shí)間戳轉(zhuǎn)換與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • php實(shí)現(xiàn)中文字符截取防亂碼方法匯總

    php實(shí)現(xiàn)中文字符截取防亂碼方法匯總

    直接使用PHP函數(shù)substr截取中文字符可能會(huì)出現(xiàn)亂碼,主要是substr可能硬生生的將一個(gè)中文字符“鋸”成兩半。那么我們來(lái)看看如何解決這個(gè)問(wèn)題呢。
    2015-04-04
  • PHP 配置后臺(tái)登錄以及模板引入

    PHP 配置后臺(tái)登錄以及模板引入

    本文主要介紹了PHP 配置后臺(tái)登錄以及模板引入的方法步驟。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • php $_SERVER["REQUEST_URI"]獲取值的通用解決方法

    php $_SERVER["REQUEST_URI"]獲取值的通用解決方法

    在 PHP 眾多預(yù)定義服務(wù)器變量中,$_SERVER["REQUEST_URI"] 算是經(jīng)常用到的,但是這個(gè)變量只有 apache 才支持,因此,我們需要一個(gè)更加通用的方式來(lái)獲取 REQUEST_URI 的值,本文就是結(jié)束這一問(wèn)題的解決方案。
    2010-06-06
  • PHP數(shù)組在底層的實(shí)現(xiàn)原理詳解

    PHP數(shù)組在底層的實(shí)現(xiàn)原理詳解

    這篇文章講給大家詳細(xì)介紹一下PHP數(shù)組在底層的實(shí)現(xiàn)原理,PHP數(shù)組在底層的實(shí)現(xiàn)原理可以分為兩種類型:基于哈希表的實(shí)現(xiàn)和基于有序列表的實(shí)現(xiàn),文中通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

淮阳县| 广饶县| 定安县| 梁山县| 大邑县| 美姑县| 富锦市| 久治县| 墨竹工卡县| 壶关县| 县级市| 文登市| 游戏| 通城县| 土默特右旗| 读书| 马龙县| 扎兰屯市| 上思县| 剑川县| 华宁县| 涿鹿县| 安阳县| 晴隆县| 报价| 盘锦市| 安庆市| 武穴市| 广宁县| 剑河县| 红桥区| 浦江县| 成武县| 许昌县| 宜黄县| 湘潭市| 内乡县| 榆树市| 镇坪县| 兴义市| 将乐县|