Проблема с IP адресом пользователя <? php include...

S
На сайте с 10.01.2013
Offline
4
842

Если, кто сталкивался с таким нюансом или просто понимает в чем дело - прошу подсказать. т.к сам не могу понять.

есть скриптик, который проверяет есть ли ip в массиве запрещенных, если нет - выдает картинку, если есть - другую. файл php который лежит на другом хостинге планировал вызывать на нескольких других сайтах. чтоб не захламлять

<? include ("http:.. путь ..hla1.php"); ?>

http:..путь..hla1.php - здесь он срабатывает корректно, но при вызове с другого сайта видит ip сервера вместо ip пользователя - и не показывает в итоге то, что нужно.:mad::mad:

ни одна переменная из массива _SERVER в этом случае не содержит ip пользователя.

Я думаю, что для тех, кто разбирается, это не сложно - но сам не могу разобрать.

Спасибо за любой совет

TF-Studio
На сайте с 17.08.2010
Offline
321
#1

как вы ip определяете?

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
siv1987
На сайте с 02.04.2009
Offline
427
#2

<?php include ("http:.. путь ..hla1.php?ip_address=".$_SERVER['REMOTE_ADDR']); ?>

S
На сайте с 10.01.2013
Offline
4
#3
TF-Studio:
как вы ip определяете?

<?php

$ad01 = <<<HERE

=== нужный текст или баннер ===

HERE;

$myip = $_SERVER['REMOTE_ADDR'];

// массив IP:

$banned_ips = array('193.174.152.190', '193.200.184.112');

// проверяем, входит ли IP :

if (!in_array($myip, $banned_ips))

{

echo $ad01;

}

?>

______________

вот и все содержимое файла. просто не хочется все это в месте вывода вставлять. а код баннера может быть большим

S
На сайте с 10.01.2013
Offline
4
#4
siv1987:
<?php include ("http:.. путь ..hla1.php?ip_address=".$_SERVER['REMOTE_ADDR']); ?>

в этой ситуации надо вывести блок из другого файла, а не ip

тем более (в чем вообще и был мой вопрос) при таком вызове $_SERVER['REMOTE_ADDR'] выводит адрес сервера в моем случае - а очень хотелось бы именно адрес пользователя.

проблема именно в том, что когда я этот пхп-файл взвываю сам по себе (с адресной строки) он правильно определяет адрес и выводит то, что нужно. А при вызове с кода другого сайта ниодна переменная массива $_SERVER не дает ip пользователя.

siv1987
На сайте с 02.04.2009
Offline
427
#5
sidus:
в этой ситуации надо вывести блок из другого файла, а не ip

Вы этой ситуации надо думать, а что вы там выводите это ваши проблемы. При вызове скрипта с другого сервера, вы всегда будете получать IP вызывающего сервера а не пользователя. Поэтому ип пользователя нужно передать в качестве аргумента.

sidus:
А при вызове с кода другого сайта ниодна переменная массива $_SERVER не дает ip пользователя.

Ни дает, потому что ему неоткуда там быть. ИП пользователя получает скрипт который пользователь непосредственно к нему обратился, в данном случае к вашему скрипту обращается сервер а не пользователь.

S
На сайте с 10.01.2013
Offline
4
#6

спасибо!

хоть не буду таким образом больше пробовать.

а возможно у кого-то было похожее затруднение? - дайте совет в каком направлении копать дальше)

edogs software
На сайте с 15.12.2005
Offline
719
#7

Вызывать как

include("http://site.ru/script.php?remoteip=".$_SERVER['REMOTE_ADDR']);

В самом скрипте писать не

$myip = $_SERVER['REMOTE_ADDR'];

А в самом скрипте

if(!isset($_GET['remoteip'])) $myip = $_SERVER['REMOTE_ADDR'];

else $myip = $_GET['remoteip'];

p.s.: разумеется если сам скрипт будет вызываться не только Вашим сервером через инклуд, то тут легко подделать ИП просто передав его параметром, так что тогда вводите доп. проверки на то откуда вызывается скрипт.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход.
S
На сайте с 10.01.2013
Offline
4
#8

Да, вот siv1987 мне таким образом и советовал. я еще тогда не знал, что так можно передать переменную.

edogs, Спасибо и Вам - сработало. Получилось, правда, на пару символов больше чем хотелось бы в идеале)))

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