我正在尝试这样做,因此内容仅适用于我的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
答案 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 {
//
}