Я рад приветствовать тех для кого эта подписка уже не первая моя работа, и тех кто только познакомился со мной как с автором !
В этом цикле рассылок мы научимся как эфективно программировать в среде Веб, сайты с поддержкой интелектуальных решений и систем обработки информации.
Чем отличаються эта рассылка от миллионов других ?,- спросите вы.
А тем, что в этих рассылка вы не увидите ни единой ссылки на работы других авторов или скриптов. Всё что вы читаете здесь, всё это только плоды моей личной разработки и ничьей больше. Мы с вами создадим множество проектов которые по профессионализму и способностям не уступают каким-бы то нибыло коммерческим проектам. Наша цель научиться создавать эфективные и прибыльные проекты, при этом автоматизировать нашу работу до максимума !
Вот наш план на этот выпуск: 1. Что такое РНР
2. Основы работы с переменными
3. Функции и синтаксис
4. Домашнее задание
Кстати, о задании. В тесте я буду опубликовывать задания которые вам нужно будет сделать, это нужно только лишь для вас тоесть для проверки своих собственных способностей, ответы же я буду выкладывать в следующием ,после поточного, выпуске.
ы
Что такое РНР ?
Наверное большинство среди моих уважаемых читателей на этот момент уже знает о существовании данной технологии, ну а для тех кто нет, я повящаю данную главу.
Даже самый дремучий чайник наверное хоть раз в жизне пользовался такими роскошами барской жизни как интерактивные голосования, или хоть раз чаттился ночь на пролёт, но не возникал ли у вас хоть раз вопрос как это всё работает ? Или кто и сколько это всё создавал, и каких стандартов придерживался ?
Когда я был в вашем возрасте (я имею ввиду компьютерный :) ) я не находил себе места заходя на какой-нибудь крутой чат или сайт каких-то буржуей, которые только при заходе спрашивают сохранять ли вашу сессию в кеше вашего броузера :). Я не помню ни единственного дня когда я бы не спрашивал себя как работает та или иная программа, или как сделан тот или иной сайт. И однажды я нашёл один прекрасный учебник веб-дизайна написаные просто чудесным автором (сайт автора: http://postroika.ru), именно на этом и началась моя настоящая жизнь как веб-дизайнера, право и до этого я пытался что-то клепать но не так успешно. Именно тогда я создал свои первые странички и первый примитивный "фонтовый" дизайн, однако это было первой крупинкой, в большом мешке того зерна знаний. Ну, а после я поступил к учебный центр "МКА", где успешно учёсь уже 3 года, вот там я и выучил то что пытаюсь сейчас приподнести вам. ДА, о РНР. РНР как проект был основан для
системы LINUX, и соотетственно для серверов *.nix. О чём и соответствуют идентичные shell линукса команды и функции, однако время диктует свои правила и вскоре язык был портирован для системы Windows, но названия функций остались такие же, и потому данный ящык будет до боли знаком всем пользователям "Пингвинов". Но я не люблю историю, и не буду рассказывать про историю людей которые его изобрели, компаниях которые принимали участие в разработке и прочее, ведь если я начну рассказывать я не думаю что
я скажу что-то дельное но места займу ещё на 3 страницы, а мы ведь тут собрадись для изучения языка ?
Поетому я хочу приступить к главным вопросам не воруша историю, и как говорил великий Серёга Пушкин "...Он рытся не имел охоты, в хоронологической пыли. Бытописания земли...".
Итак, РНР это то что служит для сайтов как мотор для машины. РНР это интерпретируемый на стороне сервера язык программирования и прошу заметить, с полной поддержкой ООП. Но что значит "интерпретируемый" и "на стороне сервера". Интерпретируемый язык, это такой язык, для использования которого сервер не создаёт испольняемых файлов, ну как после компиляции, а просто перебирает содержимое файла, и вводит его на экран броузера, тоесть возвращает позитивный код (200), что значит что скрипт выполнен успешно, однако
в РНР сервер не созвращает ответ вроди 200, или 403. РНР интерпритирует сам себя, тоесть не зависимо от сервера, но всё же без него он сможет существовать. Ну, а то что он исполняется на стороне сервера, так это значит что скрипты после обработки на сервере полностью преобразуються в HTML код, тоесть скрипт исполняеться только на сервере в отличии, например от JavaScript. В этом и его прелесть, поскольку вам не нужно уж слишкомперетруждаться для защиты исходного кода, потому-что его попросту никто не
увидит. Так же главной особенностью РНР являеться то что он может использовать возможности почти всех реляционных баз данных, и как говорят люди довольно лёгок в использовании, но так ли это судить лишь вам.
Так же перед началом практической части я бы посоветовал скачать вам дистрибутив сервера Apache, и желательно базы данных MySQL, и конечно же сам РНР :).
Сделать это можно на сайте http://denver.ru, на этом сайте расположена известная всем, в кругах программистов, "Денвер- джентельменский пакет", в него входят связаные уже и настроеные РНР, MySQL, Perl и Apache, так же в пакете вы сможете найти очень удобную утилиту для редактирования вашей БД и записей в ней.
Итак, я считаю что данную главу на этом можно закончить, и перейти уже к изучению самого языка, ведь я лично как пользователь и как профессионал в данной области просто ненавижу когда автора тянут резину и говорят неизветстно о чём, и если я был замечен за этим прошу меня простить :)
Переменные и работа с ними. Синтаксис.
Итак, что мы знаем о переменных: "что-то из курса алгебры","да фигушки такие с цифирками","а пиво когда принесут"
Вот 3 возможных варианта ответа, я надеюсь вы не задумывались над вариантами, а если и так то наверное не от хорошей жизни :)
Ну конечно правильный вариант первый, и это ещё не всё, мы сейчас добавим его полную транскрипцию: Переменные- это алгебраическое понятие. Переменные могут содержать любое значение (строка, цыфра, массив, булевое значение). Так же переменные могут быть удалены из памяти, переназначены, и обязательно имеют свой исключительный тип, однако в РНР, интерпретатор сам выбирает тип переменной во время динамического просчёта содержания скрипта. Об удалении из памяти мы поговорим позже, ну о переназначении именно в этом выпуске.
Итак, всё что мы описали хорошо, и знание вышеприведенного материала обязательно, однако для работы с переменными нужно ещё и знать как их создать, а тоесть объявить. Ну, давайте посмотрим небольшой пример, он покажет саму структуру документа, и конечно синтаксис объявления переменных:
<?
//Начало РНР документа
$angle="90";
$string="fjkdasgfklas";
$double_integer=1.9;
$integer=20000;
$long_int=300000000000;
$char=$string.$double; //Конкатенация двух строк и присвоение результата строке
//Конец документа
?>
Итак любой документ, написаный на РНР, должен начинаться со знака вопроса и правой скобкой перед ним, и завершаться похоже, если вы не поставите данные символы ваш скрипт не будет проигрываться сервером. Далее мы объявляем переменную со значение 90 и названием angle, и на будующее, если значение переменной- цыфра, то её можно не писать в кавычках в отличии от всех остальных типов. Как мы видем объявление переменной начинаеться со знака долара, после которого пишеться название переменной ну, а уже после равно
пишеться её значение. Если зачение переменной строка то она должна быть заключена в одинарные или двойные скобки как мы видим во втором примере. Так же в РНР поддерживабться переменные с плавающей точкой, тоесть переменные с десятичной дробью, тип такой переменной всегда будет double, данный тип подразумевает некоторое количество цыфр после запятой.
Ну, если мы уже начали о переменных то давайте о них и поговорим.
В РНР есть такие типы переменных:
int
byte
>
long
double
string
float
object
bool
Есть и много других типов но в них необходимости чаще всего нет, а если нет и необходимости то зачем их описывать ?
Переменные типа int, это исключительно числа граница значения которых равна от -2.147.473.648 до 2.147.483.647, а тоесть вмешает в себя восемь бит. Граничные же числа типа byte не трудно догадаться, а тоесть число в один бит (-128....127), самым же большим числовым типом являеться тип long со значениями размеров в восемь бит (-9.223.372.036.854.775.808 и до 9.223.372.036.854.775.807 это примерно 10 в девятой степени !), данным типом можно измерить количество
секунд на протяжении множества столетий, или например расстояние в метрах до другой солнечной системы..... . Но вы наверное заметили что в положительных числах граничное число уменьшено на 1, это происходит потому, что в массивах РНР и вообще при счёте сещуствует число 0, а оно относиться именно к положительным натуральным числам, вот потому так и происходит.
Работу типа double можно увидель в нашем примере в переменной $double_integer, в данном типе максимальное число от 1.797639131486231570е+308 и до 4.94906564581246544е-324, тоесть как вы заметили оно содержит в себе теже восемь бит, как и тип long, но существует и более меньший по разряду тип- это float. Он содержит в себе как и int 4 бита и максимальные его значения от 3.40282347е+38f до 1.40239846e-45f.
Тип bool Представляет собой просто соглашение или отрицание, он может иметь значение TRUE или FALSE, или 1 и 0 соответственно. Его чаще всего используют для проверки, произошло ли событие или истинна ли функция и прочее, мы ещё не раз встретимся с переменными данного типа, однако пока мы его отложим подальше.
Я уже читаю ваши мысли: "Ну когда же он закончит всё нудотину, и покажет что-то на практике", ну что ж, давайте на приктике. Сейчас мы создадим программу "мини-канкулятор". Эта программа, на мой счёт, равносильна примеру Hell World, однако в нашем случае она довольно актуальна, итак начнём-с:
///////////////////////////////////////////////////
<html>
<head>
<title>Мой первый канкулятор :)</title>
</head>
<body>
<br>
<br>
<table width="50%" align="center">
<tr><td colspan="2" style="color:#FF8000; text-align:center">:: Калькулятор 2000 ::</td></tr>
<form action="" name="calc" method="post">
<tr><td width="50%" style="color:#FF8000; text-align:center">Введите первое число:</td><td style="background-color:#000000; color:#FFFFFF;"><input size="40" type="text" name="first"></td></tr>
<tr><td style="color:#FF8000; text-align:center">Введите второе число:</td><td style="background-color:#000000; color:#FFFFFF;"><input size="40" type="text" name="last"></td></tr>
<tr><td colspan="2" style="text-align:center;">Выберите действие
<select name="oper">
<option value="plus">Сложит</option>
<option value="minus">Вычесть</option>
<option value="mod">Остаток от деления</option>
<option value="sqrt">Корень первого</option>
<option value="sqrt_s">Корень второго</option>
<option value="sqrt_sum">Корень суммы</option>
<option value="ymng">Умножить</option>
<option value="1to2">Возвести в квадрат первое</option>
<option value="2to2">Возвести в квадрат второе</option>
</select>
</td></tr<
<tr><Td style="text-align:center;" colspan="2"><input type="submit" name="calc" value="Вычислить"></td></tr></form>
<!--Всё на этом HTML основа заканчиваеться, и начинаеться наш любимый РНР...//-->
<?
///////////////////////////////////////////////////
Для работы данного скрипта, его нужно сохранить в корневой
директории файлов, вашего сервера (home/test2.ru/www/).
Итак, я уже через жэкран своего монитора вижу ваши круглые глаза, а может мне так кажеться, но в любом случае данный скрипт содержит множество ещё не известных вам конструкций, но не волнуйтесь, вы такой не один (видели бы вы мои глаза :) ).
Ну, что ж давай те разберём этот скрипт. По суте своей он очень прост, сначала мы создали HTML документ с формой и несколькими полями дополнеными кнопкой. Зачем же было создавать форму спросите вы ? В РНР как и во всей языках есть свои средства ввода информации, а поскольку он как нельзя тесно "сотрудничает" с HTML, то умные люди придумали формы. Однако форму используються не только в РНР но и в Perl, CGI и прочих языках расчитаных на программирование в ВЕБ. Наиболее продуктивным при работе с формами яыляеться
JavaScript, но он служит лишь как средство интерактивности и для придания большей красоты, чем для серьёзного программирования. Но давайте вернёмся к формам в РНР. Под дальнейшим я подразумеваю ваше полное знание HTML и форм в целом, как неотемлемую часть разметки документа.
Для передачи информации из формы в скрипт мы сначала проверили существование переменной $_POST['calc'], а тоесть была ли нажата кнопка. Формы устроены так, что после нажатия кнопки на сервере инициализируеться переменная с имененм кнопки, и если её тип Submit, то вместе с собой, она передаёт серверу и значения всех полей формы. Помните я вам говорил про булевые переменные, так вот, в нашем случае мы как раз к ним и вернулись, посмотрите на первую строку скрипта, в ней идёт проверка по методу цепочки
IF{}, которую мы вскоре рассмотрим подробней, булевое значение функции isset(). Функция isset() проверяет переданный в скобках аргумент, на его существование. Тоесть если он существует то функция вернёт значение 1 или TRUE, иначе её значение будет 0. Тогда еслиона вернёт "Истину", тогда мы продолжаем проверку, если нут то ждём пока пользователь её нажмёт. После проверки мы выводим графический интерфейс, тоесть тег HTML. Остановимся на этом немного.
Для вывода информации в окно броузера РНР использует две функции print ""; и echo "";. Однако в РНР существуют и другие функции для вывода но они пока слишком сложны для вас. Как вы заметили при выводе HTML тега мы заэкранировали его кавычки, обратными слэшами, зачем ?
Потому, что РНР устроен так, что он проверяет всё что находится в средни кавычек и выспринимает его не как текст, а как данные для сервера, а если же мы заэкранируем кавычки слэшем, то он восприймет их просто как простой текст, к слову я покажу вам одну функцию которая поможет заэкранировать теги не в самом скрипте , а например в информации с полей формы например, это нужно для обеспечения безопастности скрипта- addslashes(). Она делает теже действия что и мы с вами, но в значениях переменных, или
например в запросах к БД, но об этом позже.
Итак, после этого мы присваиваем переменным значение соответствующих полей формы. Однако значения в квадратных скобках после переменной окружения $_POST, должны полностью соответствовать значениям в аттрибуте name, поля формы. Но почуме именно $_POST. Вы наверное знаете что в форме можно задать соответствующий тип передачи данных, а тоесть тип method. Например тип $_POST, инициализирует значение в переменном окружении сервера, а тоесть делает их доступными в скрипте, и передаёт их через внутренние
каналы сервера, $_GET же передаёт переменные формы через строку броузреа, этот тип передачи очень популярен в CGI- программировании, однако он не желателен для использования в РНР, поскольку он может озадачить пользователя данными в строке броузера. Но $_GET так же используеться и для передачи параметров с одного скрипта в другой, а не только из форм, но его использование мы рассмотрим позже.
Так переменные рассмотрели, теперь нужно и порсмотреть что пользователь хочет сделать на нашем калькуляторе. Для этого нам понадобиться проверка по методу IF, и нескольку логических операторов. При проверке через if, мы ставим проверяемое выражение в скобки, и если оно истинно, то выполняеться блок кода, который стоит в фигурных скобках после закрывающей кавычки, но так же можно проверять и случай обратный, ну например выражение не соответствует истинне, тогда тавиться ключевое слово else
или elseif. Первое ставиться после фигурной скобки которая закрывает "истинный" блок, и после неё ставиться такой же по конструкции блок кода. Тоесть, если проверяемое выражение TRUE, тогда выполняеться один блок кода, если нет то блок кода после оператора else. Ну, а elseif же не выводит вместо TRUE- FALSE, к нему интерпретатор переходит, если выражение их "ложь". Оператор Elseif- идентичен конструкции if, но он служит для отсечения
всех вероятностей, а тоесть всех исключений.
Я надеюсь конструкция IF вам понятна, теперь можно и перейти к последней части- логическим операторам.
Логический оператор- это неская команда состоящая из двух или одного символа, которая выражает логическое: отрицание, исключение и прочее. Логическими операторами считаються символы: "&&"- логическое "и", "||"- логическое "или", "!"- логическое "отрациние", "++"- унарный оператор "увеличения на единицу", "--"- унарный оператор уменьшения на единицу, "=="- логический оператор "сравнения",
"="- логический оператор присвоения, "!="- логический оператор "отрицания равенства", "==="- логический оператор неравенста.
Вот все операторы которые используються в РНР. Пример одного из операторов логического "И", мы можем увидет при вычеслении квадратного корня числа, там к условию прибавляеться и условие того что число под корнем должно быть больше либо равно 0. Кстати, хочу обратить всше внимание на то что "=" и "==", вовсе не одинаковые знаки. Если первый присваивает переменной некое значение, то второй приравнивает переменную к какому нибыло значению. Тоесть первое всегда вернёт
true, то второе вернёт значение в соответствии с равенством переменных.
Ну, наверное пока с вас хватит, и можно перейти к домашнему заданию:
1. Создайте чат, который будет состоять из формы для добавления сообщений, и таблички куда они будут добавляться. Тоесть пользователь воодит данные, нажимает на кнопку, после чего сообщение с данными отображаються в табличке.
2. Создайте скрипт для авторизации, который будет сравнивать логин и пароль, и выводить приветствие в случае их правильности. Всё, надеюсь это занятие пошло вам в прок, до встреч !
Если у вас есть вопросы по данной статье или по данной технологии пищите на форум ShockStudio Team, или лично мне Ik1990@list.ru
Автор статьи: LoRd aka Кирилл Карпенко
Email: Ik1990@list.ru
Все права на статью принадлежать команде разработки и программирования сайтов и игр ShockStudio Team