Про $php_self и Opera

Anton

Just Programmer
Про $php_self и Opera

Вопрос скорей из разряда смешно.

При формирование ссылок скрипта самого на себя использую $PHP_SELF выглядит так например:

echo"<a href=\"$PHP_SELF?action=delete\">DELETE</a>";

Тестирую все из Explorera, все нормально .... но по ТЗ необхадимо, что бы и Opera смотрела. Смотрю через оперу, так проформу ради, но обнаруживаю, что на место $PHP_SELF подставляеться пустое место, причем только в Опере ....
Как быть-то такое может?? Как связана $PHP_SELF и браузер, никто не объяснит????
 

konfeta

Guest
Сделай принт на все перемяннъе.....
print ($GLOBALS) и тогда смотри где проблема......
 

webdeveloper

Guest
все просто - у тебя вызов $PHP_SELF происходит из функции, так?
Ты скорее всего забыл объявить эту переменную как глобальную и поэтому у тебя проиходит вот что - рнр просто подставляет пустое место вместо этой переменной. IE воспримет ссылку типа <a href="?somepar=someval">some where </a> как ссылку на текущую страницу а вот NN и Opera это все будут воспринмать совсем по другому - как ссылку на родительский каталог.

Лечится это просто - в той функции где ты это все делаешь добавь

global $PHP_SELF;

после этого должно заработать
 

Anton

Just Programmer
Автор оригинала: konfeta
Сделай принт на все перемяннъе.....
print ($GLOBALS) и тогда смотри где проблема......
В том-то и весь прикол, что в массиве $GLOBALS все в порядке, там правильное значение $PHP_SELF заегистрированно. И при просмотре из Эксплорера или Нетскапа все в порядке, все работает, но когда дело доходит до Оперы .... тут возникает проблема о которой я писал. Я не могу понять как это может быть связанно с браузером, если html с подставленным занечением должен был быть сгенерен на сервере?????
 

Anton

Just Programmer
Автор оригинала: webdeveloper
все просто - у тебя вызов $PHP_SELF происходит из функции, так?
Ты скорее всего забыл объявить эту переменную как глобальную и поэтому у тебя проиходит вот что - рнр просто подставляет пустое место вместо этой переменной. IE воспримет ссылку типа <a href="?somepar=someval">some where </a> как ссылку на текущую страницу а вот NN и Opera это все будут воспринмать совсем по другому - как ссылку на родительский каталог.
Лечится это просто - в той функции где ты это все делаешь добавь
global $PHP_SELF;
после этого должно заработать
Нет это находиться не в функции, даже тестовый скрипт
<?
echo"<a href=\"$PHP_SELF?action=delete\">DELETE</a>";
?>
Дает такой же результат ....
 

mvc_aaa

MvC of PHPClub
Автор оригинала: Anton
Нет это находиться не в функции, даже тестовый скрипт
<?
echo"<a href=\"$PHP_SELF?action=delete\">DELETE</a>";
?>
Дает такой же результат ....
Гм...
У меня работает...

Попробуй типа
PHP:
 echo '<a href="'.$PHP_SELF.'?action=delete">DELETE</a>';
Я вообще как то привык не сливать все в одну строку, переменные и символы.

И еще что у тя выведет просто
PHP:
echo $PHP_SELF;
??
 

si

Administrator
Автор оригинала: Anton
Нет это находиться не в функции, даже тестовый скрипт
<?
echo"<a href=\"$PHP_SELF?action=delete\">DELETE</a>";
?>
Дает такой же результат ....
Думаю, что бровсер не может никак влиять на эту переменную (точнее это очень маловероятно). Скорее всего ошибка все-таки у тебя.

Приведи линк на неработающий скрипт, и на phpinfo();
 

Anton

Just Programmer
Автор оригинала: si
Думаю, что бровсер не может никак влиять на эту переменную (точнее это очень маловероятно). Скорее всего ошибка все-таки у тебя.
Приведи линк на неработающий скрипт, и на phpinfo();
Блин елы палы. Вобщем поступил я слудеющим образом ....

По адрессу
http://amaltea.icape.nw.ru/defo/test.php3
Лежит скрипт с тексом
<?
echo"<a href=\"$PHP_SELF?action=delete\">DELETE</a> <br>";
echo '<a href="'.$PHP_SELF.'?action=delete">DELETE</a> <br>';
echo "PHP_SELF = ".$PHP_SELF;
?>

По адресу
http://amaltea.icape.nw.ru/defo/test2.php3
лежит скрипт с phpinfo

Смотрю я Opera 6.01 с ней и возникают проблемы ....

Если кто сможет сказать что ценное буду очень рад и благодарен ....
 

si

Administrator
Автор оригинала: Anton
Блин елы палы. Вобщем поступил я слудеющим образом ....
По адрессу
http://amaltea.icape.nw.ru/defo/test.php3
Лежит скрипт с тексом
<?
echo"<a href=\"$PHP_SELF?action=delete\">DELETE</a> <br>";
echo '<a href="'.$PHP_SELF.'?action=delete">DELETE</a> <br>';
echo "PHP_SELF = ".$PHP_SELF;
?>
По адресу
http://amaltea.icape.nw.ru/defo/test2.php3
лежит скрипт с phpinfo
Смотрю я Opera 6.01 с ней и возникают проблемы ....
Если кто сможет сказать что ценное буду очень рад и благодарен ....
У меня из Opera 6.02, NN4.7, NN6.6.2, IE6.0, Mozila0.9.9 все нормально.

Ты бы сразу сказал что у тебя РНР на win, он и не должен работать нормально, потому как еще очень кривой.

По-пробуй поставить 4.1.2 может поможет, а может и нет.

Если это у тебя плавформа для отладки/разработки - плюнь на это, если ты используешь РНР на win как production server, то это думаю мягко говоря не правильно в корне.

P.S. Для PHP под вин есть спец-форум, пиши в будущем туда
 

Anton

Just Programmer
Автор оригинала: si
У меня из Opera 6.02, NN4.7, NN6.6.2, IE6.0, Mozila0.9.9 все нормально.
Ты бы сразу сказал что у тебя РНР на win, он и не должен работать нормально, потому как еще очень кривой.
По-пробуй поставить 4.1.2 может поможет, а может и нет.
Если это у тебя плавформа для отладки/разработки - плюнь на это, если ты используешь РНР на win как production server, то это думаю мягко говоря не правильно в корне.
P.S. Для PHP под вин есть спец-форум, пиши в будущем туда
Жить оно должно под Линухом будет ...
Так что спасибо ... наплюю на это пока и разотру ... из под Линуха действительно заработало. Спасибо за совет, осознал :)))
 

Сытник

Guest
Автор оригинала: si
Ты бы сразу сказал что у тебя РНР на win, он и не должен работать нормально, потому как еще очень кривой.
По-пробуй поставить 4.1.2 может поможет, а может и нет.
Если это у тебя плавформа для отладки/разработки - плюнь на это, если ты используешь РНР на win как production server, то это думаю мягко говоря не правильно в корне.
сер, вы не правы совершенно...
 

Anton

Just Programmer
Автор оригинала: Сытник
сер, вы не правы совершенно...
А в чем не прав сей достоподчтенный сер???? Можно обьяснить по подробнее???? А то я туту пытаюсь осознать вопрос это как раз ... был бы очень благодарен если бы все серы обосновали свое мнение ....
 

Сытник

Guest
Автор оригинала: Anton
А в чем не прав сей достоподчтенный сер???? Можно обьяснить по подробнее???? А то я туту пытаюсь осознать вопрос это как раз ... был бы очень благодарен если бы все серы обосновали свое мнение ....
Да просто легко написать - глючит мол и все... Может где-то и глючит, но я лично с таким не сталкивался...

Поставь в php.ini:
reqister globals = Off
magic quotes gpc = Off
error reporting = E_ALL
display error = On

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

А если уж где-нить и глючит, то алгоритмов много, а не только тот что под *nix работает...

Все остальное - от лукавого...

PS: Если у тебя проблемы с PHP_SELF, то мог бы проверить заодно SCRIPT_NAME, и REQUEST_URI. Лично у меня никогда проблем с переменными окружения сервера не возникало (правда я для верности всегда юзаю $HTTP_SERVER_VARS["var"] или $_SERVER["var"]...
 

Anton

Just Programmer
Автор оригинала: Сытник
Да просто легко написать - глючит мол и все... Может где-то и глючит, но я лично с таким не сталкивался...
Поставь в php.ini:
reqister globals = Off
magic quotes gpc = Off
error reporting = E_ALL
display error = On
Если вести разработку с такими настройками, то можно предусмотреть любые конфигурации сервера и избежать кучи дыр и ошибок.
А если уж где-нить и глючит, то алгоритмов много, а не только тот что под *nix работает...
Все остальное - от лукавого...
PS: Если у тебя проблемы с PHP_SELF, то мог бы проверить заодно SCRIPT_NAME, и REQUEST_URI. Лично у меня никогда проблем с переменными окружения сервера не возникало (правда я для верности всегда юзаю $HTTP_SERVER_VARS["var"] или $_SERVER["var"]...
Круть .... спасибо. Учту.
 

tony2001

TeaM PHPClub
не знаю что там и где не работает, но я из-под Оперы захожу и все ок.
Опера под Линухом.
 

Anton

Just Programmer
Автор оригинала: Сытник
зашел из дома... winXP, Opera 6, работает все...
Я сам в шоке, с этого сервака у меня работает тоже ...с другого нет ... блин, я с этим $PHP_SELF с ума сойду ....
 
Сверху