2017-09-24 54 views
2

我有一個奇怪的問題:我想將網站訪問者的IP地址保存到database.below我說如果訪問者不是我(61.68.257.80是我的IP地址),然後保存IP地址到數據庫。其工作正常,當我通過隱藏我的代理檢查。它是保存除我以外的IP地址,但是當我從電話(與電話互聯網沒有WiFi)訪問該網站具有不同的IP地址,那麼它不存儲到數據庫中。任何人?無法保存mysql中的遠程IP地址

$visitor=$_SERVER['REMOTE_ADDR']; 
     if($visitor!=="61.68.257.80"){ 
      $count="SELECT * FROM `visitor`"; 
      $countRun=mysqli_query($conn,$count); 
      while($countRow=mysqli_fetch_array($countRun)){ 
        $current_counts=$countRow['counts']; 
        $new_count=$current_counts+1; 
       } 
      $remote_ip= $_SERVER['REMOTE_ADDR']; 
      $queryUpdate="INSERT INTO `visitor`(`counts`,`ip_address`)VALUES('".$new_count."','".$remote_ip."')"; 
      $runUpdate=mysqli_query($conn,$queryUpdate); 

     } 
+0

檢查錯誤的查詢 –

+0

第一的var_dump($訪問者),看看有什麼是存儲在該變量。 –

+0

OMG bro!使用var_dump它給了我「字符串(13)然後IP地址」,而在數據庫中它的varchar(12)。我是一個白癡 !非常感謝你這是最好的答案。 – judy

回答

2

一個小建議,以提高你的代碼,同時它會更快也

你在做什麼越來越整個表記錄和循環,並最終獲得最後一個記錄的計數,可能是可能是最大值。

因此,不是這樣的:

$count="SELECT * FROM `visitor`"; 
      $countRun=mysqli_query($conn,$count); 
      while($countRow=mysqli_fetch_array($countRun)){ 
        $current_counts=$countRow['counts']; 
        $new_count=$current_counts+1; 
       } 

您可以直接修改您的查詢象下面這樣:

$count = "select max(counts) as count_max_value from visitor"; 

上面的查詢將返回,您可以訪問使用鍵count_max_value只有一個行/記錄。

註釋:

中應用var_dump,它給了我 「串(13),則IP地址」,而在 數據庫的VARCHAR(12)。

您可以修改使用下面的查詢(IPv4地址),您的表

ALTER TABLE `visitor` MODIFY `ip_address` VARCHAR(15); 
+0

檢查var_dump($ visitor)解決了問題。但是這是我不知道的東西。謝謝 – judy

+0

@judy不客氣,有時會發生,我們學習,祝你有個美好的一天,好的希望你能修好 –

+0

@judy更新後的帖子,查詢修改表,希望這可以幫助你 –