Обучение HTML, Excel, Word. Как сделать свой сайт бесплатно

Microsoft Office

Сайтостроение

HTML

Программинг

Компьютер

Графика

Разное

· Основы Word
· Основы Excel
· Основы VBA
· Основы OpenOffice
· Как сделать сайт
· Свой сайт от А до Я
· Оптимизация сайта
· Шаблоны для сайта
· Обзор CMS
· Основы HTML
· HTML-теги
· Основы CSS
· Основы PHP
· Основы JavaScript
· Софт для сайта
· Что внутри ПК
· ПК для чайников
· Все о BIOS
· Web-графика
· САПР: AutoCAD
· Статьи
· Форум
· SEO-новости
Главная страница Карта сайта
Учебник PHP
Основы SQL
  1. Введение
  2. Инструменты
  3. Первый шаг
  4. Структура языка
  5. Массивы
  6. Глобальные массивы
  7. Cookies
  8. Сессии
  9. Загрузка файлов
  10. Работа с файлами
  11. Работа с базами данных
  12. Работа в сети
  13. Отправка почты
  14. Безопасность
  15. Автоматизация
  16. Регулярные выражения в PHP
  17. Интеграция
 



Глобальные массивы

Автор: Артемьев Сергей Игоревич
ICQ: 438856621
email: _spin_@bk.ru

В PHP версии 4 и выше введено понятие "суперглобальных" массивов. Эти массивы содержат всю информацию о состоянии сервера и среды выполнения скрипта. Массивы доступны в любом месте скрипта без дополнительных объявлений, т.е. не надо использовать ключевое слово global.


Всего массивов девять. Имена всех массивов записываются заглавными буквами, а начинается имя всегда с "$_" (кроме массива $GLOBALS).

$GLOBALS Массив содержит ссылки на все переменные, объявленные в данном скрипте. Это ассоциативный массив, в котором имена переменных являются ключами.
$_SERVER Массив содержит все данные о настройках среды выполнения скрипта и параметры сервера.
$_GET Список переменных, переданных скрипту методом GET, т.е. через параметры URL-запроса.
$_POST Список переменных, переданных скрипту методом POST.
$_COOKIE Массив содержит все cookies, которые сервер установил на стороне пользователя.
$_FILES Содержит список файлов, загруженных на сервер из формы. Более детально мы рассмотрим этот массив в уроке, посвящённом загрузке файлов на сервер.
$_ENV Содержит переменные окружения, установленные для всех скриптов на сервере.
$_REQUEST Этот массив объединяет массивы $GET, $POST и $COOKIE. очень часто бывает удобен при обработке пользовательских запросов, но применять его для защищённой обработки данных не стоит.
$_SESSION Массив содержит все переменные сессии текущего пользователя.

Просмотреть содержимое всех масивов можно в результате вызова функции phpinfo().

Рассмотрим примеры использования глобальных массивов.

$_SERVER

С помощью этого массива можно узнать практически всё о сервере, на котором исполняется скрипт. Например:

<?php

    echo 'параметры сервера:' . "<br />\n";

    echo "Операционная система: " . 
		$_SERVER["OS"] . "<br />\n";
    echo "Web-сервер: " . 
		$_SERVER["SERVER_SOFTWARE"] . "<br />\n";
    echo "Имя сервера: " . 
		$_SERVER["SERVER_NAME"] . "<br />\n";
    echo "Адрес сервера: " . 
		$_SERVER["SERVER_ADDR"] . "<br />\n";
    echo "Порт сервера: " . 
		$_SERVER["SERVER_PORT"] . "<br />\n";
    echo "Адрес клиента: " . 
		$_SERVER["REMOTE_ADDR"] . "<br />\n";
    echo "Путь к документам на сервере: " . 
		$_SERVER["DOCUMENT_ROOT"] . "<br />\n";
    echo "Полный путь к текущему скрипту: " . 
		$_SERVER["SCRIPT_FILENAME"] . "<br />\n";
    echo "Имя текущего скрипта: " . 
		$_SERVER["PHP_SELF"] . "<br />\n";

?>

Пользоваться этим массивом нужно аккуратно, т.к. некоторые сервера имеют достаточно специфичные настройки или значения параметров. Иногда это приводит к неприятным ошибкам, которые к тому же очень сложно диагностировать и исправить. Например, параметры $_SERVER["REQUEST_URI"] и $_SERVER["SCRIPT_NAME"] могут быть не установлены (хотя один из них как правило присутствует).

$_GET и $_POST

В эти массивы помещаются данные, передаваемые скрипту извне (так называемый, пользовательский ввод). В принципе, пользователь может влиять только на эти два массива плюс массив файлов и cookie. И именно поэтому все элементы этих массивов должны тщательно проверяться на допустимые значения.

Например, если пользователь ввёл в строку адреса браузера адрес "http://localhost/index.php?name=Dmitry&fam=Medvedev&jt=president&country=Russia", то массив $_GET надо будет обрабатывать так:

<?php
   /*
    Предполагаем, что массив $_GET должен
    содержать следующие элемены

    $_GET['name'] = "Dmitry";
    $_GET['fam'] = "Medvedev";
    $_GET['jt'] = "president";
    $_GET['country'] = "Russia";
   */

   // Теперь проверим наличие данных,
   // а для недостающих - возьмём пустую строку

   $name = (isset($_GET['name']))?
		$_GET['name']:' не указано ';
   $fam = (isset($_GET['fam']))?
		$_GET['fam']:' не указано ';
   $jt = (isset($_GET['jt']))?
		$_GET['jt']:' не указано ';
   $country = (isset($_GET['country']))?
		$_GET['country']:' не указано ';

   echo "Страна: $country <br />\n";
   echo "Фамилия: $fam <br />\n";
   echo "Имя: $name <br />\n";
   echo "Должность: $jt <br />\n";

?>

Этот скрипт будет устойчиво работать при любом GET-запросе, даже если не будет указан ни один параметр. Если используется метод POST, то достаточно заменить $_GET на $_POST. А если вам совершенно не важно, откуда получены данные - воспользуйтесь массивом $_REQUEST (см. ниже).

При работе с пользовательским вводом есть одно правило:


Никогда не доверяйте данным, получаемым извне.

Всё, что пользователь может изменить, неправильно написать или не ввести - он однажды изменит, напишет или не введет. Намеренно или случайно - это уже другой вопрос. Но в любом случае, все вводимые данные должны проверяться и перепроверяться. Однажды написанная процедура проверки данных избавит вас от множества проблем и лишней работы по установке и отладке.

$_COOKIES

В массив $_COOKIES автоматически помещаются все cookies, которые получены от браузера. Механизм cookies мы подробно рассмотрим в соответствующем уроке. А пока вам достаточно запомнить, что есть глобальный массив, из которого в любое время можно узнать какие cookies установлены на стороне клиента.

$_REQUEST

Массив $_REQUEST объединяет три массива: $_POST, $_GET, $_COOKIES. В ранних версиях PHP сюда же входил массив $_FILES, но из соображений безопасности и производительности его исключили. Пользоваться массивом $_REQUEST очень удобно в случаях, когда нет разницы, каким методом был сделан запрос. Например, при постраничном выводе данных номер страницы можно передавать через URL ("index.php?page=3") методом GET, а можно через элемент формы методом POST. И в том и в другом случае переменная page попадёт в массив $_REQUEST.

$_SESSION

Предназначение массива $_SESSION - хранение всех переменных сессии текущего пользователя. Мы подробно рассмотрим механизм сессий в соответствующем уроке.

Глобальные массивы очень удобны в работе, но злоупортеблять ими не стоит, особенно массивом $_SESSION. Если переменной нужна только в локальной области видимости - не надо её делать глобальной. Слишком большое количество "лишних" переменных сильно снижает быстродействие и эффективность скрипта.

top




 




Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :)
При копировании материалов, размещенных на сайте, ссылка на первоисточник обязательна.
Если понравился этот сайт..

© 2005-2012
Юрий Кордык All Rights Reserved

 

E-mail:
admin@on-line-teaching.com