Еще раз про переменные среды (SERVER)

Jonior

Новичок
Еще раз про переменные среды (SERVER)

Возникла проблема, один скрипт должен работать на нескольких доменах, в принципе все работет
имена доменов получал вполне просто из переменной
$HTTP_HOST но потом возникла проблема, перенесли на новый хостинг и у моего товарища перестало все работать (на старом все как работало так и работает), как выяснилось эта переменная не содержала нужную информацию, а попросту её там не было. При этом с моего компьютера (на новом и на старом) все продолжало работать как ни в чем не бывало.
Попробовал сделать так - $_SERVER['HTTP_HOST'] и опять с моего компьютера все работает, с его нет. ...покопался в инете ..сделал так
PHP:
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != ""){ 
       $IP = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; 
       $proxy = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
       $host = @gethostbyaddr($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]); 
   }else{ 
       $IP = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
       $host = @gethostbyaddr($HTTP_SERVER_VARS["REMOTE_ADDR"]); 
   }

Результат точно такой -же
Проблема в том, что значит надееться на эти переменные бессмысленно, они могут подвести в нужный момент.

Подскажите, как надежно получить имя сервера, с которого выполняеться скрипт. Видит бог уже часа 3 лазию по ФАКам но ничего полезного не нашел.
 

master_x

Pitavale XXI wieku
если бы ты пролазил три часа в факах, ты бы понял, что вместо устаревших переменных надо использовать новые суперглобалы и вообще пора бы уже обновить пхп.
 

Jonior

Новичок
очень содержательный ответ ... PHP устанавливает хостер и заставить его, а тем более всех хостеров которыми я пользуюсь, ставить нужный мне PHP, я не могу. Если способ без зависимости от версии PHP? А если не знаете надежного метода, может лучше промолчать и не строить из себя умника.

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

BlackSabbath

Новичок
Jonior
$HTTP_HOST будет инициализирована только если у тебя register_globals=on

Начиная с PHP 4.1 имя хоста можно найти здесь: $_SERVER['HTTP_HOST']

А кусок кода, который ты привёл c HTTP_X_FORWARDED_FOR связан не с именем хоста сервера, а с именем хоста клиента, если на сервер он ходит через proxy.
 

Jonior

Новичок
>Начиная с PHP 4.1 имя хоста можно найти здесь: $_SERVER['HTTP_HOST']

Попробовал сделать так - $_SERVER['HTTP_HOST']

вот это то мне и странно - эта переменная тоже не срабатывает, вернее, когдя я обращаюсь со своей машины - все срабатывает , а вот с его нет и с еще одного места не срабатывает :(

Насчет длинного примера - я действительно не туда полез - но это лишний раз показало, что он не получает никаких. Наверно саоме надежное оставить это решение со строкой в файле конфигурации :(

-~{}~ 15.11.05 20:09:

>register_globals=on
это в php.ini

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

Jonior

Новичок
Посмотрел ..все переменные видно ...тогда вообще ничего не понимаю, попробую, что бы он посмотрел от себя
PHP:
 phpinfo();
и PHP у них Version 5.0.3
 

BlackSabbath

Новичок
Jonior
Стоп!!!!
Ты настраиваешь свой скрипт на двух компах, или смотришь результат его работы с двух компов?!
 

Jonior

Новичок
Скрипт загружен на 2 разных сервера (физически разных) и смотрим оба с разных компьютеров - на моем работает все и первый и второй сервер, на его - на первом работает, а вот на втором нет .

-~{}~ 15.11.05 20:30:

Да таких как я называют - "человек тупик" :))))
Попробую так - уберу весь скрипт и оставлю

echo "$_SERVER[HTTP_HOST]"; Если у него ничего не напишет - пойду искать работу дворника, дабы не свихнуться.
 

Фанат

oncle terrible
Команда форума
это не причина твоей проблемы, а просто поправка:
кавычки в последней строчке надо перенести внутрь квадратных скобок.
 

Jonior

Новичок
Ковычки в принципе вообще не обязательны, просто я так привык писать echo ..есть там простой текст или только идентификатор, я всегда ставлю двойные ковычки. Ковычки же к имени элемента массива вовсе не обязательны. Проверено - работает и без них.
 

SiMM

Новичок
> Ковычки в принципе вообще не обязательны ... Ковычки же к имени элемента массива вовсе не обязательны. Проверено - работает и без них.
[m]language.types.array#language.types.array.foo-bar[/m]
 

Фанат

oncle terrible
Команда форума
о как мы заговорили.
с таким-то подходом вообще странно, что раньше хоть что-то работало.

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

Jonior

Новичок
PHP:
<?php 
echo "$_SERVER[HTTP_HOST]"; 
 ?>
старница не содержит счетчиков и рекламы, да и вообще она содержит только текст приведенный выше.Если кому не лень, скажите Вам она показывает, то что должна показать ?
http://ugansk-rogwu.ru/test1.php

-~{}~ 15.11.05 20:46:

Фанат

Это больше похоже на бычку а не на совет.
Делать я буду делать так, как мне будет угодно и работает у меня все, чтоя делаю. Я лишь заметил, что в данном конкретном примере расстановка ковычек не принципиальна.
Хочеться узнать - на этом форуме это обычная форма диалога ...соплив и все такое или это отдельные личности думают, что постигли уже все секреты мастерства написания скриптов на PHP.
 

Фанат

oncle terrible
Команда форума
мда, я оказался неправ.
вполне законный синтаксис, оказывается.
 

master_x

Pitavale XXI wieku
Фанат
законный, но СИММ показал, чем он неправилен.

А вот товарищ похоже попался тяжелый. Потому как ссылки на мануал не воспринимает, все советы очень даже по-хамски комментирует.

Jonior
Да кстати, выводится именно то, что должно выводится, ugansk-rogwu.ru
 

Фанат

oncle terrible
Команда форума
с моего компьютера все работает, с его нет
приятель просто дурит кое-кого.
поскольку без поля Host он просто не смог бы увидеть сайта.

пиши в лог все обращения и эту переменную. и увидишь, что всё там есть.

покопался в инете ..сделал так
копался ты не в ту сторону.
все эти переменные не имеют к хосту ни малейшего отношения.

-~{}~ 15.11.05 22:04:

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

master_x

Pitavale XXI wieku
Фанат
в том то и дело, что синтаксис уродский и вносит путаницу в код. Там же написанно, почему это плохо. Да, в строке можно писать что-то типа echo "$_SERVER[HTTP_HOST]"... Но тогда вообще возникает вопрос, а целесообразно ли это, если нормально писать echo $_SERVER['HTTP_HOST'].
 
Сверху