Как запустить php скрипт в браузере
Перейти к содержимому

Как запустить php скрипт в браузере

  • автор:

Как запускать PHP-код

Как запускать PHP-код

Данную статью я решил посветить всем начинающим изучать PHP, потому что у всех возникает одна и та же ошибка. Почему её допускают, не знаю, но допускают постоянно. Я без преувеличений скажу, что получил уже около сотни вопросов, на которые ответ будет дан в этой статье. Эта ошибка связана с неправильным запуском в PHP.

Как делают практически все новички:

  1. Создают PHP-файл (иногда HTML-файл, но это самые новички).
  2. Записывают туда PHP-код.
  3. И двойным кликом пытаются открыть его в браузере.

Результат, браузер код открывает, но исполнять его не торопится. А просто выводит какие-то куски кода обычным текстом, либо вообще ничего не выводит.

Ошибка данного подхода состоит в том, что ученик не понимает, что PHP — это серверный язык, а не клиентский. Это HTML или JavaScript клиентские языки, они, конечно, обрабатываются браузером. Но для PHP нужен интерпритатор. И вот данный интерпритатор запускается сервером.

Вывод: запускать PHP-код надо через сервер. Если у Вас Denwer, значит, через него.

Теперь, как запускать PHP-код через Denwer. Большинство новичков вновь делают ошибку. Они вроде бы всё делают правильно, создают нужные папки, перезапускают Denwer и вроде бы, осталось только правильно вызвать файл. Но тут снова ошибка: они вновь открывают файл просто в браузере (либо перетаскиванием файла в браузер, либо двойным кликом). Это легко можно заметить по адресу в адресной строке. Там будет что-то наподобие: file:///Z:\home\mysite.local\www\script.php.

А правильно запускать надо, вводя адрес виртуального хоста. То есть прямо в адресной строке браузера вводите: http://mysite.local/script.php — всё, теперь скрипт запустится и выведет свой результат.

Надеюсь, данная статья поможет многим новичкам, только начинающим изучать PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 49 ):

А как можно исправить код на сайте на вордпресс? Если надо изменить немного шапку в шаблоне? Мой сайт http://ubolika.ru — В каком там файле надо вносить изменения?

Найдите файл index.php в папке с темой Вашего шаблона. Данный файл и нужно править.

Установил Denwer, всё сделал как сказано, но PHP в браузере не выводится

Файлы имеют расширение php? Сайты вообще открываются (например, HTML-код)? Если всё так, то скопируйте адрес из адресной строки и покажите его.

Здравствуйте Михаил! Создал на диске С папку WebServers. Установил туда Denwer. После установки было написано, что Denwer успешно установлен. Набрал в браузере адрес тестового сайта: test1.ru Браузер мне выдал: Это файл /home/test1.ru/www/index.html. Всё вроде бы работает. Создал папку с сайтом: C:\WebServers\home\test2.ru Перезапустил Denwer. В папке с сайтом test2.ru создал папку www. В ней создал документ index.html В html всё работает хорошо. Создают второй документ с расширением php. Пишу для проверки такой php-код: <?php $a = 5; echo "$a"; ?> В браузере, если я понимаю правильно, я должен увидеть 5. Но ничего нет. В программе Notepad++ открывают документ в браузере. Путь такой: file:///C:/WebServers/home/test2.ru/www/index2.php

Во-первых, перезапускать сервер надо было после создания www. А что касается пути, то внимательнее прочитайте статью, как раз о Вашей ошибке там и говорится.

Перезапустил Denwer после того, как создал папку www. Создал в этой папке файл с расширением php. Вы могли бы мне подсказать, что я должен ввести в браузере из ходя из того пути, который я вам написал?

Большое Вам спасибо Михаил! С вашей помощью мне наконец удалось решить данную проблему.

Михаил, для меня PHP ещё тёмный лес. Как я понял, для выполнения кода PHP страница должна иметь расширение *.php. А почему тогда у вас страницы на сайте с расширением *.html?

Здравствуйте Михаил!я пробовал все что сказано в коментариях и все получилась! за этоспасибо большое . теперь пишу вот такой простинкий код <html> <body> <p>проверка </p> <? echo пробуем PHP ?> </body> </html> отображается ошибка Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in Z:\home\test2.ru\www\index2.php on line 4 скажи пожалуста в чем ошибка

Про echo: http://myrusakov.ru/hello-world-php.html

. у меня броузер не открывает страницу с шасширением php ,а пытается сохранить ! что делать ?

Скопируйте адрес из адресной строки.

спасибо,заработало. но пшп браузер не хочет кушать ,пишет следующее: HTML1406: Недопустимое начало тега: "<?". Теги не должны начинаться с вопросительных знаков. что делать ?

Попробуйте в другом браузере.

. наконец-то высидев на пятой точке ночь — я таки достал этот денвер и и прописав http:// получил работающий php .

Создаю документ с расширением php. Пишу для проверки такой php-код: <?php $a = 5; echo "$a"; ?> В браузере, если я понимаю правильно, я должен увидеть 5. и мне показывает 5 но когда я выключаю denwer и включаю и мне уже не выдает 5 а весь код выдает ??

Для работы PHP необходим denwer.

Спасибо, щас PHP код заработал.

вроде разобрался с php кодом) теперь можете обьяснить как исправить это file:///Z:/home/mysite.local/www/index.php на это http://mysite.local/index.php что бы с Notepad++ запускать файлы на прямую.ещё раз спасибо вам вы граммотный учитель.

Вам не нужно ничего менять. Изменяете файл как обычно, сохраняете (ctrl+s) и параллельно смотрите изменения в браузере, где и открыт mysite.local.

Михаил я не много не понял,файлы с кодировкой изменять или где?просто в браузере вот такое file:///Z:/home/mysite.local/www/index.php а название файлов например вот такое index.php,так как и что изменять?за ранее спасибо.

Почитайте статью. В браузере не должно быть такого адреса, это не адрес локального сервера.

Михаил какую статью прочитать?эту?,а вы можете подсказать как изменить?а то догадками как то не понятно))

Да, эту. Там всё написано как раз по Вашему вопросу, я и не знаю как понятнее объяснить. В браузере должен быть только адрес сайта по типу http://mysite.local

Здравствуйте. пожалуйста помогите запустить файл php. сделал все строго по инструкции. в конечном итоге браузер мне пишет к сожaлению google не может открыть страницу. что делать

Попробуйте вручную вписывать http:// перед адресом.

А у меня такая проблема. когда устанавливал Denwer — все сделал правильно. Потом начал набирать сайт по видеоуроку "основы HTML". переименовал все страницы в php. запускал сайт через mysite.local в браузере — без проблем. Теперь решил создать сайт (так сказать урок номер 2) с использованием связанного стиля CSS. но я просто удалил из папки www на сервере все файлы первого сайти и закинул туда новые, включая index.php, фаил стилей .css и т.д. Так вот теперь запускаю в браузере mysite.local, все работает, но отображается только голимый html. в чем проблема. и заново www создавал, делал все что в статьях написано — не помогает. Что делаю не так?

Обращайтесь в службу поддержки.

Стили вообще подключены? Если нет, то ошибка в коде

Тот же глупый и вечный вопрос про неисполнение php. Попытка запустить инсталляцию DLE. Denwer установлен, база данных и пользователь создан, Denwer перезапущен по ходу 20 раз. адрес вводится правильно (http://dle.ru/install.php). html файлы и рисунки браузер открывает (например http://dle.ru/templates/default/images/alert.png). php — нет. Сам файл находится на Y:/home/dle.ru/www/install.php.

Максим, в адресной строке браузера следует писать не Y:/home/dle.ru/www/install.php, а что-то вроде этого: www.yousite.com/install.php

Да, правильно, чтобы в браузере в адресной строке было"Веб" а не "Локальный". Просто php какой-то левый. С другим пошло.

Здраствуйте, Михаил. Подскажите пожалуйста: я создал форму (ввиде заказа товара) с HTML-кодом и сделал обработчик РНР который должен обработать форму и отправитьобработанные данные на ел.почту, письмо он то отправляет, но просто с текстом без обработки переменных, т.е. скажем в поле "От кого" пустое место и так со всеми полями.

Здравствуйте, у меня не работает PHP, когда я создаю скрипт то вместо http://mysite.local/script.php сервер направляет на file:///Z:\home\mysite.local\www\script.php. Как локальный сервер правильно настроить, чтобы он выводил мои скрипты, а не код? С уважением Евгений Голубев

я вам уже отвечал. 1.создали папку home\mysite.local\www\ mysite.local создаётся там же,где и папка localhost, закинули файл script.php в папку www перезагрузили denwer,открыли браузер. в адресной строке ввели:http://mysite.local/script.php

Я изменил, ссылку с под название своего сайта, но она почему то не работает? С уважением Евгений Голубев.

не дублируйте комментарии в службу поддержки и сюда.

Здравствуйте!! Вопрос такого плана, когда поменял расширения файлов html на php на сайте вместо текста сразу вылезли абракадабрики, отчего??

Возможно надо сохранить код сайта в notepad++ а сверху в пункте меню кодировка выбрать utf-8 without BOM. Также надо создать файл .htaccess и в нем прописать AddDefaultCharset UTF-8

помогите и мне пожалуйста, 1 страница именно после создания меню html и переименования php страницы в разделе меню выдает абрыкадабры, 2 страница нормально. и коды переставила, ничего не помогает. если создавать файл где конкретно и как

все в порядке, именно в первой странице в кодировке спустилась ниже и нажала преобразовать в utf-8, хотя для остальных страниц достаточно было нажать просто utf-8, может кому то будет полезным! : )

СПАСИБО УВАЖАЕМЫЙ. ОЧЕНЬ ПОМОГЛА ВАША СТАТЬЯ. из всего что нашла в инете именно ВАША спасла меня!! СПАСИБО 1000раз.

В вашем уроке по РНР с нуля до гуру я приступил к написанию движка и в результате имел много ошибок при выводе страницы. Когда я их исправил у меня вышел только пустой экран. Существует ли какойто способ проверки каждого класса на роботоспособность? Возможно ли проверять работу функций во время их написания?

Включите максимальное отображение ошибок.

Помогите пожалуйста: когда всё сделал от и до, браузер пишет веб-страница не доступна. Почему? Может какие то хост права разрешить или что то вроде этого?

добрый день! подскажите пож-ста, установила Open server при запуске файла с php кодом открывается пустая страница или выводится сам код на страницу, раcширение .php, запускаю файл через open server, путь https://new/index.php . html код с расширением .php открывается нормально что делать??

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Как открыть PHP файл в браузере: все способы

Как открыть PHP файл в браузере

Краткий ответ: HTML относится к клиентским инструментам (пусть это и не язык), а PHP — к серверным языкам. Это значит, что выполнение кода PHP возможно только в условиях сервера.

Полный ответ: любой браузер «знает», как преобразовывать HTML-код и красиво выводить его на веб-страницу (ведь существуют стандарты веба). Можно просто принять факт: однажды разработчики и крупные сообщества договорились о том, что HTML будет использоваться так, а не иначе. С PHP ситуация развивалась совсем по-другому.

Причины

Давайте на секунду представим, что разработчику браузера необходимо предусмотреть поддержку абсолютно всех языков и платформ. Такой подход был бы гораздо сложнее не только для разработчиков, но и для пользователей. Это была бы утомительная работа для тех, кто создает браузеры. А пользователи бы — часами скачивали такие браузеры. Кроме того подобные браузеры значительно бы затормозили развитие интернета.

Но веб развивался по-другому сценарию. И в 2023 году наиболее распространенной является архитектура по типу клиент-сервер. Её смысл в том, что каждый клиент (браузер) умеет читать и выполнять HTML-код, а сервер — может работать прозрачно от клиента, используя инструменты и технологии, адаптированные к его методам (в нашем случае, к PHP), и затем возвращать результат в виде HTML клиенту.

PHP динамичен, в то время как HTML — статичен.

Вы можете провести эксперимент и открыть любой HTML файл с жёсткого диска прямо в браузере. Вы увидите содержимое этого файла и без интернета (без веб-сервера). Просто браузер знает, как отображать HTML.

Открыли HTML-файл с жесткого диска без интернета

Открыли HTML-файл с жесткого диска без интернета

А теперь откроем какой-нибудь PHP-файл:

Попробовали открыть открыть файл PHP с жёсткого диска через браузер

Попробовали открыть открыть файл PHP с жёсткого диска через браузер

Мы видим, что исходный код PHP отображается как простой текст. Причина элементарна: браузер не знает, как интерпретировать этот язык. Это происходит по той же причине, которую мы озвучили выше (PHP является языком на стороне сервера).

Веб-сервер необходим для «размещения» файлов PHP и их дальнейшей интерпретации (она выполняется компилятором перед отправкой статического HTML).

Несмотря на то, что связку HTML + CSS умеет «читать» любой браузер, она всё равно, по факту, будет обслуживаться веб-сервером. Открыть и выполнить HTML + CSS обычный пользователь может только с помощью браузера. И работа браузера — просто вывести всё это дело.

PHP, благодаря наличию веб-сервера, умеет взаимодействовать с HTML, стилями CSS и JavaScript. Важное замечание: сервер никогда не отправляет PHP: он может отправить клиенту (браузеру) только HTML, CSS или JavaScript. Всё.

Способ 1: Открытие без обработки

Здесь всё зависит от того, что подразумевать под словом «открытие».

Напомним, файл PHP — это содержимое в виде кода, которое компилируется на сервере, а вывод — генерируется и отображается в HTML.

Говоря о способах открытия файла без обработки, можно подразумевать открытие, редактирование или исполнения кода.

Отредактировать файл можно с помощью любого текстового редактора (например, Блокнота в Windows). Но, конечно, существуют более функциональные инструменты: редакторы кода или IDE — с дополнительными инструментами для разработчика.

Также открыть файл без обработки можно при помощи любого браузера. Отредактировать код вы не сможете, вы сможете только просмотреть файл и ничего более.

Инструкция

Найдите файл у себя на жёстком диске компьютера, вызовите контекстное меню (кликнув по иконке файла правой кнопкой). Нажимаем на вариант «Открыть с помощью» или «Открыть», выбираем браузер, который будет использоваться для просмотра файла.

Открытие файла через браузер в Windows

Открытие файла через браузер в Windows

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

Файл со скриптом открылся успешно

Файл со скриптом открылся успешно

Способ 2: Онлайн-редакторы

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

Что должно быть в онлайн редакторе, чтобы открыть код PHP прямо в браузере и удобно работать с файлом:

Поддержка PHP. Соответственно должен быть встроенный компилятор с поддержкой этого языка.

Подсветка синтаксиса. Сделает работу более комфортной и позволит избежать частых ошибок в синтаксических конструкциях.

Функция загрузки внешних файлов. Если её не будет, мы не сможем открыть собственный файл.

Желательна поддержка одновременной обработки HTML и PHP. Ведь очень часто код PHP включает в себя HTML, который находится внутри такого файла.

Мы рекомендуем использовать PHP компилятор на сайте Programiz. Это полностью бесплатный онлайн редактор кода, который позволит выполнить любой код прямо в браузере.

Инструкция

Открываем любой файл в браузере, копируем из него необходимый код, затем вставляем полученный код в это окно:

Копируем или пишем свой код в окне слева

Копируем или пишем свой код в окне слева

Затем нажимаем кнопку Run. Вы сразу увидите результат выполнения кода.

Hello World!

Кстати на этом же сайте (Programiz) вы найдете полностью бесплатные компиляторы для языков: Python, R, Java, C, C++, C#, JavaScript, GO, Swift, Rust, а также онлайн-редактор SQL. Плюс доступен бесплатный редактор HTML / CSS.

Если вы решили воспользоваться другим онлайн-редактором следите за тем, чтобы содержимое файла было изначально интерпретировано корректно. Если этого не так, значит нужно искать причину (например, файл включает в себя HTML-блоки, а выбранный вами онлайн-редактор кода не поддерживает одновременную обработку этих языков).

Способ 3: Эмуляторы сервера (Denwer, XAMPP, OpenServer)

Если необходимо выполнить код PHP с возможностью задавать параметры настоящего сервера, можно воспользоваться эмуляцией сервера — прямо в браузере. Чтобы это сделать, нужно установить веб-сервер, например Apache. Самое простое решение — установить готовую сборку веб-сервера с Apache, mySQL и встроенным интерпретатором скриптовPHP. Это может быть XAMPP или WAMP. После завершения установки у вас будет каталог XAMPP или WAMP, в зависимости от того, что вы установили.

Вот краткая пошаговая инструкция, как открыть файл с помощью WAMP.

Найдите папку www и вставьте в неё необходимый файл

Вставьте в папку www свой файл (или файлы), с которыми вы хотите работать. Также внутри главного каталога могут быть и другие подкаталоги.

Пример: у нас есть каталог проекта с именем «MyProject», внутри него имеется файл «index.php». Указанный каталог проекта необходимо вставить в каталог www, который находится в каталоге WAMP. Теперь у нас установлен сервер и есть готовый файл.

Запустите сервер

Для этого откройте приложение WAMP (либо замените эту сборку веб-сервера на OpenServer, XAMPP, WAMP или Denwer). Как только сервер будет готов, он станет доступен по адресу http://localhost/ (ведь это локальная машина).

localhost теперь фактически относится к директории www. И любая страница, находящаяся в этой директории, станет доступна, если вы пропишите соответствующее имя страницы после ссылки.

Пример: наш каталог localhost состоит из файла index.php. Доступ к нему можно получить по адресу http://localhost/index.php.

Обратите внимание, что в предыдущем примере, мы разместили каталог MyProject. Доступ к нему можно получить по адресу http://localhost/MyProject/index.php.

Способ 4: Загрузка файла на сервер

Этот способ открытия файла рассматриваем самым последним неспроста: его можно назвать наиболее трудоёмким и неудобным для новичка. Судите сами:

Вам понадобится хостинг, ведь придётся работать с сервером напрямую.

Вам понадобится сайт.

Вам понадобится оплатить услуги хостинга. В противном случае арендовать сервер не получится.

Кратко: как загрузить файл на сервер

Чтобы загрузить файл на сервер PHP-скрипт используется вместе с HTML-формой. Сперва файл загружается во временный каталог, а затем перемещается в «целевой» каталог (при помощи скрипта).

В файле phpinfo.php есть два момента, на которые следует обратить внимание:

upload_tmp_dir — временный каталог, используемый для загрузки файлов.

upload_max_filesize — максимально допустимый размер загружаемых файлов.

Оба параметра задаются в конфигурационном файле (не забудьте, что его название — php.ini).

Процесс загрузки файла с точки зрения пользователя происходит следующим образом:

Пользователь открывает страницу с HTML-формой. Форма может содержать текстовые файлы, кнопки просмотра или кнопки отправки.

Пользователь нажимает кнопку просмотра и выбирает файл для загрузки (обычно на жёстком диске).

Полный путь к выбранному файлу появляется в специальном блоке.

Пользователь нажимает кнопку отправки.

Выбранный файл отправляется во временный каталог на сервере.

PHP-скрипт, указанный в качестве обработчика (он находится в атрибуте action формы), проверяет факт получения файла, и затем копирует его в указанный каталог.

Пользователь может видеть сообщение об успешной загрузке файла (не всегда)

Теперь разберём, как загрузить файл PHP на сервер самостоятельно.

Пошаговая инструкция, как загрузить файл на сервер

Начнём с настройки конфигурационного файла. Затем создадим HTML-форму и скрипт PHP. Попутно разберёмся с ограничениями по типу и размеру файла. В конце — покажем полный скрипт.

Настраиваем «php.ini»

Первым делом нам нужно убедиться в том, что разрешение загрузки файлов прописано в конфигурационном файле.

Здесь два простых действия:

Открываем файл php.ini, находим директиву file_uploads.

Устанавливаем значение file-uploads в On:

Далее создайте HTML-форму. Именно благодаря ней пользователь сможет выбрать файл изображения для загрузки на сервер.

Немного об ограничениях:

Атрибут type=»file» тега input используется для области ввода. Будет кнопка «Обзор», которая располагается непосредственно возле области ввода.

Форма обязательно должна иметь метод = «post».

Для формы обязательным является атрибут: enctype=»multipart/form-data». Обратите внимание: этот атрибут показывает тип контента при отправке.

В итоге форма может выглядеть таким образом:

Эта HTML-форма будет использоваться для отправки данных в upload.php. Указанный файл мы самостоятельно создадим далее.

Обязательно соблюдайте каждое из описанных выше требований (ограничений), в противном случае загрузка файла будет невозможной.

Формируем скрипт для последующей загрузки файла

Файл upload.php содержит код для загрузки файла:

Важные составляющие скрипта:

$target_dir = «uploads/» — содержит директорию, в которую будут загружаться файлы.

$target_file — содержит путь до файла, который загружается.

$uploadOk=1 — пока что не трогаем.

$imageFileType — включает в себя файловое расширение и обязательно в нижнем регистре.

Примечание: обязательно создайте ещё одну директорию и назовите её как uploads. Сформировать её нужно в той директории, где расположен upload.php. Все загруженные файлы будут сохраняться там же.

Проверяем наличие файла

Давайте проверим наличие необходимого нам файла внутри «uploads». Если файл уже существуют вы увидите соответствующее сообщение:

Обратите внимание на статус переменную $uploadOk. Если она равна 0, значит файл уже есть в папке.

Лимит по размеру файла

Поле ввода файла в нашей HTML-форме имеет имя «fileToUpload».

Нам также нужно проанализировать размер файла. Если он будет больше 500 килобайт, то появится ошибка. Вот так:

Смотрите: В переменную $uploadOk снова записываем 0

Тип файла

Взгляните на код ниже. В нем вы найдёте ограничения по типу загружаемого файла:

В нашем случае можно использовать изображения только в популярных форматах: GIF, JPG, PNG и JPEG.

Если используется изображение в иных форматах, то переменная $uploadOk будет иметь значение 0.

Как выглядит PHP-скрипт загрузки файлов

Полный файл «upload.php», в нашем случае, стал выглядеть вот так:

Созданный файл upload

Созданный файл upload

Здесь вы можете увидеть полноразмерную версию изображения.

Заключение

Таким образом, открыть, отредактировать и запустить файл прямо в браузере вы можете любым удобным для вас способом. Каждый из них мы подробно описали выше.

Если вам нужно просто прочитать файл — используйте любой браузер.

Если нужно изменить код файла — используйте любой удобный онлайн редактор.

Если требуется эмуляция сервера с возможностью выполнения и управления файлом прямо в браузере — воспользуйтесь готовой сборкой эмулятора, например, Denwer, XAMPP, OpenServer.

Наконец, ручная загрузка файла на сервер — самый трудоёмкий вариант. Его можно рекомендовать, когда существуют специфические потребности при открытии файла. И, естественно, новичкам его рекомендовать нельзя. Особенно, если нужно просто открыть и прочитать какой-то единичный файл.

Открытие PHP-файлов в браузере на компьютере

Как открыть PHP файл в браузере

По умолчанию открыть файл в формате PHP на компьютере с помощью браузера можно, но только с целью просмотра исходного содержимого без какой-либо обработки. Связано это в первую очередь с тем, что PHP является серверным языком и не может быть обработан стандартными средствами браузера на ПК или любой другой платформе.

Как открыть PHP файл в браузере_001

Если вас такой вариант устраивает, для открытия необходимо кликнуть правой кнопкой мыши по нужному файлу, развернуть список «Открыть с помощью» и выбрать один из установленных браузеров. При отсутствии какой-либо программы в списке доступных используйте ссылку «Найти другое приложение на этом компьютере».

Как открыть PHP файл в браузере_002

Каким бы веб-обозревателем вы не воспользовались, в результате файл откроется на новой вкладке, позволяя просматривать исходный код. Важно учитывать, что в отличие от любых текстовых редакторов с идентичной возможностью, не получится как-либо отредактировать содержимое.

Способ 2: Онлайн-редакторы

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

  1. Перейдите по указанной выше ссылке и убедитесь в наличии исходного PHP-кода в текстовом поле. Если содержимое отсутствует, разверните главное меню в правой части страницы и выберите редактор «PHP». Как открыть PHP файл в браузере_003
  2. Чтобы вывести содержимое PHP-файла, необходимо открыть документ на компьютере с помощью любого удобного текстового редактора, включая стандартный «Блокнот», скопировать содержимое и вставить в отмеченное поле на странице сервиса. Исходный код можно использовать совершенно любой, однако далеко не все содержимое будет правильно интерпретировано. Как открыть PHP файл в браузере_004
  3. Если вы по каким-то причинам не можете или просто не хотите копировать содержимое оригинального файла, в нижней части редактора разверните меню «…» и во всплывающем окне выберите «Open (from local file)». После этого достаточно будет выделить нужный документ на диске компьютера и нажать «Открыть». Как открыть PHP файл в браузере_005

Отдельно в завершение отметим, что сервис позволяет скачивать файлы после внесения изменений, как и ранее, через меню «…» в нижней части редактора. Кроме этого, при наличии учетной записи файлы можно хранить прямо на серверах данного сервиса в рамках проектов.

Способ 3: Эмуляторы сервера

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

Вариант 1: Denwer

Набор веб-приложений Denwer, являющийся одним из самых популярных средств для работы с веб-ресурсами на компьютере, включает все необходимые модули для запуска HTML, PHP и JavaScript в браузере. Мы не будем сильно углубляться в настройку и рассмотрение возможностей ПО, так как это в любом случае требует отдельного внимания.

  1. Откройте официальный сайт программы, нажмите кнопку «Скачать Денвер», выберите одну из версий PHP и подтвердите загрузку. После этого придется проделать ряд дополнительных действий, включающих указание адреса электронной почты и переход по индивидуальной ссылке для загрузки пакета. Как открыть PHP файл в браузере_008
  2. Разобравшись со скачиванием, откройте добавленный на ПК установочный файл программы и подтвердите установку базового пакета. После этого во всплывающем окне консоли необходимо внести несколько изменений, включающих выбор папки для установки пакета и диска, и при желании создать ярлыки. Как открыть PHP файл в браузере_009
  3. Воспользуйтесь ярлыком «Start Denwer» на рабочем столе, чтобы запустить виртуальный сервер. Убедиться в работе можно при открытии веб-страницы «localhost» в любом браузере на компьютере. Как открыть PHP файл в браузере_010
  4. Чтобы открыть собственный PHP, необходимо для начала перейти на недавно созданный виртуальный диск и в категории «home» создать новую папку, название которой будет являться адресом сайта. Также требуется разместить внутри данной директории дополнительную папку «www», и только в нее добавлять файлы. Как открыть PHP файл в браузере_011
  5. Скопируйте или перенесите нужный вам файл в формате PHP в указанную папку «www» и перезапустите сервер с помощью ярлыка «Restart Denwer», что требуется каждый раз при изменении структуры файлов. При этом здесь важно учитывать особенность имен, так как только документ «index.php» открывается по умолчанию и может игнорировать «index.html». Как открыть PHP файл в браузере_020
  6. Если вам требуется открыть файл с именем «index.php», в адресную строку браузера достаточно будет ввести адрес сайта, как было упомянуто ранее, в качестве которого выступает наименование папки. Для любых других документов, в том числе во вложенных разделах, придется прописать полный путь по аналогии с нашим примером. Как открыть PHP файл в браузере_012

Любое изменение каждого файла внутри локальных директорий Денвера будет автоматически влиять на содержимое в браузере, но только после обновления страницы. В завершение отметим, что данный пакет не гарантирует своевременную поддержку актуальных версий языка, и потому некоторые скрипты могут не запускаться.

Вариант 2: XAMPP

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

Как открыть PHP файл в браузере_013

    Загрузить данную программу на ПК можно с официального сайта, воспользовавшись кнопкой «XAMPP для Windows» в категории «Скачать». Файл установки в данном случае занимает больше места, нежели от Денвера, так как софт можно использовать без подключения к интернету.

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

Способ 4: Загрузка файла на сервер

Последним и наименее актуальным решением поставленной задачи можно считать добавление PHP-файлов и всех связанных ресурсов на настоящий сервер, который будет считывать и правильно интерпретировать содержимое. Основными недостатками способа являются необходимость оплаты аренды сервера и достаточно некомфортное управление файлами, если сайт находится в процессе разработки.

Как открыть PHP файл в браузере_019

Останавливаться на рассмотрении данного способа мы не будем, так как все зависит от сервера и самих PHP-файлов, которые могут содержать исключительно PHP-код или целую веб-страницу. К тому же, во многом, требуемые действия похожи на работу с виртуальным сервером, что было рассмотрено ранее.

Name already in use

pasta / soft / web-server.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Настраиваем веб-сервер для работы с PHP из браузера

Это урок для тех, кто уже знает основы языка PHP. В нем мы научимся отображать простейшие странички в браузере. Для этого мы узнаем как работает, установим и научимся запускать встроенный в PHP веб-сервер, а также веб-сервер Апач.

Прежде чем все это делать, нам надо понять, зачем нужен веб-сервер и что происходит, когда браузер загружает страницу.

Как работает браузер

Браузер — это программа, которая загружает с веб-сервера и отображает на экране веб-страницы. Когда ты переходишь по ссылке или руками вводишь в адресную строку адрес вроде http://example.com/news.html, происходит следующее:

  • браузер устанавливает соединение через интернет с узлом example.com, с запущенной на нем программой под названием веб-сервер
  • браузер посылает программе-веб-серверу запрос по протоколу HTTP (протокол — это язык для общения программ между собой) с просьбой предоставить ему страницу по адресу example.com/news.html
  • веб-сервер в ответ отправляет файл в формате HTML (HTML — это текст, размеченный специальными тегами), содержащий тело страницы
  • браузер отображает этот файл на экране. Если страница включает в себя другие файлы, например, картинки или видеоролики, браузер для каждого из них устанавливает новое соединение и отправляет новый запрос на сервер

Основная и наиболее часто используемая функция протокола HTTP — это позволить одной программе (браузеру) через компьютерную сеть запросить и получить файл у другой программы (веб-сервера), которая, возможно, запущена где-то на удаленном компьютере.

Однако, протокол HTTP позволяет не только скачивать страницы или файлы с сервера, но и отправлять на сервер данные из форм (например при отправке комментария к видео или при регистрации на сайте) или загружать на сервер файлы (например в приложении-файлообменнике). В протоколе описан синтаксис, как именно должен выглядеть запрос, как его нужно обрабатывать, как должен выглядеть ответ. Тот, кто отправляет запрос, называется клиентом (то есть, браузер играет роль клиента), а тот, кто обрабатывает запрос и отвечает на него, называется сервером. Клиент и сервер — это программы, и они могут быть запущены как на одном, так и на разных компьютерах, при условии, что они связаны сетью.

Нам пока не требуется знать синтаксис и особенности HTTP наизусть, но надо иметь общее представление о нем. Потому изучим, как он устроен.

Протокол HTTP поддерживает 2 основных вида запросов (они называются методы): GET и POST . Метод GET используется для получения (скачивания) с сервера файлов и страниц (это одно и то же, так как веб-страница — это просто файл в формате HTML). Браузер указывает в HTTP-запросе URL файла, который он хотел бы получить, и веб-сервер возвращает в HTTP-ответе либо запрошенный файл, либо сообщение об ошибке.

Метод POST позволяет отправлять на сервер данные из заполненных пользователем форм, в том числе с приложенными файлами. Браузер указывает URL, на который отправляются данные, и прикладывает значения, введенные пользователем в поля формы. В ответ сервер может вернуть какую-то страницу (например, с текстом об успешном приеме данных), которую браузер покажет пользователю.

Вот пример HTTP-запроса, который может послать браузер для получения данных с сервера. Он просит сервер передать ему содержимое страницы по адресу http://example.com/news.html :

В HTTP запросы и ответы могут состоять из 3 частей — стартовая строка, заголовки и тело. В примере выше стартовая строка GET /news.html HTTP/1.1 содержит метод запроса, путь к файлу из URL и версию протокола. В HTTP любой запрос начинается со стартовой строки, содержащей эти 3 элемента.

URL — это указатель на конкретный файл или страницу на сервере («адрес» или идентификатор страницы). Напомню, что у нас есть урок, который рассказывает подробнее, что такое URL и из каких частей он состоит.

После стартовой строки идут заголовки запроса. Они содержат дополнительную информацию о запросе и о браузере. Например, заголовок User-Agent содержит название и версию клиента, а заголовок Accept-Language указывает, на каких языках (в данном примере — русский и английский) клиент предпочел бы получить информацию. Обязательный заголовок только один — Host , он указывает домен, с которого мы запрашиваем страницу, все остальные заголовки можно не указывать. Заголовки заканчиваются одной пустой строкой.

После заголовков (и пустой строки) может идти тело запроса, содержащее какие-то данные, которые отправляются на сервер. В этом примере тело запроса отсутствует.

Вот как может выглядеть ответ на этот запрос, если запрашиваемая страница есть на сервере:

Ответ точно также, как и запрос, начинается со стартовой строки. Она всегда содержит ровно 3 элемента: версию протокола, которую использует сервер ( HTTP/1.1 ), код состояния, указывающий, успешно ли обработан запрос или была ошибка (в данном случае 200 , успешно), и текстовое человекочитаемое пояснение кода состояния ( Ok — все хорошо).

После стартовой строки идут заголовки. Заголовок Server описывает название и версию программы веб-сервера, которая обработала запрос. Заголовок Content-Type описывает тип файла, который содержится в теле ответа. В данном случае это text/html; charset=utf-8 , то есть текстовый файл с разметкой на языке HTML в кодировке utf-8.

После заголовков идет пустая строка и за ней тело ответа, которое в данном примере содержит текстовый файл в формате HTML ( <h1>Hello world</h1> ). Браузер отобразит его содержимое на экране.

HTML файл содержит текст страницы и специальные теги (метки) вроде <h1> , которые разбивают этот текст на абзацы, заголовки, позволяют добавлять в него ссылки, картинки, формы и многое другое. Ты можешь увидеть полученный от сервера HTML-код любой страницы в интернете, зайдя на нее и нажав Ctrl + U в браузере или выбрав в меню что-то вроде «Вид» — «Показать исходный код страницы».

Заголовок Content-Type влияет на то, как именно браузер отобразит содержимое. Если там будет например указано image/png , то браузер будет воспринимать тело ответа как картинку в формате PNG и попытается его отобразить. Конструкция вроде image/png называется MIME-тип, она состоит из 2 частей: общего типа данных ( image , text , audio ) и конкретного формата файла. Подробнее про MIME-типы можно почитать в Википедии.

Как видишь, сервер в ответ сообщил что запрос обработан успешно. Вот пример ответа с сообщением об ошибке:

Этот ответ отличается от предыдущего кодом состояния. В данном случае он равен 404 , что значит «запрошенный файл отсутствует на сервере». Тело ответа содержит HTML-код с текстом ошибки («Page . not found on this server»), которая будет показана пользователю.

Вот самые распространенные коды состояний:

  • 200 Ok — все ок, тело ответа содержит запрошенный файл
  • 500 Internal Server Error — сервер не смог обработать запрос из-за ошибки на нем
  • 404 Not Found — запрошенный файл не был найден на сервере (скорее всего, неправильно указан URL в запросе)
  • 403 Access Denied — доступ к запрошенному файлу запрещен
  • 301 Moved Permanently — запрошенный файл находится теперь по другому адресу, который указан в заголовке ответа Location . Браузер должен сделать новый запрос по этому адресу.
  • если тебе интересно, можешь глянуть полный список кодов состояний в Википедии

Рассмотрим напоследок еще пример POST запроса. Допустим, что где-то на сайте example.com есть форма логина, пользователь ввел туда свои логин и пароль и отправил ее. Вот как будет выглядеть POST запрос, который браузер отправит на сервер:

Этот запрос точно так же содержит стартовую строку, заголовки запроса, и тело запроса (в GET-запросе выше тела не было), в котором передаются введенные в форму пользователем данные (логин и пароль). Заголовок Content-Type указывает, что в теле содержатся данные из формы и указывает способ их кодирования, а заголовок Content-Length содержит размер данных в байтах.

Что отправит сервер в ответ на этот запрос, зависит от того, как программа на сервере будет обрабатывать эти данные.

Формат запросов и ответов, поведение веб-сервера описано в документации к протоколу HTTP. Если тебе интересны подробности, можно прочесть мой урок по HTTP или начать с Википедии: https://ru.wikipedia.org/wiki/HTTP.

Ты можешь увидеть какой именно запрос отправляет твой браузер, зайдя на любой сайт, открыв developer tools на вкладке Network (Ctrl + Shift + I в Хроме (и его клонах вроде яндекс-браузера), Опере, Фаерфоксе, F12 в ИЕ, через меню «инструменты» в Сафари) и перезагрузив страницу. Ты увидишь список отправленных HTTP запросов, а при клике по ним сможешь их посмотреть.

Таким образом, задача браузера — отправить запрос на сервер, получить HTML файл и отобразить на экране. А задача веб-сервера — принимать и выполнять запросы от браузера, например предоставлять (или генерировать) запрошенные файлы и страницы.

Статические и динамические страницы

Есть 2 варианта, откуда веб-сервер может получать файлы, которые он отдает в браузер. Статический файл — это файл, который расположен на жестком диске сервера. Разработчик подготавливает файлы и загружает их на сервер, а тот по HTTP-запросу отдает их в браузер. Преимущество статических сайтов в том, что их просто создавать, они быстро работают, они очень надежны и там редко возникают ошибки или уязвимости, но у них есть недостаток: они не интерактивны, на них нельзя сделать регистрацию, добавление комментариев, постов, лайки и другие возможности, которые требуют многовенного обновления информации. Чтобы изменить что-то на таком сайте, веб-мастер должен вручную отредактировать эти HTML файлы и выгрузить измененные копии на сервер. Не-программист не может это сделать.

Например, статический сайт хорошо подходит для публикации документации, информационного сайта, финансового отчёта, книги, какой-то информации, которая редко обновляется.

Также, статический сайт имеет одну особенность: так как это просто набор файлов, то его можно просматривать даже без веб-сервера и связи с интернетом. Достаточно сохранить HTML-файл со страницей себе на компьютер (например, нажав Ctrl + S в браузере), после этого её можно открыть и просмотреть в браузере (дважды кликнув или перетащив его в окно браузера). Или можно сделать архив с содержимым сайта и раздавать пользователям.

Динамические страницы работают по другому принципу. В этом случае страница генерируется программно, «на лету». При поступлении запроса от браузера веб-сервер запускает программу (например, на PHP), и то, что выведет эта программа, веб-сервер отправит в браузер в качестве ответа на запрос. Обычно программа хранит данные сайта (статьи, новости, комментарии, пользователей) в базе данных, потому при поступлении запроса эти данные берутся из базы и подставляются в шаблон страницы.

Динамические сайты сложнее сделать, в них чаще бывают ошибки, при неправильном написании возможны уязвимости, они сильнее нагружают процессор и память сервера (на 2019 год типичный статический сайт может обработать десятки тысяч запросов в секунду, а динамический — несколько сотен), но зато они позволяют реализовать взаимодействие с пользователями. Например, при отправке пользователем комментария программа может добавлять его в базу данных и он появится на странице.

Также, на динамическом сайте возможно сделать редактирование и добавление информации на сайт не с помощью правки кода, а через «админку» («админка» — это административный интерфейс, закрытая часть сайта, позволяющая управлять им). Это позволяет заказать разработку сайта, а далее обновлять его без участия программиста и необходимости оплачивать его труд. Потому большинство сайтов в интернете — динамические.

Наконец, возможны и смешанные подходы. Например, можно сделать динамический сайт с ограниченным доступом, на котором производится редактирование информации, и публичный сайт на статической схеме. Редактор добавляет информацию на динамическом сайте, жмет кнопку публикации, и генерируется статическая копия сайта, которая выгружается на публично доступный сервер. Это позволяет совместить плюсы обоих подходов. По такой схеме работают некоторые государственные сайты.

Язык PHP заточен под создание динамических сайтов, что и сделало его очень популярным. Есть и другие языки, пригодные для этого — например, Java, Ruby, Python, Javascript, C# — но на PHP простые страницы сделать проще.

Итак, для того, чтобы отобразить в браузере какую-то страницу, нам нужен веб-сервер (чтобы отвечать на запросы браузера). Есть несколько разных программ-серверов, например Apache, Nginx, но мы начнем с изучения простого веб-сервера, встроенного в интерпретатор php.

Сначала нам необходимо установить PHP себе на компьютер (или получить доступ к линукс-серверу, где он уже установлен). Как именно устанавливать PHP, зависит от операционной системы:

  • для Windows — инструкции описаны в уроке по установке PHP на Windows
  • для линукс — способ зависит от используемого дистрибутива. Например, в дебиан или убунту это делается командой sudo apt-get install php5 , в других дистрибутивах — немного другой командой. Погугли
  • для MacOS X — погугли
  • для андроида — придется помучиться. На июль 2016 года актуальна такая последовательность действий: для начала надо установить scripting layer for android — скорее всего его нет в Google Play, и надо установить apk файл вручную (будь осторожен, то что в Google Play находится по словам sl4a — это какие-то посторонние приложения). Затем из этого приложения надо установить PHP. И тогда появится возможность открыть окно командной строки и запускать сам PHP.

PHP — это программа командной строки. Это значит, что у него нет никакого графического интерфейса с кнопками и окнами, а для выполнения какого-то действия надо набрать в командной строке правильную команду. Потому сначала рекомендую изучить наш урок по использованию командной строки. Настройки php задаются в файле php.ini, который в linux лежит в /etc/php/, а в Windows — в папке с PHP, но нам пока не требуется их менять.

Проверь, что ты смог правильно установить PHP. Для этого набери команду

Если все верно, то она выведет информацию о версии установленного интерпретатора PHP (если у тебя PHP не находится в PATH , то вместо php придется писать полный путь к файлу, например c:\php\php.exe ). Еще одна полезная команда — это php -i — она выводит информацию о текущих настройках PHP. Все возможные опции, которые можно указать, перечислены в мануале по использованию php.

Встроенный в PHP сервер

В интерпретатор PHP встроен простой веб-сервер. Его не стоит использовать на реальном сайте, но он годится для того, чтобы запускать простые скрипты на своем компьютере.

Инструкции ниже требуют знания командной строки, если ты не знаешь ее, то прочти сначала урок по ней.

Итак, в PHP встроен простейший веб-сервер для разработчиков. Чтобы запустить его, создай папку, из которой будут раздаваться файлы, она называется корень сервера или document root. Допустим, это d:\server. Открой командную строку и перейди в эту папку, а затем запусти веб-сервер, набрав следующие команды. После каждой команды надо нажимать клавишу Enter. Будь внимателен при их наборе, не пропускай пробелы, не путай прямую и обратную наклонную черту:

(если ты работаешь не под Windows, то команды будут иметь немного другой вид). Если тебе лень писать каждый раз эти команды вручную, то в уроке по командной строке описано, как можно поместить их в bat-файл, который можно запускать просто двойным кликом по иконке.

-S обозначает «запуститься в режиме веб-сервера». Надо написать именно заглавную S, c маленькой буквой не заработает. localhost (вместо него можно еще писать 127.0.0.1 — это твой собственный адрес) обозначает принимать соединения только со своего компьютера, и не принимать соединения с других устройств (если хочешь чтобы твой сервер был доступен во всей локальной сети, пиши вместо localhost адрес 0.0.0.0 — после этого к тебе можно будет зайти по ip).

9001 — это номер порта, на котором сервер будет ждать соединения от браузера. Если произойдет ошибка и будет написано что этот порт уже занят, введи другое число (от 1 до 65534), например 9002. Вообще-то обычно для веб-сервера используется порт 80, но у тебя он может быть занят другими программами — например, скайпом, торрентокачалкой или чем-то еще (если это так, стоит зайти в их настройки и запретить его использовать на будущее). Также ты можешь увидеть список занятых портов командой netstat -an , а команда netstat -abn покажет программу, занявшую порт (нужно запускать эту команду из консоли с повышенными привилегиями).

Учти что в линуксе и маке, чтобы открыть порт ниже 1024, нужны права администратора (то есть сервер надо запускать через sudo: sudo php . , что не очень безопасно и не рекомендуется).

Номер порта нужен для того, чтобы на компьютере можно было одновременно запустить несколько работающих с сетью программ. Мы назначаем каждой из них свой номер порта. Когда на компьютер приходят данные из сети, ОС по номеру порта понимает какой именно программе они адресованы. Две программы не могут использовать одновременно один и тот же порт. Подробнее о TCP-портах.

Завершить работу сервера можно, нажав Ctrl + C или закрыв окно консоли. Сервер будет в процессе работы писать в консоль информацию о поступающих от браузера запросах и информацию о возникающих ошибках.

Теперь надо проверить, как работает наш сервер. По умолчанию веб-сервер просто отдает файлы из корневой папки, путь к которым указан в URL. Создай в папке сервера файл, например 1.txt и напиши в нем текст, например hello world (латиницей, чтобы не беспокоиться о кодировках). После этого открой браузер и введи в адресную строку адрес

В этом URL мы указываем, что браузер должен отправить запрос по протоколу HTTP на узел localhost (то есть твой собственный компьютер), на порт 9001 (который использует веб-сервер) и запросить у него файл /1.txt. Если ты забыл что такое URL, то у нас есть урок по ним: ../network/urls.md.

Если все верно, ты должен увидеть содержимое текстового файла, а в консоли появится строчка с этим запросом. Если что-то не работает — перепроверяй, запущен ли php, что он пишет в консоль, правильно ли ты написал слово localhost и номер порта.

Попробуй теперь скопировать в корневую папку какую-нибудь картинку, например, cat.jpg, и открыть в браузере URL http://localhost:9001/cat.jpg . Ты должен увидеть эту картинку.

Повторим еще раз, что происходит в этом случае:

  • браузер соединяется с веб-сервером на порту 9001
  • браузер отправляет запрос на получение файла cat.jpg
  • сервер обрабатывает запрос, находит файл и отправляет ответ с кодом 200 , заголовком Content-Type: image/jpg и содержимым файла в теле ответа
  • браузер извлекает картинку из тела ответа и отображает на экране

Разумеется, веб-сервер и браузер не обязательно запускать на одном и том же компьютере. Можно запустить веб-сервер на одном компьютере, и делать запрос из браузера с другого компьютера — все будет работать точно так же. Именно это и происходит, когда ты заходишь на какой-то сайт — твой браузер запрашивает и отображает файлы с удаленного компьютера.

Пока мы запрашивали текстовые файлы и картинки, сервер в PHP отдавал их как статические файлы. Но сервер умеет еще генерировать страницы динамически. Если мы запросим PHP-файл, то веб-сервер вместо отдачи этого файла запустит записанный в нем код и отдаст в браузер то, что выводит этот код.

Создадим в корневой папке файл 1.php с таким содержимым:

Функция header() позволяет добавить в HTTP-ответ произвольный заголовок. В данном случае мы используем ее, чтобы сказать браузеру, что данные, которые мы выводим, являются обычным текстом в кодировке utf-8 без HTML-разметки и надо отобразить его как есть. Если это не сделать, то по умолчанию PHP укажет тип text/html , и браузер будет думать что перед ним текст в формате HTML. Из-за этого, например, не будут отображаться переводы строк.

Если ты знаешь язык PHP, то наверно догадываешься, что выведет этот скрипт. Набери в браузере URL http://localhost:9001/1.php . Если все верно, ты увидишь на экране случайное число. Обнови страницу и число поменяется. Это происходит из-за того, что каждый раз браузер отправляет новый HTTP-запрос, сервер видит что запрашивается php файл, и запускает написанную в нем программу, и отдает в браузер то, что выводит эта программа. Ну а браузер отображает полученный текст на экране.

Обрати внимание, что браузер сам не умеет выполнять PHP-код. Он лишь посылает запрос на сервер и отображает то, что придет в ответ. PHP-код выполняет именно сервер.

Если ты видишь вместо него белую страницу, а исходный код в браузере показывает текст скрипта — значит скрипт не выполнился. Проверь, правильный ли URL в адресной строке браузера. Если там что-то вроде file://d:/server/1.php — значит ты невнимательно прочел инструкции выше. Протокол file:// обозначает, что браузер открывает файл напрямую с диска, а не запрашивает с веб-сервера, и потому PHP-код не будет выполняться.

Если при выполнении скрипта возникают какие-то ошибки, они отображаются в консоли, где запущен сервер. Не забывай туда поглядывать.

Наконец, давай сделаем еще один файл, который показывает текущие настройки PHP и который пригодится нам если что-то пойдет не так. Создай файл info.php с текстом:

И открой через браузер. Ты увидишь большую синюю таблицу — поизучай ее, она пригодится тебе не раз, когда ты будешь разбираться почему что-то не работает.

Передача аргументов в скрипт

Для того, чтобы передать нашей PHP-программе какие-то данные, мы можем вписать их в query string (перечитай урок про URL, если не знаешь, что это такое). Это часть URL, которая идет после знака вопроса, например: http://localhost:9001/add.php?x=10&y=20 . Перед запуском программы PHP анализирует query string и извлекает значения из нее в специальный массив $_GET . Напишем скрипт add.php, который выводит на экран сумму переданных значений:

Если пользователь не укажет в URL значения x и y , то PHP не поместит их в массив $_GET . Когда наш скрипт попытается обратиться к $_GET[‘x’] , произойдет ошибка. Потому мы делаем проверку, что в массиве есть такой элемент, и если его нет, то присваиваем переменной значение 0. Если элемент есть, то мы обрабатываем значение функцией floatval, которая преобразует любое значение в целое или дробное число. Даже если пользователь вместо числа напишет бессмысленное значение вроде x=xyz , в программе не произойдет ошибки.

В PHP7 добавили новый оператор объединения с null, с помощью которого можно чуть упростить код:

В этом месте ты можешь достать свои старые задачи, которые ты делал на PHP, и попробовать позапускать их через сервер и браузер.

Разумеется, вручную вписывать аргументы в URL (особенно, если они содержат спецсимволы) не очень удобно. В языке HTML есть возможность помещать на страницу формы с полями ввода, выпадающими списками, чекбоксами и радиокнопками. При заполнении такой формы и нажатии кнопки отправки браузер сам соберет URL с добавлением введенных значений и отправит запрос на сервер.

Пробелы и перевод строки

Чтобы переносы строк нормально работали и в браузере, и при запуске скрипта в консоли, можно использовать для них традиционный \n, а в начале программы поставить

Это заставит браузер воспринимать то, что выводит твоя программа, как обычный текст, а не HTML-код, и уважать переносы строк в нем. Иначе перенос строки будет в исходном коде страницы (его можно увидеть нажав Ctrl + U), но на самой странице его не будет.

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

Если ты попытаешься открыть URL, в котором не указано имя файла, например: http://localhost:9001/ , то сервер будет искать файлы с названием index.php или index.html в корневой папке. Это так называемый «индексный» файл, который отдается по умолчанию, если конкретное имя файла не указано.

Если в URL указано только имя папки, без файла, то сервер будет искать индексный файл в ней. Ну, например, для URL http://localhost:9001/some/folder/ сервер будет искать файлы d:\server\some\folder\index.php или d:\server\some\folder\index.html .

До сих пор мы указывали путь к файлу или папке в URL. Но, что если мы хотим, чтобы наша страница имела бы более красивый URL, не /1.php , а например http://localhost:9001/latest-news , который не соответствует папке или файлу на диске? Для этого нам придется написать свой скрипт, который будет анализировать запрашиваемый URL и решать, что делать. Скрипт должен либо обработать запрос и что-то вывести, либо вернуть значение false для того, чтобы обработать запрос стандартным образом.

Имя скрипта маршрутизации надо указать при запуске веб-сервера. Попробуем написать простой скрипт с такой логикой:

  • если запрошен URL /latest-news, то выполнить скрипт news.php
  • если запрошен URL /hello, то вывести фразу «hello world»
  • иначе искать указанный в URL файл

Создадим в корневой папке скрипт router.php с таким кодом. Если ты видишь тут незнакомые функции и команды, погугли их:

Чтобы веб-сервер использовал скрипт маршрутизации, его надо запускать такой командой:

Попробуй открыть URL вроде http://localhost:9001/hello и проверить, что все работает, как и задумано.

Вот краткое объяснение использованных в скрипте выше конструкций:

    — это специальный массив, в который перед выполнением скрипта PHP помещает информацию о конфигурации сервера и параметрах пришедшего HTTP-запроса. Ну например, пришедшие от браузера заголовки помещаются в этот массив. В нем есть элемент REQUEST_URI , который содержит указанный в запросе путь из URL. Если тебе любопытно, что в этом массиве есть еще, сделай скрипт с командой var_dump($_SERVER) и посмотри. — это функция, которая извлекает из URL указанную часть — это команда PHP, которая выполняет код из указанного в ней файла. — это встроенная в PHP константа, которая содержит полный путь к папке, где находится данный PHP-файл (например, c:\programs\php ) — команда завершения PHP программы — это функция, которая добавляет в HTTP-ответ (который отдаст веб-сервер) указанный заголовок

Апач сложнее чем встроенный сервер, но дает больше возможностей.

Что делать дальше

Ты наверно заметил, что в тексте выше не раз повторяется слово HTML. Это неспроста — на этом языке верстаются веб-страницы. Иди и изучи основы этого языка, чтобы ты умел сверстать хотя бы страницу с заголовком, картинкой и ссылкой. Это займет у тебя максимум пару дней.

Наконец, стоит почитать туториал в официальном мануале PHP и научиться добавлять в HTML странички PHP код, а также обрабатывать данные из форм:

После этого прочитай урок про шаблоны.

Изучив все это, попробуй решить задачи ниже. Если ты смог их решить — отлично, ты готов к написанию своего первого веб-приложения на PHP — задаче про список студентов.

Полезные функции и конструкции PHP, которые стоит изучить

  • require , require_once
  • header()
  • setcookie()

Отправка HTTP запроса

Изучив протокол HTTP, попробуем самостоятельно отправить HTTP запрос и получить на него ответ. Для этого мы будем использовать программу telnet . Она работает под Windows и под linux (и возможно под маком). Вообще, она предназначена не для выполнения HTTP запросов, а использовалась много лет назад для выполнения команд на удаленном сервере. Но так как она просто передает вводимые данные на сервер и выводит полученный ответ, то мы можем использовать ее для своих целей.

Запускается она так: telnet хост порт , например telnet wikipedia.org 80 . Обрати внимание, что надо писать именно имя хоста или IP-адрес, а не URL. Нельзя написать telnet http://wikipedia.org — это работать не будет. Номер порта для протокола HTTP по умолчанию — это 80.

Если запустить эту команду, то она соединится с указанным сервером на указанном порту и будет передавать на сервер все, что мы напечатаем, а затем отобразит присланный сервером ответ. То есть мы можем набрать текст HTTP-запроса и увидеть на экране HTTP-ответ от сервера. Но руками набирать HTTP-запрос не очень удобно, так как легко ошибиться (а исправить ошибку нельзя), и на сервере может стоять ограничение по времени, после которого он разорвет соединение, не дождавшись окончания запроса. Потому лучше заранее записать запрос в текстовый файл, и запустить команду, чтобы она читала бы запрос из него, вот так:

При сохранении файла выбери в редакторе опцию «кодирование перевода строк» как «Windows». В протоколе HTTP перевод строки должен кодироваться как \r\n ( CR LF ). Кстати, Блокнот Windows использует именно такой формат, и потому подойдет для набора запроса.

В файле с запросом должно быть примерно такое содержимое:

Не забудь, что запрос должен как минимум содержать стартовую строку и заголовок Host . Не забудь заменить название домена на правильное и добавить одну пустую строку после заголовков. Создав файл, попробуй выполнить команду telnet. Если все верно, то ты должен увидеть ответ от сервера, начинающийся со строки вроде HTTP/1.1 200 Ok . Попробуй добиться именно ответа с кодом 200 , пробуя разные сайты.

Так как сейчас (в 2016 году) многие сайты уже перешли на протокол HTTPS (который отличается от HTTP использованием шифрования и портом 443 по умолчанию), то часто ты будешь получать ответы, требующие перейти на зашифрованное соединение, вроде такого:

К сожалению, написать зашифрованный запрос руками в текстовом редакторе вряд ли возможно. Однако, есть программы, которые могут взять шифрование на себя. Для этого тебе надо установить библиотеку OpenSSL. Найти сборку под Windows не так-то просто. На момент написания статьи (2016) ссылки на скачивание библиотеки под Windows доступны на этой странице: https://wiki.openssl.org/index.php/Binaries (отсюда переходим на сайт https://indy.fulgan.com/SSL/ и скачиваем самую новую версию вроде openssl-1.0.2m-i386-win32.zip или openssl-1.0.2m-x64_86-win64.zip в зависимости от разрядности ОС. Впрочем, 32-битная версия должна работать везде. Скачанный архив распаковываем в любую папку и при желании добавляем ее в PATH). Под linux библиотека устанавливается командой вроде sudo apt-get install openssl в зависимости от используемого дистрибутива.

Установив библиотеку, ты можешь установить HTTPS соединение и отправить запрос такой командой:

Если исполняемый файл openssl не находится в PATH, то надо писать полный путь к нему, например, c:\openssl\openssl.exe . Обрати внимание, что HTTPS по умолчанию использует порт 443 вместо 80. Openssl возьмет на себя шифрование твоего запроса и расшифровку ответа.

При соединении openssl выведет довольно много отладочной информации об используемом сервером сертификате и параметрах SSL/TLS шифрования. Ее вывод можно отключить, дописав к команде (до символа < ) флаг -quiet . Про другие опции можно прочесть в мануале по openssl s_client (англ., сложный).

Разумеется, для отправки HTTP-запросов есть и программы с графическим интерфейсом. Они гуглятся по словам «GUI HTTP client». Однако, чтобы ими пользоваться, надо понимать основы протокола HTTP и стоит все-таки хотя бы раз попробовать отправить запрос вручную. Примеры приложений (и расширений для ФФ):

    (сложный) (расширение для Firefox)

Еще один кредит

Для решения этой задачи тебе надо изучить основы HTML, HTML-формы и глобальную переменную $_GET в PHP.

Сделай форму с 3 полями ввода: сумма кредита, ежемесячная выплата, комиссия и проценты в месяц. При их заполнении программа должна рассчитать кредит (аналогично задаче про айфон) и вывести один из вариантов:

  • надпись «поле X заполнено неверно», если введены неправильные данные
  • надпись «выплатить кредит невозможно так как ежемесячный прирост X больше ежемесячной выплаты», если выплатить кредит не получится
  • надпись «время выплаты: N месяцев, сумма выплаты: X»

Для решения этой задачи надо изучить основных HTML, HTML-формы и функцию htmlspecialchars() .

Сделай страницу с формой (использующей метод GET) из поля ввода textarea (с именем text) и кнопки отправки. Никакого оформления и CSS не требуется, просто черный текст на белом фоне. При вводе любого текста и нажатия кнопки внизу под textarea должен отобразиться введенные текст и ссылка.

Текст должен точно соответствовать введенному, корректно отображать все символы, включая пробелы и переводы строк (тут тебе поможет тег pre), точно так как их ввел пользователь. Проверь что сочетания вроде

Отображаются ровно в том же виде как введены.

Кроме текста, надо выводить ссылку вида script.php?text=. &lt=1, которая содержит в параметре text введенный текст, а в параметре lt единицу и открыв которую, мы можем увидеть его на странице.

Это задача на умение правильно экранировать символы. Например, в языке HTML символы вроде < или & имеют специальное значение (они открывают тег или HTML мнемонику) и их надо правильно экранировать. Аналогично с параметрами ссылки.

  • про то, как корректно вставить текст с любыми символами в HTML-код, написано в уроке про XSS
  • по умолчанию в HTML любое число переводов строк и пробелов воспринимается как один пробел. Чтобы сохранить все пробелы и переводы строк при выводе, нужно либо использовать HTML-тег pre, либо CSS-свойство white-space
  • при подстановке параметра в ссылку вроде x.php?a=. необходимо корректно экранировать спецсимволы. Как это сделать, описано в уроке про структуру URL
  • при подстановке ссылки в HTML-атрибут href ее, разумеется, тоже нужно корректно экранировать

Для решения этой задачи необходимо изучить куки, переменную $_COOKIE и функцию setcookie() .

Сделай скрипт, запоминающий сколько раз пользователь заходил на страницу и показывающий ему это число: «добро пожаловать — в N-й раз». Для хранения надо использовать куки, чтобы у каждого пользователя был свой счетчик.

Проверь что при открытии окна браузера в анонимном режиме или другого браузера счетчик в нем работает независимо, а при очистке кук сбрасывается в 0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *