Самые основы. Как работает PHP.

Автор: phpclub Сайт: http://faq.phpclub.net/
   
   
   Отличие веб-приложения от обычной программы
   Начиная писать программы для веба, многие начинающие программисты сталкиваются с такой ошибкой. Они рассматривают систему браузер-сервер, как обычное приложение. Интерактивное. Нажал кнопку - система среагировала. Провел мышкой - среагировала. Вся информация, которая доступна клиенту - доступна и программе, программа все время находится в памяти.
   
   Так вот, в веб-программировании это не так.
   Сервер и браузер общаются, посылая друг другу запросы по особому протоколу - HTTP. Соединение может инициировать только браузер. Он посылает серверу запрос - показать такой-то файл. Сервер клиенту файл посылает.
   Только так и происходит. Клиент запросил - сервер отдал. И забыл сразу о клиенте. Остюда становится понятным ответ на вопрос, можно ли точно узнать, сколько юзеров сечас на сайте. Нельзя. потому, что "на сайте" нету ни одного. Они соединяются, запрашивают страницу, и отсоединяются. Не имеют постоянного оединения с сервером, как, например, игроки в Кваку. Узнать можно только примерно, записывая время каждого соединения и выбирая записи за определенный промежуток времени.
   
   Отсюда становится ясно, что сервер может узнать о клиенте очень мало. Только то, что клиент пришлет в HTTP-запросе. Разрешения экрана там нет ;-)
   Все, что сервер может знать о клиенте, можно посмотреть командой phpinfo()
   
   Как работает РНР, где он выполняется?
   РНР выполняется на сервере. Браузер посылает серверу запрос на страницу с php кодом. Сервер отдает эту страницу на исполнение интерпретатору PHP, интерпретатор генерирует HTML код, отдает серверу, а сервер посылает клиенту. Никакого РНР кода в браузер не попадает (это важно! Это значит, что увидеть исходный код PHP скрипта невозможно!). Единственный способ отправить что-то скрипту - это кликнуть по ссылке или нажать на кнопку в форме. Так, чтобы РНР обрабатывал какие-то действия пользователя в браузере - невозможно. РНР остался на сервере, ждать новых запросов с данными для обработки. PHP, но не скрипт! Скрипт, который выполнялся, отдавая пользователю страницу, завершил работу. Все данные, которые были в нем - пропали. Именно поэтому, если какая-то переменная нужна при последующих вызовах скрипта, ее надо этому скрипту передать снова.
   
   Способы общения браузера с сервером.
   Способов, предоставляемых протоколом HTTP, немного. Это важная информация. Никаких других способов нет.
   Браузер может отправлять информацю серверу следующими способами:
   GET - это когда данные передаются в адресной строке, например, когда пользователь жмет ссылку.
   POST - когда он нажимает кнопку в форме.
   Cookie - если сервер поставил куку, и она не устарела, то браузер отсылает ее при каждом обращении к серверу.
   HTTP authentication - если сервер запрашивал HTTP авторизацию, то браузер при каждом обращении шлет введенные логин и пароль.
   Все остальное - лишь использование этих методов. Например, когда запрос посылает яваскрипт, или когда по ссылке <img src> запрашивается скрипт.
   
   РНР может посылать HTTP заголовки двумя командами - header и setcookie.
   
   Я очень рекомендую попрактиковаться с HTTP заголовками, посмотреть, как ими обмениваются сервер и клиент.
   Для этого есть множество разных способов. Если у вас стоит популярный download manager FlashGet, то можно использовать его. Так же заголовки показывает популярная программа Proxomitron, можно скачать какие-нибудь специальные утилиты.
   Очень удобен в этом плане браузер Mozilla. Если нажать правую кнопку и в контекстном меню выбрать Page Info, то можно увидеть полный набор заголовков как запроса, так и ответа. А если открыть спец. окошко через меню, то будешь видеть вообще все заголовки запросов и ответов всех запрашиваемых элементов страницы - картинок, CSS, скриптов, и-фреймов и т.п.
   Очень хорошая практика, а так же проверка - что шлет твой скрипт. Удобно при отладке установки кук и или проблемами с сессиями.
   

Опубликовано: HTTP://WWW.R-T-F-M.INFO, pauk ©® 2000-2011.
All rights reserved.
При перепечатки ссылка на сайт обязательна.
Мнение администрации сайта не всегда совпадает с мнением автора..