forum.rastrnet.ru

forum.rastrnet.ru (http://forum.rastrnet.ru/index.php)
-   Программируем (http://forum.rastrnet.ru/forumdisplay.php?f=35)
-   -   PHP5 (http://forum.rastrnet.ru/showthread.php?t=15380)

Slava 21.03.2006 20:23

PHP5
 
У меня тут проблемка возникла. Сделал сайт, тестил у себя на компе на PHP4, всё нормально. Залил на сервак, там PHP5 стоит, не видит переменные которые через адрес передаю. Например - www.fsdfdfs.ru/gal.php?n=4, так вот переменную n не видит. Поставил у себя PHP5, тоже самое. Может кто подскажет, как там это можно в PHP5 реализовать, а то у меня никакой литературы по этой версии нет.

Paul 21.03.2006 20:44

Это дело в массиве $_GET (или же $_REQUEST, например). Так даже идеологически правильно. Если хочешь, чтобы все переменые этого массива глобилизовались (были доступны) - крути конфиг php.ini. Или вручника глоболизируй.

Slava 21.03.2006 21:14

На серваке php.ini мне наврядли дадут редактировать, тем более хостинг халявный. А вот на счёт вручную, можно поподробнее? Если ты имел ввиду <? global $n; ?>, то не помогает. Видить то он начинает, только вот значения у них нет никаких. Вообщем если не трудно напиши поподробнее, а то я в этом не силён.

Paul 22.03.2006 20:06

Цитата:

Сообщение от Slava
Если ты имел ввиду <? global $n; ?>, то не помогает. Видить то он начинает, только вот значения у них нет никаких. Вообщем если не трудно напиши поподробнее, а то я в этом не силён.

Можно примерно так (неотлажино, но видно, что Вы не дятел опилочный):

foreach($_GET as $k=>$v){
$v = &$_GET[$k];
global $v;
}

Но ещё раз повторюсь, этого не нужно. Зачем? Бери сразу из $_GET, хотя всякое бывает, например, много чего наскриптено (неправильно, к сожалению).

Paul 24.03.2006 15:06

Цитата:

Сообщение от Pavel L
Можно примерно так:

foreach($_GET as $k=>$v){
$v = &$_GET[$k];
global $v;
}

Врешь, это ж бред. Нужно так:

foreach($_GET as $k=>$v){
$k = &$_GET[$k];
global $k;
}

Slava 26.03.2006 08:16

У меня вот так всё заработало:

$n=@$_GET[n]; , и всё в $n теперь находится передоваемое значение.

Paul 26.03.2006 11:53

Цитата:

Сообщение от Slava
У меня вот так всё заработало:

$n=@$_GET[n]; , и всё в $n теперь находится передоваемое значение.

Чё за? Вы хоть понимаете что это значит?
$_GET[n] - вызывет ошибку, кроме случая, когда n - константа. Ибо писать нужно $_GET['n'].
@$_GET[n] - вот эта собака и закрывает вышеописаную ошибку. У собаки такая обязаность.

Это в принципе полный бред. Если это заработало - это баг. Скрипт в студию.

Лучше берите дело из 4 поста, вставляйте в начало скрипта - проблем не будет.

P.S. А ещё лучше почитать книжки.

Slava 26.03.2006 18:03

Ну так я вкурсе, что именно @ и закрывает ошибку, но ведь результат достигнут, скрипт в том виде в котором мне хотелось бы работает, и всё чётко. Да и выдаёт он не ошибку, а предупреждение, перевёл в Promte, ничего не понял, на что ругается, ну да и ладно.

Slava 26.03.2006 18:07

А вот если $_GET['n'], то вообще не ругается. Спасибо за подсказку и поправку, на будущее буду знать.

DAKnn 27.03.2006 00:52

если это дело под виндой..
то для каждого сайта можно завести свой php.ini - и положить в корень этого сайта.. тогда php.exe при запуске будет обрабатывать именно нужный php.ini а не глобальный - в windows/php.ini
--
проверено.. у меня так несколько сайтов крутилось..
и ваще это все это бред.. ASP.NET рулит.. :)


Текущее время: 11:39. Часовой пояс GMT +7.

Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot

Форум открыт в июле 2004 г.