PHP IP地址捕获声明

时间:2012-07-21 03:49:29

标签: php ip-address capture

我正在尝试这样做,因此内容仅适用于我的IP地址,而且还有其他人。我试过了:

<?php
$ip = $_SERVER['REMOTE_ADDR'];

if ($ip = "FirstIp" && $ip="SecondIp") {
echo "Protect Content";
} else {
echo "You do not have permission to look at this.  Your IP has been recorded. $ip";
$fileofips="list.txt";
$ip = "$_SERVER[REMOTE_ADDR]";

$file=fopen($fileofips, 'a');
fwrite($f, $_SERVER[REMOTE_ADDR]);

fclose($f);
}
?>

它甚至不会捕获入侵的IP。请调整代码; P

4 个答案:

答案 0 :(得分:4)

if ($ip = "FirstIp" && $ip="SecondIp") {

单个等号是一个赋值,而不是比较。另外,你可能意味着||; $ip不能同时出现两件事。

if($ip === "FirstIP" || $ip === "SecondIP") {

此外,您可能希望文件中的IP之间有换行符,因此请添加\n。另外,将变量放在双引号中,如下所示:

$ip = "$_SERVER[REMOTE_ADDR]";

毫无意义。使用变量。

答案 1 :(得分:4)

您的if语句会覆盖$ip变量,因为您正在使用单个=;将其更改为==,将&&更改为||(一个IP可以同时为两个):

if ($ip == "FirstIp" || $ip == "SecondIp") {

答案 2 :(得分:1)

像Sparkups回答;

$ip = $_SERVER['REMOTE_ADDR'];
if (in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    // add hidden content here 
} else {
    echo "Access denied";
}

或者,更好的是,如果IP不在数组中,则发布消息并退出。只需执行以下操作:

$ip = $_SERVER['REMOTE_ADDR'];
if (!in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    echo "Access denied";
    exit; 
}

或者包含一个404页面,使其看起来没有任何内容:

$ip = $_SERVER['REMOTE_ADDR'];
if (!in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    include('404.html');
    exit; 
}

答案 3 :(得分:0)

在某些情况下,使用 in_array 会更合适:

if (in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    echo "Protect Content";
} else {
    // 
}