Гром
							
								Птычк. Тьфу, птычник... Вот! 
								Готовлюсь к пенсии
								
								  
								  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 контролирует, будут ли переменные из запроса объявлены в теле скрипта как глобальные (вот только точно не помню, переменные или константы). 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |