2015-10-04 122 views
-2

最近我開始從一個網站獲取殭屍工具,他們不斷在我的「客戶反饋」表單中發佈他們的網站鏈接。我想讓我的表單否認包含「http://」的任何文本或我將添加的任何其他單詞/短語(它們肯定會找到繞過「http://」的方式),但是我不會不知道該怎麼做。這裏是代碼(需要檢查「http://」的表格是$ name和$ comment):PHP未接受的文本格式

if(isset($_POST['add'])){ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $comment = $_POST['comment']; 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $datetime = date('Y-m-d H:i'); 
    $checkIp = mysql_query("SELECT ip from comments WHERE ip = '$ip'"); 
    if (mysql_num_rows($checkIp) > 0) { 
     echo "Only 1 feedback per IP allowed!"; 
     $IP = mysql_fetch_array($checkIp); 
     print_r($IP); 
    } 
    if($name){ 
     if($email){ 
      if($comment){ 
       if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
        mysql_query("INSERT INTO comments (id, name, email, comment, ip, datetime) VALUES ('','$name','$email','$comment','$ip','$datetime')"); 
       } 
       else       
        echo "The email address is invalid!<br><br>"; 
      } 
      else 
       echo "You haven't entered any comment!<br><br>"; 
     } 
     else 
      echo "You haven't entered an email address!<br><br>"; 
    } 
    else 
     echo "You haven't entered your name!<br><br>"; 
} 

謝謝!

+0

爲什麼不使用[驗證碼](http://stackoverflow.com/questions/59560/最有效的形式 - 的 - 驗證碼)? – castis

+0

你有一個IP爲他們的服務器? –

+0

你應該瞭解安全性,你的代碼對你來說很危險。 –

回答

0

你需要檢查,看看一個字符串包含在$name$comment變量,像這樣:

if (strpos($comment,'http://') === false and strpos($name, 'http://') === false) { 
    echo 'continue executing your code here'; 
}else{ 
    echo 'Its a bot!'; 
} 
+0

由於某種原因,只有在評論框中我才輸入「http://」,但如果輸入「http:// d」,例如,它可以讓它通過... – GeorgeDG

+0

如果輸入d ;?你爲什麼不想讓它通過? – blazerunner44

+0

我的意思是「http://」,然後是任何字母/數字,但如果我只輸入「d」而沒有http://它不會通過並獲取它作爲鏈接... – GeorgeDG