2

我正在努力使内容仅适用于我的 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

4 回答 4

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

单个等号是赋值,而不是比较。另外,您可能的意思是||$ip不能同时是两件事。

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

此外,您可能需要文件中 IP 之间的换行符,因此添加一个\n. 此外,将变量放在双引号中,如下所示:

$ip = "$_SERVER[REMOTE_ADDR]";

是没有意义的。使用变量。

于 2012-07-21T03:52:09.520 回答
4

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

if ($ip == "FirstIp" || $ip == "SecondIp") {
于 2012-07-21T03:52:41.440 回答
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; 
}
于 2016-09-30T21:59:21.310 回答
0

在某些情况下使用in_array可能更合适:

if (in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    echo "Protect Content";
} else {
    // 
}
于 2016-08-01T09:33:34.590 回答