2017-11-07 6 views
-4

を働いていない:私の作っPHPブロッカーこのコードが機能している

https://www.skools.cu.ma/contents/posts/Comma.php

<?php 
    require ('./../../blocks/block_function.php'); 
?> 

https://www.skools.cu.ma/blocks/block_function.php

<?php 
    $badcomment_comma_post = array("137.97.11.13", "222.222.222", "333.333.333"); 
    if (in_array ($_SERVER['REMOTE_ADDR'], $badcomment_comma_post)) { 
     die("<script>window.location = 'https://www.skools.cu.ma/blocks/bad_comment.php';</script>You have been blocked"); 
    } 
?> 

をしかし、私は、IPアドレスとリダイレクタコードを分離しようとしたとき、それはdidnのPHPのエラーメッセージはありません:

https://www.skools.cu.ma/blocks/block_function.php

<?php 
    $file = file_get_contents('./../../blocks/bad_commented_ip.txt'); 
    $badcomment_comma_post = array($file); 
    if (in_array ($_SERVER['REMOTE_ADDR'], $badcomment_comma_post)) { 
     die("<script>window.location = 'https://www.skools.cu.ma/blocks/bad_comment.php';</script>You have been blocked"); 
    } 
?> 

https://www.skools.cu.ma/blocks/bad_commented_ip.txt

"137.97.11.13", "222.222.222", "333.333.333" 

助けてください?

+0

このビットは動作しません: '配列($ファイル);' ...代わりに内容を爆発します。 – IncredibleHat

+0

それを解決する方法? – user8783930

答えて

1

あなたに実行している問題は、このビットは次のとおりです。

$file = file_get_contents('./../../blocks/bad_commented_ip.txt'); 
$badcomment_comma_post = array($file); 

何(あなたprint_r($badcomment_comma_post);場合)それは実際にやっていることはファイル全体の値を持つ1つの配列要素を作っています。各IPのない複数の配列要素:

Array 
(
    [0] => "137.97.11.13", "222.222.222", "333.333.333" 
) 

ファイルは"137.97.11.13", "222.222.222", "333.333.333"の形式に実際にある場合は、行うには、次の例を考えてみます。

// Example 1, explode! 
$file = file_get_contents('./../../blocks/bad_commented_ip.txt'); 
$cleaned = str_replace(array('"',' '),'',$file); 
$badcomment_comma_post = explode(',',$cleaned); 

何それはやっていることは、ファイルに読んでいますすべての引用符とスペースを取り除き、コンマで展開して、必要な配列を作成します。

それを行うための別の方法は、ファイルにJSONである(しかし、あなたのファイルの内容が正確に右ではありません):

// Example 2, json! 
$file = file_get_contents('./../../blocks/bad_commented_ip.txt'); 
$json = '['. $file .']'; 
$badcomment_comma_post = json_decode($json); 

ことは、ファイルの内容を取るあるんどのようなので、とてもカッコでそれらをラップしますより良いjson形式であることを確認し、最後にそのjson配列をphp配列にデコードします。

上記の2つの例では、出力print_r($badcomment_comma_post);ます:

Array 
(
    [0] => 137.97.11.13 
    [1] => 222.222.222 
    [2] => 333.333.333 
) 
関連する問題