[показать]Итак, решил вот отвлечь читателя от грустных мыслей и рассказать немного об основных аспектах веб-программирования в доступной форме.
Сначала рассмотрим технологию "клиент-сервер".
Технология "сервер" включает в себя:
На сервере можно остановиться подробнее. Обязательно там есть программа, связывающая хостинг(папку на жестком диске) с доменом (зарегистрированным IP-адресом). А как правило там еще и есть програмки-интерпретаторы CGI(Common Gateway Interface). Мы обычно используем open-source веб-сервер Apache(за неимением денег на IIS+SQL Server). И в вот этот Apache добрый дядя уже встроил поддержку интерпретатора языка PHP, какой молодец(PHP остается только скачать и прописать в настройках Apache что библиотека у нас есть и папку в которой она лежит)!
Сервер не умеет делать для клиента ничего кроме как отправлять ему HTTP-ответы на запросы. Но их мы подробно рассматривать не будем, сойдемся на том что в 90% случаев они представляют из себя либо файлы .html либо картинки, реже архивы и прочие файлы.
Когда сервер получает запрос он хочет хорошо выполнить свою работу и начинает думать что отправить в ответ. Для этого он смотрит HTTP-запрос и видит в нем... О Боже! ... он видит там имя файла index.php и IP-адрес клиента. Куда отправлять ответ он значит уже знает, осталось ему придумать что же делать с index.php. Сервер начинает смотреть свои настройки и понимает, что доменному имени соответствует папка, например D:/server/
Если запрос клиента пришел с указанием доменного имени+путь то сервер дублирует все что идет после доменного имени после строки D:/server/
Например: запрос пришел на файл http://www.arks.ru/papka/123/kurs.php
Сервер в этом случае полезет открывать файл D:/server/papka/123/kurs.php
С этим разобрались. Далее. При установке на сервер среды Apache у нас уже автоматически указывается программа, которая будет обрабатывать любые .php файлы, обычно это php.exe находящееся в папке с PHP-библиотекой. Она и исполняет этот файл.
Теперь поговорим немного о языке php.
Все команды в языке php заключаются в теги <?php команда ?>
Приложение открывшее файл php доходя до этих тегов понимает что результаты выполнения команд не надо передавать веб-серверу. Все что не заключено в эти теги програмка передает веб-серверу без изменений, обычно это html-код разметки нашей странички - всякие таблицы, блоки, меню - обычно без содержимого(такста, ссылок) т.к. как раз его то мы и генерируем командами php
Для передачи информации веб-серверу из php-команд используется команда echo "инфа"; - она как-бы отменяет для содержимого(в данном случае инфа) действие тегов <?php ?>
Таким образом .php файл выполняет обидаковые действия если его содержимым является:
инфа
и
<php echo "инфа"; ?>
Вот таким образом мы на стороне сервера решаем какие html-данные надо отдавать клиенту. Но прогресс пошел еще дальше - запросы от клиента могут также содержать любую неслужебную информацию(html-формы). Получая эту инфомрацию, php-сценарий так же может думать что с ней делать - или просто игнорировать, или например сгенерировать html-ответ в зависимости от информации которую он получил. Это как раз и позволяет если пользователь ввел верные логин/пароль в форму отправлять ему один контент а если ввел неверные - другой. Между файлами сервера, например страничкой с формой авторизации и php-сценарием авторизации, данные передаются посредством суперглобальных массивов(на практике те же HTTP-запросы, передающие значение какой-либо переменной, она хранится в памяти браузера пока он открыт у клиента).
На этом с сервером можно уже и закончить, рассмотрим клиент.
Компьютер удаленного пользователя подключается к серверу и получает информацию посредством HTTP-запросов. Чтобы вручную не писать эти запросы умные дяди скомпилировали для нас различные браузеры с красивыми кнопками, строкой адреса и закладками. Получая какое-то новое значение в строку адреса браузер в прямом смысле залезает на сервер и начинает там шариться. Нет, все немного не так потому что надо еще учитывать безопасность. Получая значение в строку адреса браузер залезает на сервер и видит там злого вооруженного стража - веб-сервер Apache. Дальше браузеру вход закрыт. Он рассказывает Apach'у какой он хочет файл(например .html) и веб-сервер сам находит нужный файл открывает его и выдает все html данные в виде HTTP-ответа. Что с ними делать браузеру-собрать из них на компьютере пользователя такой же .html файл или один раз интерпретировать html-теги - решает браузер.
Если же браузер - наглая рожа - хочет заполучить php-файл, Apache сначала сам смотрит его(исполняет как уже описывалось выше) и отдает браузеру только те html-теги, которые сценарий сгенерировал и разрешил к выводу. Браузер рисует нам на основе интерпретации html-тегов всякие красивые няки-меню, кнопки, тексты и т.п. и закрашивает их в нужные цвета, запрашивая у сервера таблицу стилей css(сервер отдает все ее содержимое без каких-либо ограничений как например с php)