php загадка

autocalc
На сайте с 11.05.2011
Offline
52
794

Есть код, который определяет IP, в случае, если используется прокси, скрипт выводит реальный IP, после прокси IP. В скрипте есть условие, что если IP содержится в черном списке, необходимо вывести уведомление. Загадка состоит в том, что при использовании прокси условие действительно, но не срабатывает.

При проведении экспериментов, корректируйте список черных IP.

!Внимание, форум исправляет скобки [ и ] на ***91; и ***93; соответственно.

<?php

function _ip()
{
if(isset($HTTP_SERVER_VARS)) {
if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) {
$realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) {
$realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}else{
$realip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
}else{
if(getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
}elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$realip = getenv( 'HTTP_CLIENT_IP' );
}else {
$realip = getenv( 'REMOTE_ADDR' );
}
}
return $realip;
}

$ip=_ip();

$real=explode(',',$ip);

function real_ip_get($ipp) {

$black_ip=array(
'173.131.135.109',
'125.210.188.36',
'125.210.188.136');

for($i=0;$i<count($black_ip);$i++){
if($ipp == $black_ip[$i]){
echo 'Black IP! ';
break;
}
echo $i.'<br/>';
}
echo $ipp;
}

if(isset($real[1])){
real_ip_get($real[1]);
}
else{
real_ip_get($real[0]);
}
?>

Изначально делал классом, но т.к. по известной причине код не работал, перестроил на процедурный метод, но результат тот же.

Ragnarok
На сайте с 25.06.2010
Offline
239
#1

if($ipp == $black_ip***91;$i***93;){

попробуй вместо этого

if(str_istr($ipp,$black_ip***91;$i***93;)){
//TODO: перестать откладывать на потом
LEOnidUKG
На сайте с 25.11.2006
Online
1774
#2

Не пробовали например trim применять перед сравнением?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
autocalc
На сайте с 11.05.2011
Offline
52
#3
Ragnarok:
Код:
if(str_istr($ipp,$black_ip***91;$i***93;)){
LEOnidUKG:
Не пробовали например trim применять перед сравнением?

Все описанное прошло тестирование.

LEOnidUKG
На сайте с 25.11.2006
Online
1774
#4
autocalc:
Все описанное прошло тестирование.

т.е. и сейчас не работает?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий