как написать скрипт на php
PHP с нуля. Урок 1
PHP ( PHP: Hypertext Preprocessor, задумчивый препроцессор
гипертекста) — скриптовый язык программирования, oриентированный на web.
B 1 yрокe познакомимся с основным синтаксисом, а так же напишем свой первый скрипт.
Основы синтаксиса:
—
— начало и конец скрипта
оператор присваивания — =
— Вывод текстовой информации — echo (может выводить html-код)
Урок 1. Создание первого скрипта
Как вы видите скрипт состоит из одной строчки.
Что бы выполнить скрипт необходимо соответствующее ПО, для пользователей Windows я рекомендую Denwer (http://denwer.ru)
После установки Denwera создаем в каталоге hosts папку Script.test, в которой в свою очередь создаем папку
WWW. В папке WWW создаем файл index.php? в который переносим содержимое нашего файла.
После сохранения файла перезапустите Denwer. Затем в строке браузера наберите script.test
И вауля! Мы видем надпись Hello World!
Как ненадо писать Hello World:
Hello World Не пишется так
Ну уж точно не так:
Завершение.
На этом наш урок подошел к концу, ну а в завершении небольшая подборка полезных ссылок:
denwer.ru — сайт откуда можно скачать Denwer
ru.wikipedia.org/wiki/PHP — Что такое PHP
http;//php.net — самоучитель по PHP
О песочнице
Это «Песочница» — раздел, в который попадают дебютные посты пользователей, желающих стать полноправными участниками сообщества.
Если у вас есть приглашение, отправьте его автору понравившейся публикации — тогда её смогут прочитать и обсудить все остальные пользователи Хабра.
Чтобы исключить предвзятость при оценке, все публикации анонимны, псевдонимы показываются случайным образом.
О модерации
Не надо пропускать:
Учимся писать скрипты правильно
Многие начинающие веб-программисты знакомятся с языком посредством книг. Книга бесспорно очень важна и нужна, но в ней приводятся примеры (для начинающих), которые по своей сути не являются правильными с точки зрения устойчивости и переносимости скрипта. Под устойчивостью понимается возможность возникновения ошибок различного вида, под переносимостью – тоже самое, но при переносе скрипта с домашней локальной машины на сервер хостнг-провайдера.
Ниже я бы хотел сразу показать начинающим веб-разработчикам как надо учиться сразу писать скрипты, чтобы затем не испытывать лишних проблем и не «ловить» непонятно откуда вылезающие ошибки.
Сразу скажу, что я сам с этим столкнулся, так что все это прошло через мои мучения….
Рассматривать я буду следующие моменты:
1. Настройка PHP для локальной машины и на сервере.
2. Где зарыта «@»?
3. register_globals = Off и никак иначе.
4. Основные аспекты синтаксиса. Литерал ор нот литерал…
1. Настройка PHP для локальной машины и на сервере.
Почему я именно с этой главы начинаю. Дело в том, что многие на локальной машине сразу отключают показ всех ошибок. Это – НЕ правильно. Вместо того чтобы тупо смотреть в монитор и искать, где, как окажется, не хватает точки с запятой, можно по ошибке, выдаваемой PHP сразу понять, в чем дело.
Но сначала хочу сделать небольшое лирическое отступление по части того, как настраивать PHP, как Apache modul или fast-CGI.
Самый оптимальный вариант – настраивать, как модуль веб-сервера. Для этого в конфигурационном файле httpd.conf веб-сервера Apache пишем следующие строчки:
Отличие от FastCGI – следующие. Первое. При FastCGI php.ini будет подгружаться в память веб-сервера приблизительно каждый второй раз при запуске скрипта, при установке, как модуля Apache загрузка конфигурации PHP будет осуществляться только при загрузке или рестарте веб-севрера, само собой быстродействие и нагрузка на сервер будет меньше. Помимо этого, при установке как fastCGI недоступны определенные функции. Начинающему программисту они не понадобятся., но при разработке крупного Интернет-приложения вы можете столкнуться с проблемами. А проблемы лучше предотвращать.
Теперь перейдем к конфигурации самого PHP. В конфигурационном файле php.ini в обязательном порядке устанавливаем следующие директивы с ниже написанными значениями:
Писать или не писать ошибки в лог файлы – это уже на ваше усмотрение.
На сервере в хостиг-компании, обязательно, выключайте все эти директивы в целях безопасности, дабы потенциальный злоумышленник не мог узнать пути, где лежат ваши скрипты. Но по хорошему, когда вы уже публикуете свой скрипт в глобальной сети, он не должен выдавать никаких ошибок.
Помимо этого
По умолчанию директива max_execution_time имеет значение 30, но для быстроты работы, лучше ставить меньше. Если у вас что-то «зациклилось», то 10 секунд вполне достаточно чтобы понять это.
В 3 главе я расскажу более подробно об этом…
Очень часто начинающие веб-разработчики не понимают разницы между ‘ и “, поэтому выключаем директиву. В 4 главе данный момент будет показан на примере…
2. Где зарыта «@»?
Это, пожалуй, самая основная ошибка начинающих программистов – использование “@”. Этот символ, перед каким-либо оператором подавляет вывод ошибки и ее запись в лог. Он не позволяет на стадии отладки отследить ошибку, и вы судорожно пытаетесь понять, в чем дело.
Поэтому строго на строго запрещаем вам использовать @.
Вы спросите, а как же тогда сделать, чтобы не выводилась ошибка?
Чтобы не выводилась ошибка ее надо либо предотвращать, как в случае с файлами, то есть а) проверять файл на существование, б) проверять, а можно (есть права) в него что-то записать is_writeable();.
В других случаях, например при использовании mysql_connect(); надо проверять значение, которое вернет функция. Как правило, по нему можно определить, есть ошибка или нет. Обычно при ошибке возвращается значение FALSE, NULL или пустая строка.
Это позволит вам, выдавать пользователю не пустую страницу, если, к примеру, он попытался обратиться к информации (?n=14), а информация хранится у вас в файлах, и файла 14 не существует, а текст сообщение: «Информация не найдена».
«Ловля» ошибок является также очень важным аспектом безопасности при работе скрипта.
3. register_globals = Off и никак иначе.
Если в первых двух главах я делал акцент на тех моментах, с которыми начинающий программист столкнется уже сразу, то в этой главе я расскажу о таком моменте, который проявится уже позже… зачастую с ним все сталкиваются при переносе скрипта (уже готового) на сервер хостинг провайдера. Лично я долго привыкал к register_globals = Off, поэтому товарищи, начинающие программисты, сразу ставьте эту директиву выключенной. Помимо этого, данный момент ОЧЕНЬ ВАЖЕН в обеспечении безопасности скрипта.
Итак. В чем же вся загвостка. Сначала рассмотрим случай, когда у нас register_globals = On. Как вы уже, наверное, знаете, данные в скрипт могут передаваться тремя способами, сказал грубо, на самом деле их два. Первый это GET, т.е. данные передаются через адресную строку браузера после символа “?”, второй – POST, при его использовании данные предаются в неявном для пользователя виде. Метод POST используется, как правило, для отправки данных формы. Ну и третий – это Куки, переданные от пользователя скрипту.
Рассмотрим такой случай. У нас есть форма, которая находится по адресу index.php? form. В форме несколько текстовых полей полей. Пусть это будет family, name, phone. Форма отправляется на тот же index.php но методом POST. Проверив все данные, мы записали пользователю две Куки с именами family и form, во второй мы записали время доступа к форме, к примеру.
Представим, что у нас часть файла index.php состоит из следующего кода, т.е. в случае если пользователь уже ввел данные на форме, они ему показываются, если нет – выводится форма. И все это по адресу index.php?form.
Т.е. фактически все сводится к тому, что есть возможность подмены всех переменных. По сути это существенный минус в безопасности, поскольку очень велика вероятность того, что злоумышленник сможет посмотреть какие- либо важные файлы на сервере.
Теперь о том, как это реализовать под register_globals = Off
Что это значит. Ниже я просто перепишу скрипт, данные мною ранее для register_globals = Off..
В этой же главе хочу рассмотреть следующий маленький пример. Опять же сначала рассмотрим пример с включенным register_globals.
4. Основные аспекты синтаксиса. Литерал ор но литерал…
Разницы между “ и ‘ нет.
2. Вывод переменных часто осуществляют таким образом:
Такая строка «разбирается» интерпретатором намного должен, чем
Первый вариант наиболее предпочтителен, да и с точки зрения редактирования программного кода – легче понять, где у тебя переменная, а где у тебя текст.
Синтаксис PHP
Как работают PHP скрипты
PHP работает точно также. Ты пишешь команды одну за другой, а PHP последовательно их исполняет.
Что такое PHP скрипт
Но есть одно важное отличие:
Скрипты запускаются только через http-запросы в браузере. Это значит, что для запуска скрипта script.php необходимо в адресной строке браузера написать site.ru/script.php
Веб-серверы чаще всего настроены так, что при заходе на главную страницу (например site.ru ) автоматически запускается файл index.php или index.html, лежащий в корне сайта.
Создай в корневой папке сайта файл с названием index.php и открой его в своём текстовом редакторе. При наличии файла index.html его нужно удалить.
Обязательно следи за кодировкой скриптов. Кодировка должна быть либо UTF-8 без BOM (если такая доступна в твоём редакторе), либо просто UTF-8.
Вывод чисел и строк в PHP
Команда echo отвечает за вывод информации на экран. После оператора указывается значение, которое нужно вывести.
Чтобы вывести текст, его нужно указать в одинарных или двойных кавычках:
Команды в PHP разделяются точкой с запятой. Для удобства чтения каждую команду принято писать с новой строки:
Результат в браузере:
Вывод HTML кода в PHP
HTML-код можно перемешивать с командами PHP:
Также HTML код можно подставить в PHPшную строку:
Результат в браузере:
Мы можем как угодно совмещать PHP код и HTML теги:
Функции в PHP
Функция phpinfo() выводит на экран информацию с текущими настройками PHP.
Некоторые функции ожидают, что им передадут какое-нибудь значение. Например, функция округления ceil() ожидает число, которое она округлит:
Функции будут подробно рассмотрены в отдельном уроке.
Необходимость закрывающего тега в PHP
Сокращённый синтаксис открывающего тега в PHP
Кроме этого, мы можем заменить тег на более короткую версию :
Использование тега вызывало множество споров в среде PHP разработчиков. Точку в этом вопросе поставили создатели языка PHP: начиная с PHP 7.4 короткий тег объявлен устаревшим, а в PHP 8 его уже не будет.
Комментарии в PHP
Однострочные комментарии в PHP пишутся после символа # или // и действуют до конца строки:
Многострочные комментарии размещаются между /* и */ :
Обратите внимание, многострочные комментарии нельзя вкладывать друг в друга:
Итого
Важно следить за кодировкой скриптов и выбирать либо UTF-8 без BOM, либо просто UTF-8.
Для вывода каких-либо значений в браузер используется команда echo, либо сокращённый синтаксис :
Функции в PHP указываются с круглыми скобками в конце:
Также в PHP можно добавлять однострочные и многострочные комментарии:
Создание PHP скриптов – начало погружения в бездну
Дата публикации: 2016-09-26
От автора: между умелым волшебником и профессиональным разработчиком много общего: и тому, и другому нужно так составить текст «заклинания», чтобы оно действовало. Но чародейство оставим «на потом», а сегодня изучим создание PHP скриптов и овладеем навыками обычного программного волшебства.
Особенности чародейства
Но для обычных случаев создания кода на PHP вам потребуется любой текстовый редактор. Конечно, лучше использовать специализированный. Например, PHP Expert Editor. Но для начала можно набирать код и в обычном Блокноте. Кроме этого вам нужно установить на свой ПК несколько обязательных составляющих:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Главными из перечисленных средств являются два первых. С помощью интерпретатора ПК будет преобразовывать вводимый программный код в машинный. А локальный сервер нужен, чтобы исполнять код. И все потому, что в отличие от других языков PHP выполняется на стороне сервера, а не на клиентской машине.
Но легче всего, если использовать для создания PHP скрипта специализированные программные пакеты, включающие в себя все перечисленные компоненты. Назову несколько самых надежных:
В интернете полно других подобных комплексных решений, но я не советую их использовать. Некоторые из них или лишены поддержки русского языка, или работают слишком уж криво. Например, я использую для наброски всех примеров статей по PHP Денвер. Он легок и в управлении, и в использовании.
Простой пример скрипта
Сейчас мы создадим настоящий программный скрипт в одну строку, который выведет на экран всю информацию о PHP: значения параметров ядра, версию и другое. Запустите установленный локальный сервер. Затем откройте любой редактор текста и вставьте в него следующий код:
Особенность PHP
Этот серверный язык настолько быстро развивается, что порой не успеваешь отслеживать все его изменения. Например, при разработке скрипта создания поддоменов на PHP вам понадобится функция ereg_replace(). Она производит поиск строки по шаблону, созданного с помощью регулярного выражения, а затем заменяет ее на заданную в параметрах.
Но если версия используемого вами ядра выше 5.3, то интерпретатор выдаст сообщение об ошибке. В нем будет сказано, что функция ereg_replace() считается устаревшей.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте
Как пишутся скрипты на PHP
В этой статье:
Для написания кода на PHP подходит любой текстовый редактор (например Notepad++).
Размещение PHP на HTML-странице
Код скрипта PHP может размещаться непосредственно на HTML-странице. Чтобы узнать, как это делается, давайте рассмотрим следующий простой пример:
Вместо специального тега могут также использоваться теги
Наш первый сценарий
Тексты сцеариев (php-программ) должны храниться в файлах с раширением php.
РНР-код состоит из отдельных операторов, каждый из которых завершается точкой с запятой (ее отсутствие вызовет сообщение об ошибке).
Первый скрипт на РНР (файл index.php) будет достаточно простым, но уже он продемонстрирует совместное использование HTML и РНР.
PHP-программа состоит из двух операторов присваивания, определения значения константы и вывода текста и текущей даты в окно браузера с помощью команды echo.
Данный текст можно набрать в любом текстовом редакторе, например, в NotePad++, и сохранить под именем index.php. Следует убедиться, что файл сохранен как php-файл, в противном случае он не будет корректно обработан РНР.
В случае локальной работы необходимо скопировать файл index.php в каталог документов web-сервера. Для Denver это home/localhost/www (если в настройках не указано иное). После чего можно переходить непосредственно к запуску скрипта.
Для запуска скрипта index.php следует открыть web-браузер, а затем ввести в адресной строке полный путь к этому скрипту. В случае локальной установки адрес будет таким:
Если все сделано правильно, на экране мы увидим:
Файл styles.css (таблица стилей):
Прямо из браузера мы можем просмотреть код этой странички, сформированный web-сервером:
Таким образом, имя переменной заменяется ее значением, которое помещается на то же место, где в программе стояло имя этой переменной.
PHP-код может располагаться в произвольном месте и многократно включаться в текст скрипта. С его помощью можно также формировать и HTML-теги, что видно из нашего примера.
Комментарии в скриптах
Содержание PHP-скрипта представляет собой код на РНР или на HTML. Но есть также комментарии, которые предназначены для описания скрипта.
В РНР существует три типа комментариев. Первый позволяет располагать комментарии в нескольких строках, начиная их символами /* (записываются без пробела) и заканчивая символами */, например:
Следует иметь ввиду, что вложенные комментарии записывать нельзя.
Многострочные комментарии могут оказаться полезными там, где надо вставить значительный объем текста. Кроме того, распространенным приемом при отладке программы является заключение части кода в комментарий (чтобы предотвратить его выполнение).
Остальные два типа комментариев начинаются с символов // или символа # и продолжаются только до конца строки, в которой они записаны. Этот тип комментариев удобен тем, что их можно размещать справа от операторов, например:
Очень часто комментарий добавляют в начало сценария, чтобы дать о нем краткую информацию и указать, какие функции он выполняет. Например:
Отображение текста
Оператор echo, который предназначен для отображения произвольного текста на web-странице, является, пожалуй, наиболее употребительным оператором РНР. В простейшем случае после echo следует поместить одну строку в кавычках. Текст может быть заключен как в двойные кавычки, так и в простые кавычки (апострофы). Для отображения чисел кавычки необязательны, например:
В общем случае после echo можно записать несколько строк для вывода, которые разделяются запятыми.
При необходимости длинная строка может быть размещена на нескольких строках в тексте скрипта, например:
Отдельные строки могут объединяться при помощи оператора сцепления «.» –– точка. В результате образуется единая строка, которая передается оператору echo. Например:
Для отображения кавычки следует разместить перед ней обратный слеш, например:
Замечание. Если выводится одна текстовая строка, то вместо оператора echo можно использовать функцию print. В этом случае различий между echo и print нет. Однако в echo мы можем добавлять к первой строке другие строки, разделяя их запятыми.
Отображение большого текста
Переменные, оператор присваивания
После создания переменной (в результате присваивания ей некоторого значения), доступ к этой переменной возможен в любом месте скрипта. При этом одна и та же переменная может содержать на протяжении программы значения разных типов.
Переменная существует до тех пор, пока выполняется программа.
Для присвоения значения переменной в РНР используется оператор присваивания, обозначаемый знаком равенства =. Ниже приведены примеры операторов присваивания:
$message = «Доброе утро!»;
Обратим внимание, что одним переменным присвоены числа, а другим — строки.
Задание. Вывести все значения этих переменных в браузер: (1) каждое значение –– в новой строке; (2) –– все значения –– в одной строке.
Константы
Иногда не требуется менять в программе один раз заданное значение. Для этого используются константы — их значения не изменяются в процессе выполнения скрипта.
Для описания константы используется функция define, которой передается имя константы и ее значение. Существует соглашение, по которому имена констант всегда пишутся в верхнем регистре (большими буквами), например:
define («PI», 3.1415926535);
Следует обратить внимание, что при определении константы перед ней не ставится знак доллара. Попытка изменения значения константы с помощью оператора присваивания приведет к ошибке.
Константам нельзя давать имена, которые являются служебными словами языка РНР (так как перед именем константы не ставится знак доллара).
Зарезервированные (служебные) слова РНР:
and | array | as | break | default |
die | do | echo | endif | endswitch |
endwhile | global | if | include | |
require | eval | lnclude_onc e | require_once | return |
case | сfunction | class | const | continue |
declare | else | elseif | empty | enddeclare |
endfor | endforeach | exception | exit | extends |
for | foreach | function | isset | list |
new | old_function | or | php_user_filter | static |
switch | unset | use | while | xor |
В языке РНР определено множество встроенных констант, которые можно использовать в сценариях. Эти константы начинаются с двух символов подчеркивания и заканчиваются тоже двумя символами подчеркивания. Например:
__CLASS__ | __FILE__ | __FUNCTION__ | __LINE__ | __METHOD__ |
Прерывание выполнения сценария
Наиболее часто для останова выполнения сценария применяется функция exit(). Другой полезной функцией является die(«Сообщение»), которая позволяет также вывести сообщение об ошибке. Это позволяет сообщить пользователю причину, по которой сценарий завершился неудачей.
Уничтожение переменной
Иногда требуется принудительно уничтожить переменную. Для этого предназначена функция unset().
Можно одновременно уничтожить несколько переменных:
Следующий текст при первом чтении можно пропустить
Типы данных
В языке РНР тип переменной определяется автоматически при создании переменной на основе ее значения. Тем не менее, следует иметь представление о типах данных, которые могут использоваться. Всего их восемь:
В данном случае тип переменной определяется однозначно. Трудности начинаются при смешивании различных типов данных в одном выражении, например, при сложении целого числа и строки, которая изображает число. Ниже приведено несколько примеров подобных выражений:
Для предотвращения потенциальных проблем не следует смешивать различные типы данных. Но даже и в таком случае РНР выполняет неявное преобразование типов. Если же требуется выполнить явное преобразование типа, то требуемый тип должен быть указан слева от имени переменной в круглых скобках. Вот несколько примеров явного преобразования типов:
При преобразовании в логический тип boolean, следующие значения преобразуются в значение FALSE.
При преобразовании к типу целых значений другие типы преобразуются так:
Возможно также преобразование строковых значений в числовые типы данных, но при этом имеется ряд особенностей.
Любые другие значения, включая все ресурсы, преобразуются в TRUE.
Итоги
Язык РНР предназначен для создания динамических web-страниц.