gpt4 book ai didi

php - 你知道在 ip 检查后抛出 403 的简单 php 脚本吗?

转载 作者:可可西里 更新时间:2023-11-01 13:39:12 25 4
gpt4 key购买 nike

我有一个脚本,其中支付处理商提供支付确认。为了使页面安全,因为它可以访问订单信息和其他与用户相关的内容,我不得不通过 ip(/24) 限制访问,如下所示:

$ipAllowed = array(
'192.192.192',
'172.172.172'
);
$ipAllowed = str_replace(".", "\.", implode("|", $ipAllowed));

if(!preg_match("/^($ipAllowed)\.[0-9]{1,3}$/", $_SERVER['REMOTE_ADDR'])){
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this file.');
}

*ip只是一个例子

在我使用之前:

if(!in_array(@$_SERVER['REMOTE_ADDR'], array('ips here'))); //only works with full ip

!in_array 比我现在使用的要简洁得多,但我需要一些可以与/24 ips 一起使用的东西,甚至可以同时与两者一起使用!

您是否知道可以更好/更快、更可靠且更整洁的东西?

@rap-2-h 正如您所说,这是适用于完整 ip、/24 甚至/16 的更整洁的版本

$ipAllowed = array( '192.168.1.153' '172.172.172'); 
$allowed = false;

foreach($ipAllowed as $ip):
if(strpos($_SERVER['REMOTE_ADDR'], $ip) === 0) $allowed = true;
endforeach;

if (!$allowed) {
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this file.');
}

最佳答案

你可以尝试这样的事情:

$ipAllowed = array('192.192.192', '172.172.172');

$allowed = false;
foreach($ipAllowed as $ip) {
if (strpos($_SERVER['REMOTE_ADDR'], $ip) !== false) {
$allowed = true;
}
}
if (!$allowed) {
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this file.');
}

因此您的$ipAllowed 数组中只能有ip 片段。它不是很优雅,但它应该工作......

关于php - 你知道在 ip 检查后抛出 403 的简单 php 脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11411175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com