Бесплатно книги, статьи, учебники и другая литература. |
||
|
Главная Карта сайта Статьи Google Adsense OUGO Browser 7 способов настройки сайта 10 фатальных ошибок Секрет Интернет-маркетинга Генерация трафика на сайт Торгуем информацией Целевой рынок Электронная империя Исполнение желаний Сексуальные сигналы Как получить квартиру Цена и перспектива Мужское достоинство Заработок на сайте с Jetswap Заработок на сайте с IPgold Развитие сильного тела Учебники Учебник по HTML Программируем на PHP 26 статей по Фотошоп Книги Справочник по фразеологии Способы заработка на сайте Секреты e@mail маркетинга Кто украл мой сыр? 101 высокодоходный бизнес Маркетинговые тайны Атлетизм без железа Пособие для гениев Мошенничество в бизнесе Секрет миллионера История Ротшильдов Психологическое айкидо Принципы жизни Рекомендую купить Создаём сайт на Joomla 1.5 Создаём интернет-магазин Фотошоп с нуля Моменты on-line бизнеса PHP+MySQL Сайт на Joomla за 1 день Сайт-блог на Wordpress Реклама Рекламные статьи Отдохни! |
Программируем на РНРЭто не только очень просто — это еще и увлекательно! К такому выводу неизменно приходишь, если начинаешь знакомиться с основами программирования на языке гипертекстового препроцессора РНР. Ну вот, еще только начало, а уже непонятные слова пошли. Это ж надо было придумать такое — гипертекстовый препроцессор! Так что для улучшения восприятия материала давайте заранее условимся, что будем применять упрощенные и понятные всем термины, что бы было понятно буквально всем. И еще одна непременная условность — делаем все так, как делаем. Есть несколько способов открыть Панель Управления в Windows, есть разные способы приготовить одно и то же блюдо, и есть разные способы и методы программирования. С поставленной задачей можно справиться и так, как описано, и совсем по-другому. Но в нашем случае упор будет делаться на простоту и логичность, а не на скорость и чистоту кода. Все это придет несколько позже, а пока наша цель — учиться, учиться, и еще раз учиться. В продолжение темы, поднятой в статье "РНР для всех!", мы углубимся дальше в удивительный мир программирования. Циклы в РНРЦиклы в программировании — это повторяющиеся несколько раз операции. Начало (точка отсчета) указывается в начале цикла, а длительность его выполнения ограничивается каким-либо условием. Примером цикла может служить копирование нескольких файлов. Алгоритм выполнения этого задания можно описать так: установить счетчик скопированных файлов в ноль, скопировать файл, проверить, закончились файлы или нет, если нет — увеличить счетчик скопированных файлов, вернуться к началу цикла (опять скопировать файл), если да — закончить цикл. Теперь рассмотрим, как циклы реализуются в синтаксисе РНР. <?php Смысл скрипта очень прост. Присваиваем переменной $i значение, соответствующее началу цикла, а переменной $n — значение конца цикла. Далее открываем цикл оператором WHILE ( ), и внутри его скобок описываем условие, при выполнении которого цикл будет продолжать свою работу. В нашем случае выполнение не прервется, пока $i <= $n. Как только это условие будет нарушено, управление будет передано следующей за циклом операции РНР. Внутри цикла могут быть любые команды РНР (разделенные между собой, как обычно, точкой с запятой). Только нужно следить за тем, чтобы переменная $i, используемая в цикле, была увеличена (и совсем не обязательно на единицу), иначе цикл станет бесконечным, и интерпретатор РНР будет выполнять его, пока не закроется сессия (окно браузера). Оператор ENDWHILE означает конец цикла. Скрипт, описанный здесь, выводит на экран браузера цифры, начиная с 0 до 10. Причем цифры будут выведены в столбик, так как после вывода на экран значения переменной $i мы выводим HTML-тег перевода строки (<br>). После него идет перевод строки для кода, переданного клиенту (его можно посмотреть, выбрав просмотр в виде HTML в меню Вашего браузера). Это не обязательно, но таким образом достигается удобочитаемость кода. Для примера я привожу еще один вариант выполнения указанной выше задачи, но уже гораздо более правильно с точки зрения чистоты кода и скорости выполнения. <?php Удивительно, но эти два примера абсолютно идентичны в смысле результата. Но сам скрипт уместился в одну строчку! Разница — в стиле применения оператора цикла и в том, что переменная цикла выводится на экран одновременно с увеличением. И в этом — вся прелесть программирования. Иногда бывает что-то простое сделать очень трудно, а сложное — легко. Никогда не стоит останавливаться на уже достигнутом, а пробовать применять другие алгоритмы и решения. Вот Вам еще один вариант решения. Он основан на применении конструкции РНР DO…WHILE. Это тоже цикл, но отличается он от просто WHILE тем, что значение логического выражения проверяется не до (как в случае с WHILE), а после окончания работы операторов, включенных в сам цикл. Таким образом, DO…WHILE гарантированно будет выполнен хотя бы один раз, что в случае с WHILE совсем не обязательно. Ведь если условие есть ложь, управление сразу будет передано дальше. Для циклов DO..WHILE существует только один вид синтаксиса: <?php Казалось бы, достаточно вариантов, но это не все — существует еще несколько вариантов цикла. И, как правило, именно они и используются программистами. Циклы FOR — наиболее мощные циклы в PHP. Они работают подобно их аналогам в языке программирования C. Синтаксис цикла FOR: /* пример 1 */ Так что не говорите потом, что у Вас не было выбора :-). На примере тривиальной задачи мы рассмотрели, как РНР позволяет разными способами достичь одной цели. Как правило, на практике применяется наиболее подходящая конструкция, но часто в этом нет никакой необходимости, достаточно использовать самый простой и логичный вариант. Отправка почтыОчень часто хочется знать, что происходит на сайте за время Вашего отсутствия. Конечно, можно периодически проверять форум, гостевую и т.д. на предмет новых сообщений, но есть способ лучше! Почему бы не присылать самому себе сообщение на почтовый ящик, когда на сайте происходит то или иное событие? Как пример могу предложить такие варианты: регистрация в рассылке, ввод сообщения в форум, гостевую и т.д., ошибка открытия файла, организация обратной связи, опрос мнения читателей о размещенной статье и т.д и т.п. Способов применить эту возможность РНР — масса, осталось разобраться, как это работает. Как всегда — просто! Синтаксис таков: <?php Если Вы разместите на одной из Ваших страниц этот код РНР, информация о посетителе (это дата входа, хост и IP-адрес) будет в Вашем почтовом ящике. Еще можно прислать себе сообщение при возникновении ошибки (например, открытия файла) на сайте: $filename = "data.txt"; Как обычно, можно поставить знак @, и если возникнет ошибка при отправке почты, сообщение об этом не будет выведено на экран. А можно просто проверить, ушло письмо или нет: if ( @mail( $email, "Тест", $str) ) { … что сделать если письмо ушло … } else { … что делать, если произошла ошибка отправки (не доступен ящик, сайт и т.д) }. Собственно говоря, есть возможность забирать почту с любого аккаунта, но это требует расширения РНР за счет подключения дополнительных модулей, и в стандартной поставке недоступно. Если в переменной $email указать несколько адресов, разделенных пробелами, информация будет разослана по всем указанным адресам. Это открывает простой путь к организации собственной, ни от кого не зависящей системы почтовых рассылок. Времена и датыРаз уж разговор коснулся даты, попробуем разобраться, как все это можно использовать в своих собственных целях. В РНР наиболее часто используется функция DATE в формате $date=date('параметр');. Параметров может быть несколько, и разделяются они между собой запятой. Вот список допустимых параметров. Обратите внимание на отличия в регистре. Каждый символ в разных регистрах имеет разные функции. Теперь Вы легко можете получить информацию о текущем времени и использовать ее на своем сайте. Один из самых распространенных вариантов — вывод текущего времени и даты. Конечно, все это делается без проблем на JavaScript, но кто видел эти скрипты, тот поймет разницу (по крайней мере, в размере и скорости выполнения, не говоря уже о трафике от сервера к браузеру). Ну, время, на мой взгляд, выводить бесполезно, так как оно есть у каждого пользователя в трее Windows-а, а вот вывести число, месяц и день недели (да еще на русском языке) бывает полезно. Начнем с приветствия посетителю. Было бы неплохо вывести соответствующую фразу в зависимости от времени посещения. Сказано — сделано: <?php Цифры желаемого времени можно проставить любые, в зависимости от личного понятия дня и ночи :-). Следующий шаг — вывод числа, дня недели и имени месяца. Но прежде чем мы приступим к реализации алгоритма, нам нужно познакомиться еще с одним важным моментом в языках программирования. Массивы в РНРЕсли Вы четко представляете себе, что такое массив, предлагаю Вам сразу перейти к чтению следующего абзаца. Если нет, тогда именно это Вы сейчас и узнаете. Массив — это ряд переменных, упорядоченных по имени и имеющих различный индекс. $m[0] = "компьютер"; Теперь у нас создан массив с именем $m и максимальным индексом (это количество элементов в массиве) — 4. Именно 4, хотя последний заполненный элемент — 3. Если мы попробуем считать элемент с 4-ым индексом, результат будет равен пустой строке, так как там просто ничего нет. Обращаться к элементам массива нужно по имени массива и его индексу, что и составляет основное удобство. Например, мы можем вывести на экран все элементы массива: $i = 0; while ($i < count($m)) { echo $m[$i]."<br>"; $i++; } Функция count($m) выдает нам число, соответствующее максимальному индексу массива. Таким образом, у нас всегда есть возможность знать, сколько элементов присутствует в данном массиве. Что еще можно узнать о массивах в РНР? Кое-что можно… Например, функция current возвращает текущий элемент массива. Каждая переменная-массив имеет внутренний указатель (это не индекс, а специальный параметр, который, как правило, либо совпадает с индексом, либо превышает его на единицу, но необязательно), который указывает на один из своих элементов. Кроме того, все элементы в массиве связываются двунаправленным списком указателей для дополнительных целей. Внутренний указатель указывает на первый элемент, который включался в массив, пока Вы не выполняли одну из функций, которые модифицируют этот указатель в этом массиве. Функция current() просто возвращает элемент массива, на который в данный момент указывает внутренний указатель. Она никак не перемещает указатель. Если внутренний указатель указывает на конец списка элементов, current() возвращает false (ложно). Внимание: если массив содержит пустые элементы (0 или "", пустую строку), то функция возвратит "false" для каждого из них. Это показывает, что текущий элемент является нулевым значением или вы дошли до конца массива. End — устанавливаете внутренний указатель массива на последнем элементе. Next — передвигает внутренний указатель массива. Возвращает следующий элемент массива, от текущей позиции внутреннего указателя массива, или "ложь"(false), если нет больше элементов. Если массив содержит пустые элементы, тогда эта функция возвратит "ложь" (false) и для этих элементов. next() ведет себя подобно current(), с одной лишь разницей: он передвигает внутренний указатель массива на один элемент вперед прежде, чем возвратить элемент. Это означает, что он возвращает значение следующего элемента и передвигает на него внутренний указатель массива. Если при обращении к следующему элементу обнаружен конец массива — next() возвращает "ложь" (false). Prev — перемещает внутренний указатель массива. Возвращает предыдущий элемент массива, или "ложь" (false), если перед текущим нет больше элементов. Если массив содержит пустые элементы, то функция возвратит "ложь" и на этих элементах. prev() ведет себя подобно next(), за исключением того, что он переводит внутренний указатель массива на одну позицию назад, а не вперед. Reset () — устанавливает внутренний указатель массива на первом элементе. Rsort () — сортирует массив в обратном порядке (по убыванию), по алфавиту в том числе. К сожалению, русский алфавит тут не при чем. Sort () — сортирует массив. Точно то же, что и предыдущее, только по возрастанию. Конечно, это далеко не все функции, которые есть в РНР относительно массивов. Но остальное часто очень специфично и решается иногда более простыми методами. Дата по-русскиСкрипт, который мы сейчас рассмотрим, позволяет вывести на экран посетителя дату в формате русского языка. Сразу предупреждаю, что реализация алгоритма этой задачи не самая лучшая, но работоспособная, ясная во всех отношениях и простая. А главное — используется только то, что уже было описано. Сначала я приведу сам текст скрипта, а потом подробно опишу его. <?php Теперь рассмотрим, как работает этот скрипт. Сначала нам нужно определить два массива, в которых будут храниться соответственно русское название месяца и русское название дня недели. Так как месяц не может быть нулевым, нам нужно позаботиться о вводе элемента массива с нулевым индексом. Если индекс массива не указан, он принимается равным внутреннему указателю. Если массив пуст и еще не определен, внутренний указатель указывает на первый элемент (имеющий индекс ноль). Ввод нового элемента массива перемещает внутренний указатель на единицу вверх, и, таким образом, обеспечивается последующий ввод значения массива в ячейку массива, имеющую индекс на единицу больший, чем предыдущий. В принципе, можно обеспечить ввод данных в массив разными способами. Но указанный здесь — самый простой и примитивный. Мы просто присваиваем поочередно нужные нам данные элементам массива и, таким образом, заполняем его. Точно такая же история наблюдается и со вторым массивом. Только тут уже индекс нужных ячеек массива указывается явно, и внутренний указатель устанавливается на тот индекс, который указан, а после ввода значения перемещается вверх на единицу. Разница между этими двумя методами в том, что если массив уже был определен ранее и индекс при вводе не указан, заполнится ячейка массива, на которую указывает внутренний указатель. А он ведь может находиться и в конце! А если индекс указан явно, внутренний указатель устанавливается на его значение и запись происходит в явно указанную ячейку. Собственно, чаще массивы бывают гораздо длиннее приведенных в примере, и удобнее воспользоваться специальной функцией, которая позволяет считать указанный в ней файл и ввести все, что есть в этом файле, в массив. Причем разделителем считается перевод строки, что очень удобно. Синтаксис этой функции — $имя массива = file ("имя файла");. Дальше формируется массив с указанным именем и значениями, соответствующими строкам файла. ЗаключениеИтак, мы познакомились с очень важными в любом языке программирования принципами организации циклов и массивов, а также узнали, как применять на практике возможность отправки почты и считывание даты. Не сомневаюсь, что вы сможете придумать еще много примеров для применения этих вещей. Не стесняйтесь экспериментировать и пробовать различные варианты. Именно так и изучаются языки программирования — на примерах. Используйте для поиска новых решений и скриптов Интернет, подпишитесь на рассылки по РНР для получения новой информации. Если не все понятно — смело задавайте вопросы, я постараюсь по мере сил и знаний ответить на них. И никогда не останавливайтесь на достигнутом, так как всегда существует то, что мы еще пока не знаем, а ведь так хочется… Автор: Андрей Кухарчик |
|
| На сайте http://onlineebook.ru можно абсолютно бесплатно прочитать и скачать книги, статьи, учебники и другую литературу. | ||