【问题标题】:My made PHP Blocker not working我制作的 PHP Blocker 不工作
【发布时间】:2026-01-13 17:45:01
【问题描述】:

此代码正在运行:

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 地址和重定向器代码时,它不起作用,我没有收到任何 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"

请帮忙?

【问题讨论】:

  • 这个位不起作用:array($file); ... 改为分解内容。
  • 那怎么解决呢?

标签: php php-7 php-5.3


【解决方案1】:

你遇到的问题是这样的:

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

实际上正在做的事情(如果你print_r($badcomment_comma_post);)正在制作一个数组元素,其值为整个文件。不是每个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 数组。

上面两个例子会输出print_r($badcomment_comma_post);:

Array
(
    [0] => 137.97.11.13
    [1] => 222.222.222
    [2] => 333.333.333
)

【讨论】: