::: PHP.com.ua - учимся вместе. ::: ::: PHP.com.ua - учимся вместе. :::



 
   - Вакансия PHP-программист, Днепропетровск...
  - Проблема с передачей переменной в PHP ск...
  - Как хранить конфигурацию cms'ки?
  - Проблема с сортировкой массива
  - коллизии md5
  - Странный глюк функции date
  - Скроллинг в iframe


Главная
Новости
Статьи
Шпаргалки
Файлы
О проекте
Форум
Футболки


FREEhost.com.ua - купил хостинг 10 у.е. на Begun в подарок.

iName.com.ua - регистрация доменных имен и хороший хостинг.

Библиотека программиста - нужный вам исходник или документация по необходимому для вас языку программирования.

Designclub - Клуб дизайнеров Украины.

Регистрация доменов
Хостинг

 HowtoForge.ORG.UA - Это первый Украинский ресурс развития open source программного обеспечения


Путь: Статьи > Новичкам

Новичкам

Автор: -
Дата публикации - 11.05.2005
Просмотров: - 3442

REGISTER_GLOBALS - для тих у кого не приймаються данні з форм


[b]Привіт усім![/b]

Я от тут переглянув ще раз форум і переконався, що найчастіше на форумі задають питання відносно register_globals з приблизною темою [b]"Не передаються дані з форми"[/b].

Як я зрозумів, пишуть такі теми люди, які недавно почали вивчати мову PHP та вчилися/вчаться по книжках. Думаю я так тому, що сам так починав і після прочитаної книжки я все ще мав купу запитань, на які відповіді самостійно без допомоги отримати не міг.

[h3]Значить звідки взялося слово register_globals і що це таке?[/h3]register_globals це параметр в конфігураційному файлі PHP. Він вказує компілятору чи в програмі заносити змінні, які передані з html форми, куків та сесії в глобальний простір. Цей пареметр відіграє дуже важливу роль в мові PHP, так як він впливає та безпеку та швидкодію.

[nb]register_globals має два значення: On, Off[/nb]

При значенні On всі дані, що приходять ззовні до скрипта будуть глобальними. Навожу приклад:

[php]
<?php 
if(!empty($_POST)){ 
echo 
$name

?> 
<html> 
<body> 
<form method="POST" action="<?=$PHP_SELF?>"> 
<input type="text" name="name"> 
<input type="submit"> 
</form> 
</body> 
</html> 
[

/php]

В даному прикладі я продемострував як register_globals при значенні On впливає на дані, що передаються методом POST з форми. І так, після того, як буде натиснута кнопка "Submit" скрипт видасть значення поля форми name. Як видно з прикладу, назва поля співпадає з назвою змінної PHP. Це і є те про що я вже писав - змінні заносяться в глобальний простір. Я так само спеціально в прикладі написав в екшені форми $PHP_SELF. Програмісти часто використовують саме таку змінну, не думаючи, що це може привести до помилки…

При значенні [b]register_globals off[/b] ваші скрипти будуть більш надійними і будуть швидше виконуватися (тести не проводив). Швидше будуть виконуватися тому, що PHP не треба буде реєструвати усі вхідні дані як глобальні змінні, тобто для обробки скрипта буде залучатися менше пам'яті.

Перед тим як написати чому скрипти будуть надійними наведу знову приклад:

[php]
if(!empty($_POST)){ 
echo $_POST['name']; 

?> 
<html> 
<body> 
<form method="POST" action="<?=$SERVER['PHP_SELF']?>"> 
<input type="text" name="name"> 
<input type="submit"> 
</form> 
</body> 
</html> 
[

/php]

Тепер для виведення того ж значення поля форми name потрібно використовувати масив $_POST, в якому буде зберігатися вся інформація про дані, передані методом POST. Поясню чому. [nb]Незалежно від значення register_globals PHP всерівно створює масиви $_POST, $_GET, $_COOKIE, $_SESSION та $_REQUEST для зберігання відповідно даних переданих методом POST, GET, куками, та сесією.[/nb] Це означає, що єдиним способом отримати вхідні дані передані в скрипт при значенні register_globals Off буде звернення до цих масивів. Ось так.

Надіюсь, моя стаття хоч комусь допоможе.



Обсудить в ФОРУМе - комментариев ()


Путь: Статьи > Новичкам

Если вы заметили орфографическую, стилистическую или другую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Контакты Design by webFaction Ukrainian PHP Group 2004-2005