Forum Webscript.Ru

Программирование => PHP => Тема начата: MrGreeN от 18 Апреля 2003, 15:12:02

Название: Опять я с этими слешами...
Отправлено: MrGreeN от 18 Апреля 2003, 15:12:02
К примеру-----
$list=$_SERVER[\'PHP_SELF\'];
$host=$HTTP_SERVER_VARS[\'HTTP_HOST\'];
$longname=array("$host","$list");
$longfilename=implode(\'/\',$longname);
echo $longfilename;
Выводит host//path_to_file

magic_quotes_gpc=Off
magic_quotes_runtime=Off
(с базой я вообще не работаю)

Интерестно ещё то, что если отдельно выводить $list и отдельно $host то усё путём...
Название: Опять я с этими слешами...
Отправлено: D1g174LM4n14c от 18 Апреля 2003, 16:10:18
$list уже содержит слэш вначале. будьте внимательнее!
Кстати, интересный кусок кода..
Почему для инициализации $list используеться $_SERVER
а для $host - $HTTP_SERVER_VARS
правильнее было бы записать так

$host = $_SERVER[\'HTTP_HOST\'];
Название: Опять я с этими слешами...
Отправлено: MrGreeN от 18 Апреля 2003, 16:54:39
Насчёт  $HTTP_SERVER_VARS, согласен (хотя в пхп 4 наследование ентого дела из 3 го насколько я знаю существует), проблема не в этом...
$list слешей не содержит (и проверено и доказано переменными окружения в пхп.ини)...
Если кто-то и добавляет их, то это implode();
Сформировать такую строку (без появления левых слешей) можно при помощи urlencode() без особых проблем ( так в последнее время и делаю)...
Просто интерестно  в чём бок и как от него избавиться...:)
Название: Опять я с этими слешами...
Отправлено: semya от 18 Апреля 2003, 17:09:55
MrGreeN
неверно! D1g174LM4n14c твой левый слэш нашел правильно... переменная PHP_SELF содержит начинающий слэш всегда, вот оттуда он и возникает

/temp/phpinfo.php

а urlencode к формированию строк не имеет никакого отношения.... если уж мешает слэш то чтоб долго не париться str_replace("//","/",$slashes)
Название: Опять я с этими слешами...
Отправлено: D1g174LM4n14c от 18 Апреля 2003, 18:00:19
я не понимаю, зачем вообще implode() использовать для двух строк?
весь вышеприведенный код можно было переписать намного проще:

// $list=$_SERVER[\'PHP_SELF\'];
// $host=$HTTP_SERVER_VARS[\'HTTP_HOST\'];
// $longname=array("$host","$list");
// $longfilename=implode(\'/\',$longname);
// echo $longfilename;

echo  $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'PHP_SELF\'];
ENJOY!
Название: Опять я с этими слешами...
Отправлено: MrGreeN от 18 Апреля 2003, 18:41:35
Цитировать
D1g174LM4n14c:
echo  $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'PHP_SELF\'];

Гы, гы.... мне надо не выводить строку, а формировать её для посылки в хедер (для того же и использую urlenncode())
Но со слешом слева согласен (просто перепутал две переменные, подумал что речь идёт о хосте а не о пути)
semya
За
str_replace("//","/",$slashes); спасибо но за каждым разом так же вырезать их не будешь...Зачем же тогда я  magic_quotes_gpc отключил...
Хозйке на заметку ----
Если слеши не //// а \\\\\\\\ то чтобы их обнаружить их нужно указывать вдвое больше.....Вот так...
Название: Опять я с этими слешами...
Отправлено: Tronyx от 18 Апреля 2003, 18:53:02
Цитировать
MrGreeN:
Гы, гы.... мне надо не выводить строку, а формировать её для посылки в хедер (для того же и использую

Гы, гы... $path=$_SERVER[\'HTTP_HOST\'] . $_SERVER[\'PHP_SELF\'];
Название: Опять я с этими слешами...
Отправлено: D1g174LM4n14c от 18 Апреля 2003, 19:16:07
вот-вот...
Название: Опять я с этими слешами...
Отправлено: MrGreeN от 19 Апреля 2003, 11:32:07
Ну ладно ладно уболтали.... (Гы гы...);)
Значица magic_quotes_gpc тута не причём... (а жаль...)