2017-01-07 9 views
2

PHPスクリプトを試しましたが、いつもエラーが表示されます。毎回自動的に.htaccessにスクリプトを追加しました。PHP致命的なエラー:再宣言できません

php_value auto_prepend_file /var/www/fantasycf/public/proxycheck.php 

どんなに私がしようと何を、私はこのエラーを受信しない:

Sat Jan 07 06:40:04.756520 2017] [php7:error] [pid 5269] [client 187.57.43.66:23391] PHP Fatal error: Cannot redeclare checkProxy() (previously declared in /var/my/private/directory/proxycheck.php:11) in /var/my/private/directory/proxycheck.php on line 11, referer: http://test.com/test.html 

は私のPHPスクリプトは以下の通りです:

<?php 
/* 
* A PHP function that interacts with http://getIPIntel.net to look up an IP address 
* returns TRUE if the IP returns a value greater than $banOnProability, 
* FALSE otherwise, including errors 
* HTTP error codes are NOT explicitly implemented here 
* This should be used as a guide, be sure to edit and test it before using it in production 
* MIT License 
*/ 
//function requires curl 
function checkProxy($ip){ 
    $contactEmail="[email protected]"; //you must change this to your own email address 
    $timeout=5; //by default, wait no longer than 5 secs for a response 
    $banOnProbability=0.99; //if getIPIntel returns a value higher than this, function returns true, set to 0.99 by default 

    //init and set cURL options 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
    //if you're using custom flags (like flags=m), change the URL below 
    curl_setopt($ch, CURLOPT_URL, "http://check.getipintel.net/check.php?ip=$ip&contact=$contactEmail"); 
    $response=curl_exec($ch); 

    curl_close($ch); 


    if ($response > $banOnProbability) { 
     return true; 
    } else { 
     if ($response < 0 || strcmp($response, "") == 0) { 
      //The server returned an error, you might want to do something 
      //like write to a log file or email yourself 
      //This could be true due to an invalid input or you've exceeded 
      //the number of allowed queries. Figure out why this is happening 
      //because you aren't protected by the system anymore 
      //Leaving this section blank is dangerous because you assume 
      //that you're still protected, which is incorrect 
      //and you might think GetIPIntel isn't accurate anymore 
      //which is also incorrect. 
      //failure to implement error handling is bad for the both of us 
     } 
     return false; 
    } 
} 
$ip=$_SERVER['REMOTE_ADDR']; 
if (checkProxy($ip)) { 
    /* A proxy has been detected based on your criteria 
    * Do whatever you want to here 
    */ 
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=google.com">';  
    exit; 
} 

?> 

私はあなたが助けることができると思います。

大切にしてください。

+1

場合は二回 'require'または' include'を使用していますか? –

答えて

1

requireまたはincludeを2回使用するとこの問題が発生します。これは、そのファイルを使用しincluderequireのすべてのインスタンスを見つけることによって解決し、あなたが使用して変更を確認することができます。

require_once "filename"; 

を別の方法は、関数が既に宣言されているかどうかを確認することで、もしそうなら、ドン」再宣言する。あなたはfunction_exists()を使用することによってそれを行うことができます。

if (!function_exists("checkProxy")) { 
    function checkProxy($ip) { 
    // rest of function code 
    } 
} 
+0

ありがとう! <3 – Dayum

0

内部のあなたの関数の宣言を入れ声明

if(!function_exists('checkProxy')) 
{ 
    /* 
* A PHP function that interacts with http://getIPIntel.net to look up an IP address 
* returns TRUE if the IP returns a value greater than $banOnProability, 
* FALSE otherwise, including errors 
* HTTP error codes are NOT explicitly implemented here 
* This should be used as a guide, be sure to edit and test it before using it in production 
* MIT License 
*/ 
//function requires curl 
function checkProxy($ip){ 
    $contactEmail="[email protected]"; //you must change this to your own email address 
    $timeout=5; //by default, wait no longer than 5 secs for a response 
    $banOnProbability=0.99; //if getIPIntel returns a value higher than this, function returns true, set to 0.99 by default 

    //init and set cURL options 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
    //if you're using custom flags (like flags=m), change the URL below 
    curl_setopt($ch, CURLOPT_URL, "http://check.getipintel.net/check.php?ip=$ip&contact=$contactEmail"); 
    $response=curl_exec($ch); 

    curl_close($ch); 


    if ($response > $banOnProbability) { 
     return true; 
    } else { 
     if ($response < 0 || strcmp($response, "") == 0) { 
      //The server returned an error, you might want to do something 
      //like write to a log file or email yourself 
      //This could be true due to an invalid input or you've exceeded 
      //the number of allowed queries. Figure out why this is happening 
      //because you aren't protected by the system anymore 
      //Leaving this section blank is dangerous because you assume 
      //that you're still protected, which is incorrect 
      //and you might think GetIPIntel isn't accurate anymore 
      //which is also incorrect. 
      //failure to implement error handling is bad for the both of us 
     } 
     return false; 
    } 
} 
$ip=$_SERVER['REMOTE_ADDR']; 
if (checkProxy($ip)) { 
    /* A proxy has been detected based on your criteria 
    * Do whatever you want to here 
    */ 
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=google.com">';  
    exit; 
} 

} 
+0

ありがとう! <3 – Dayum

関連する問題