Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP IP地址捕获语句_Php_Ip Address_Capture - Fatal编程技术网

PHP IP地址捕获语句

PHP IP地址捕获语句,php,ip-address,capture,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="lis

我正试图使它的内容只为我的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

if ($ip = "FirstIp" && $ip="SecondIp") {
单个等号是赋值,而不是比较。另外,您的意思可能是
|
<代码>$ip不能同时是两件事

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

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

$ip = "$_SERVER[REMOTE_ADDR]";

这是毫无意义的。使用变量。

如果您的
语句因为使用单个
=
而覆盖
$ip
变量,则使用
;将其更改为
=
,并将
&&
更改为
|
(一个IP不能同时为两个):

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

if (in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    echo "Protect Content";
} else {
    // 
}
像斯巴库普回答

$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; 
}

“请调整代码;P”否。请告诉我们什么不起作用以及您尝试了什么。看看其他关于写入文件的StackOverflow问题。最近几天我注意到,很多人对
|
缺乏了解,
&&
使用…@minitech在这种情况下不需要使用tripple=。您不是在寻找布尔值,只是寻找一个简单的字符串。@DainisAbols:我喜欢它,因为它更严格。仅仅因为我不需要这样做并不意味着我不应该这样做。事实并非如此,如果出于某种原因将IP值设置为
0
,您仍然会得到true,即使您不需要它为true。在这种情况下,您严格地寻找的是字符串值,而不是字符串为真。@DainisAbols:不,真的。这是一种编码约定,我对此非常满意,谢谢。“检查布尔值是一种不好的做法”——你确定你使用了正确的术语吗?这是缺失的)在“ThirdIp”])
$ip = $_SERVER['REMOTE_ADDR'];
if (!in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    include('404.html');
    exit; 
}