2011-04-23 124 views
2

我有這個代碼,防止用戶在頁面上發出多個請求,它記錄在一個文本文件中的IP地址以及一串數字我假設它的時間戳,但我不知道看起來像這樣173.1.1.100 - Requested on: 1303521541如何將日期改爲可讀時​​間?限制頁面請求與PHP

$ipLog='log.txt'; //Logfile 
$timeout='1'; //Wait Time 
$goHere=$headers; //Page To Access 

$register_globals = (bool) ini_get('register_gobals'); 
if ($register_globals) $vis_ip = getenv(REMOTE_ADDR); 
else $vis_ip = $_SERVER['REMOTE_ADDR']; 


function recordData($vis_ip,$ipLog,$goHere) 
{ 
    $log=fopen("$ipLog", "a+"); 
    fputs ($log,$vis_ip." - Requested on: ".time()."\n"); 
    fclose($log); 

    // 
    // 
    // 

    exit(0); 
} 

function checkLog($vis_ip,$ipLog,$timeout) 
{ 
    global $valid; $ip=$vis_ip; 
    $data=file("$ipLog"); $now=time(); 

    foreach ($data as $record) 
    { 
     $subdata=explode(" - Requested on: ",$record); 
     if ($now < ($subdata[1]+600*$timeout) && $ip == $subdata[0]) 
     { 
      $valid=0; echo "$timeout min wait."; 
      break; 
     } 
    } 
} 

checkLog($vis_ip,$ipLog,$timeout); 
if ($valid!="0") recordData($vis_ip,$ipLog,$goHere); 
+0

不相關的問題,但如果你有控制你的PHP設置,幫你一個忙,並檢查出http://php.net/manual/en/security.globals.php – Thilo 2011-04-23 03:17:11

回答

3

當文件已經保存,保存日期

fputs ($log,$vis_ip." - Requested on: ".date("Y-M-d H:m:s")."\n"); 

其提取時,恢復時間戳,並保持邏輯

$subdata=explode(" - Requested on: ",$record); 
$subdata[1]= strtotime($subdata[1]); //convert date to timestamp 
+0

謝謝!像魅力一樣工作 – jennifer 2011-04-23 03:30:20