| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | «  : 28-04-2004 14:24 »  |  | 
 
 Столкнулся с тем, что при наборе http://shelek.com/test.php?test_var=10 значение $test_var  - в частности у меня дома и на мастерхосте равно 10 без всяких доп. ухищрений! Но на рабочем компе и иногда читал про такую проблему, когда для получения значений таких переменных требуются определенные телодвижения!!! Расскажите поподробнее - дабы не было потом мучительно и больно!!!! |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| Skubent 
								Гость
 | 
								|  | « Ответ #1 : 29-04-2004 06:35 »  |  | 
 
 Гром, ну уж тебе-то RTFM говорить   If the register_globals  directive is set, then these variables will also be made available in the global scope of the script; i.e., separate from the $HTTP_*_VARS arrays. This feature should be used with care, and turned off if possible; while the $HTTP_*_VARS variables are safe, the bare global equivalents can be overwritten by user input, with possibly malicious intent. If you cannot turn off register_globals, you must take whatever steps are necessary to ensure that the data you are using is safe.  Проще говоря, ежели в конфигурации php та самая регистер_глобалс включена, то переменые из запроса (хоть GET, хоть POST) существуют в теле скрипта, если выключена, то только в HTTP_*VARS массивах. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Fireworm 
								Гость
 | 
								|  | « Ответ #2 : 29-04-2004 08:06 »  |  | 
 
 Или в массивах $_GET и $_POST, которые к томуже являются супер глобальными, т.е. доступны в любых методах-функциях. И кстати на подобный вопрос я уже не мение 10 раз отвечали на этом форуме...   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #3 : 29-04-2004 09:08 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #4 : 29-04-2004 09:47 »  |  | 
 
 Skubent, если я весь форум буду лопатить у меня точно на все времени не хватит - а в вебе я новичек - просто мне счас локально на работе серверок настроить на работу надоть - где и как что надо сменить - что бы все переменные зажили в теле скрипта   ? |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #5 : 29-04-2004 10:00 »  |  | 
 
 Гром, какойты ленивый   вот тебе проверенный метод: это import_request_variables("gG", "rvar_");  делает доступными все переменные полученные через GET или POST gG - get GET gP - get POST rvar_ - этот префикс появится перед всеми пременными, например: запрос http://shelek.com/forum/viewtopic.php?foo1=value1&foo2=value2&foo2=value2 обработка import_request_variables("gG", "rvar_");  print $rval_foo1; print $rval_foo2; print $rval_foo3; пременные $HTTP_GET_VARS[] $HTTP_POST_VARS[] $HTTP_COOKIE_VARS[] $HTTP_ENV_VARS[] $HTTP_SERVER_VARS[] $HTTP_POST_FILES[] могут быть недоступны если не установленно в настройках сервера  track_vars = true track_vars  boolean
 
 If enabled, GET, POST and cookie input can be found in the global associative arrays $HTTP_GET_VARS, $HTTP_POST_VARS and $HTTP_COOKIE_VARS, respectively.
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #6 : 29-04-2004 10:23 »  |  | 
 
 LogRus, я правда не знаю - я не ленивый - да и где в апач + php собранный в виде модуля искать вот эту строчку??? |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #7 : 29-04-2004 10:46 »  |  | 
 
 Гром, а ты сделай чтобы везде работало и всёв начале скрипта поставь например
 import_request_variables("gG", "");
 и не заморачивайся где это настраивается я незнаю. но поищу
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #8 : 29-04-2004 10:56 »  |  | 
 
 Гром, нашел.находится это в файле конфигурации php.ini или еще каком можно увидеть через phpinfo().
 но везде написано что начиная с версии 4.0.3 переменная track_vars включена поумолчанию.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Skubent 
								Гость
 | 
								|  | « Ответ #9 : 29-04-2004 10:59 »  |  | 
 
 register_globals = Onв php.ini должно быть.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #10 : 29-04-2004 11:18 »  |  | 
 
 LogRus, проблема в том, что php.ini не могу найти - я собрал модулем - phpinfo выдал путь но там файла такого нету    мож его создать!!! Мысль чтоб везде работало - это хорошо - наверное так и сделаю!!! Проверю! |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #11 : 29-04-2004 11:29 »  |  | 
 
 Гром, наверняка можно создать.Skubent, раскажи про register_globals а то я чего так и не догнал чего оно даёт.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #12 :  29-04-2004 11:31 »   |  | 
 
 Гром, скопируй его туда со своей локальной машины. |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #13 : 29-04-2004 11:33 »  |  | 
 
 Получилось - всем спасиба!!!! |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #14 : 29-04-2004 11:36 »  |  | 
 
 Гром, э так не пойдет. Сам всем всегда говорит что решил проблему поделись с другими. а сам игнорирует. |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Fireworm 
								Гость
 | 
								|  | « Ответ #15 : 29-04-2004 11:42 »  |  | 
 
 Гром, Лучше всетаки выключить register_globals, и пользоваться $_GET и $_POST. т.к. в противном случает получается потенциальная очень большая дыра... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Skubent 
								Гость
 | 
								|  | « Ответ #16 : 29-04-2004 12:04 »  |  | 
 
 LogRus, Массивы HTTP_*_VARS доступны всегда. Кстати, _GET и _POST рекомендуется рассматривать как алиасы оных, там какие-то отличия есть, но разработчики обещают к очередной версии их убрать совсем. Различия, в смысле.
 При выключенной register_globals переменные из запроса находятся там и только там.
 При включенной register_globals переменные запроса сразу же доступны в скрипте. Что не есть хорошо, ибо в этом случае нет разницы между GET и POST переменными. Более того, совсем нехорошо то, что клиент, подавая запрос, может затереть (либо исказить) используемые в скрипте переменные. Как заметил Fireworm, это потенциальная дыра.
 
 Да, Гром, поскольку на мастерхосте указанная переменная включена, я рекомендовал бы в .htaccess прописать строчку
 php_value register_globals off
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Гром 
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								    Offline 
								Пол:   
								Бодрый птах
								
								
								
								
								
							 | 
								|  | « Ответ #17 : 29-04-2004 13:59 »  |  | 
 
 LogRus, ну дык я поставил строку import_request_variables("gG", ""); и все заработало в скрипте! По конфигурации php.ini так и не нашел - так как библиотека собирается как модуль для апач!!!!Fireworm , я это делаю локально - т.е. иногда в окнах между работой и работой хочется пописать свой форум - я его начал потихоньку делать - но видимо придется одному в разработке опять пусто! Ну насколько надо быть инертными - дальше слов дело не идет   Skubent , я проверю masterhost но дело в том, что и сайт пока построен на таком же вот движке !!!! Т. е. все переменные идут как бы предопределенными!  В чем дыра - показывайте  - это первый вопрос! Во вторых шла речь о rack_vars - как онги связаны с register_globals ! Это два.  И третье - сайт написан с использованием переменных из GET& POST напрямую!!!! Я могу переделать это но пока не мне надо уяснить - что бы весь движок сделать одинаковым как форум так и сайт - я ведь их связываю между собой (см тему в форуме Разрботка) - и тут надо обдумать как это реализовать!!!! Но это уже офтопик пошел  :?  и все таки - я скажу - мне нужны советы, дабы полный нормальный движок вышел уже настолько крутым - что ой!!!    Вернее - что бы все возможности и пожелания удовлетворить - давайте пишите (только не сюда а в Разработку!) |  
						| 
								|  |  
								|  |  Записан | 
 
 А птичку нашу прошу не обижать!!! |  |  | 
	| 
			| 
					
						| Skubent 
								Гость
 | 
								|  | « Ответ #18 : 30-04-2004 06:34 »  |  | 
 
 Гром, на мастерхосте php собран по умолчанию, с включенной register_globals. Это совершенно точно, у меня там крутится пяток сайтов.
 Потенциальная дыра - рассказываю.
 Допустим у тебя данные о пользователе хранятся в сессии. Ты, как правильный, делаешь @session_start(); и начинаешь использовать переменную, допустим, $userid. Куль-хацкер, формируя запрос http://что-то-там/logon.php?userid=1 присваивает свое значение указанной переменной.
 GET и POST переменные перекрывают значения из сессий и из куков. Как этим пользоваться - сами, надеюсь, понимаете.
 
 Далее, разговор о track_vars можно считать оконченым с момента появления php 4.0.3 - там эта директива включена _всегда_. До этого она контролировала будут ли заполняться массивы HTTP_GET_VARS, HTTP_POST_VARS и HTTP_POST_FILES.
 register_globals контролирует, будут ли переменные из запроса объявлены в теле скрипта как глобальные (вот только точно не помню, переменные или константы).
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |