2013-11-22 61 views
0

我需要一些腳本的更多幫助。我從幾個例子中將以下內容拼湊在一起,但在結果與IP地址和時間戳進行比較時,我卻不盡如人意。就目前而言,我試圖將用戶重定向到另一個頁面,如果他們訪問了我的網站上的某個區域超過10分鐘。根據IP地址和時間戳值重定向用戶

我的MySQL表包括以下欄:

ID,CLIENT_IP,submitted_time

這裏是我當前的代碼:

<?php 
$ipaddress = $_SERVER["REMOTE_ADDR"]; 

$link=mysqli_connect("localhost","root","password","visitors"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$query = "SELECT count(`id`) AS 'count' FROM `visits` WHERE `client_ip` = '$ipaddress' 
     AND 'submitted_time' = CURRENT_TIMESTAMP - INTERVAL 10 MINUTE 
     LIMIT 1"; 
$result = mysql_query($link, $query); 

    if ($result['count'] > 0) { 
    echo "You have accessed this site in the last 10 minutes -- you are blocked!";} 
    else 
    { 
    echo "You have access"; 

    exit; 
    } 

    ?> 

我應該得到的「您訪問過該網站最後10分鐘回聲.....但我越來越你有訪問每一次任何想法我做錯了根據我現在的代碼?提前致謝!

+0

'mysqli_query'兄弟 – danronmoon

+0

檢查變量的內部用'的var_dump($ VAR);'或'的print_r($ VAR ,真正的);' –

+0

好吧,我終於得到了這個..不得不作出以下修改我的查詢: $查詢=「SELECT COUNT('id')AS '計數' FROM'visits' WHERE ' client_ip' ='$ ipaddress' AND'submitted_time' <'「.date('Ymd H:i:s',strtotime(' - 10 mi nutes'))。「' LIMIT 1」; $ result = mysqli_fetch_assoc(mysqli_query($ link,$ q –

回答

0

如果您正在檢查他們是否在最後10分鐘內訪問你可以從你visits

$查詢=「SELECT COUNT(id)AS '計數' 之間使用WHERE client_ip = '$ ip地址' AND 'submitted_time' 之間CURRENT_TIMESTAMP - 間隔10分鐘,CURRENT_TIMESTAMP

雖然對你是如何試圖做到這一點你的架構&數據類型

0

信息的細節epends是不夠的。假設submitted_timeDATETIMETIMESTAMP,

你有兩個問題。

  • submitted_time是一列,所以刪除單引號或使用反引號。
  • 使用<=而非=,用戶可以重新過10+分鐘
  • LIMIT 1不是必需的。 COUNT(*)總是返回1條記錄。但這不是問題..

下面的查詢將工作做好:

SELECT count(`id`) AS 'count' 
    FROM `visits` 
    WHERE `client_ip` = '$ipaddress' 
     AND `submitted_time` = CURRENT_TIMESTAMP - INTERVAL 10 MINUTE