strpos函数来检查域和ip

时间:2017-12-12 17:15:58

标签: php

这里有什么问题:

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$ip = $_SERVER['REMOTE_ADDR'];
echo $ip; // 217.16.137.74

if (strpos($url, 'localhost') == true || strpos($ip, '217.16.') == true) {
   return;
}else{
   write();
}

所以我在远程服务器上,我的IP是217.16.137.74。 上述脚本未按预期取消,但执行了write()功能。

1 个答案:

答案 0 :(得分:2)

你应该使用

strpos($ip, '217.16.') !== false

使用严格比较!==

以上检查$ip堆栈)中搜索到的字符串( needle )是否不存在

为什么代码失败:

strpos会返回搜索到的文本的位置(从0开始),如果找不到文本,则返回false

由于$ip217.16.开头,然后strpos返回0,当使用宽松比较false ==被视为等于$.ajax({ type: "POST", url: 'http://localhost/tracker/functions.php', dataType: 'text', data: { name: "John Doe", age: "19" }, success: function (obj, textstatus) { console.log(textstatus); }, error: function (xhr, status, error) { console.log(xhr, status, error); } }); >