Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование работы узла коммутации сообщений на GPSS + Пояснительная з...
Обработка задач на ЭВМ на GPSS + Пояснительная записка
Информационная система - транспортный парк на Turbo Pascal (База данных)...

Программируем на PHP
Это не только очень просто — это еще и
увлекательно! К такому выводу неизменно приходишь, если начинаешь
знакомиться с основами программирования на языке
гипертекстового препроцессора РНР. Ну вот, еще только начало, а уже
непонятные слова пошли. Это ж надо было придумать такое —
гипертекстовый препроцессор! Так что для улучшения восприятия
материала давайте заранее условимся, что будем применять упрощенные
и понятные всем термины, что бы было понятно буквально всем. И еще
одна непременная условность — делаем все так, как делаем. Есть
несколько способов открыть Панель Управления в Windows, есть разные
способы приготовить одно и то же блюдо, и есть разные способы и
методы программирования. С поставленной задачей можно справиться и
так, как описано, и совсем по-другому. Но в нашем случае упор будет
делаться на простоту и логичность, а не на скорость и чистоту кода.
Все это придет несколько позже, а пока наша цель — учиться, учиться,
и еще раз учиться. В продолжение темы, поднятой в статье "РНР для
всех!", мы углубимся дальше в удивительный мир программирования.



Циклы в РНР

Циклы в программировании — это повторяющиеся несколько раз
операции. Начало (точка отсчета) указывается в начале цикла, а
длительность его выполнения ограничивается каким-либо условием.
Примером цикла может служить копирование нескольких файлов. Алгоритм
выполнения этого задания можно описать так: установить счетчик
скопированных файлов в ноль, скопировать файл, проверить,
закончились файлы или нет, если нет — увеличить счетчик
скопированных файлов, вернуться к началу цикла (опять скопировать
файл), если да — закончить цикл. Теперь рассмотрим, как циклы
реализуются в синтаксисе РНР.




<?php
$i = 0; $n = 10;
while ($i <= $n):
echo $i."<br>\n";
$i++;
endwhile;
?>



Смысл скрипта очень прост. Присваиваем переменной
$i значение, соответствующее началу цикла, а переменной $n —
значение конца цикла. Далее открываем цикл оператором WHILE ( ), и
внутри его скобок описываем условие, при выполнении которого цикл
будет продолжать свою работу. В нашем случае выполнение не
прервется, пока $i <= $n. Как только это условие будет нарушено,
управление будет передано следующей за циклом операции РНР. Внутри
цикла могут быть любые команды РНР (разделенные между собой, как
обычно, точкой с запятой). Только нужно следить за тем, чтобы
переменная $i, используемая в цикле, была увеличена (и совсем не
обязательно на единицу), иначе цикл станет бесконечным, и
интерпретатор РНР будет выполнять его, пока не закроется сессия
(окно браузера). Оператор ENDWHILE означает конец цикла. Скрипт,
описанный здесь, выводит на экран браузера цифры, начиная с 0 до 10.
Причем цифры будут выведены в столбик, так как после вывода на экран
значения переменной $i мы выводим HTML-тег перевода строки (<br>).
После него идет перевод строки для кода, переданного клиенту (его
можно посмотреть, выбрав просмотр в виде HTML в меню Вашего
браузера). Это не обязательно, но таким образом достигается
удобочитаемость кода. Для примера я привожу еще один вариант
выполнения указанной выше задачи, но уже гораздо более правильно с
точки зрения чистоты кода и скорости выполнения.




<?php 
$i = 0; while ($i <= 10) { echo $i++."<br>"; }
?>



Удивительно, но эти два примера абсолютно
идентичны в смысле результата. Но сам скрипт уместился в одну
строчку! Разница — в стиле применения оператора цикла и в том, что
переменная цикла выводится на экран одновременно с увеличением. И в
этом — вся прелесть программирования. Иногда бывает что-то простое
сделать очень трудно, а сложное — легко. Никогда не стоит
останавливаться на уже достигнутом, а пробовать применять другие
алгоритмы и решения. Вот Вам еще один вариант решения. Он основан на
применении конструкции РНР DO…WHILE. Это тоже цикл, но отличается он
от просто WHILE тем, что значение логического выражения проверяется
не до (как в случае с WHILE), а после окончания работы операторов,
включенных в сам цикл. Таким образом, DO…WHILE гарантированно будет
выполнен хотя бы один раз, что в случае с WHILE совсем не
обязательно. Ведь если условие есть ложь, управление сразу будет
передано дальше. Для циклов DO..WHILE существует только один вид
синтаксиса: 




<?php
$i = 0; do { echo $i."<br>\n"; $i++; } while ($i <=10);
?>



Казалось бы, достаточно вариантов, но это не все
— существует еще несколько вариантов цикла. И, как правило, именно
они и используются программистами. Циклы FOR — наиболее мощные циклы
в PHP. Они работают подобно их аналогам в языке программирования C.
Синтаксис цикла FOR:

FOR (expr1; expr2; expr3) statement 

Первое выражение (expr1), безусловно, вычисляется (выполняется) в
начале цикла. В начале каждой итерации (проход цикла) вычисляется
expr2. Если оно равно TRUE (истина), то цикл продолжается и
выполняются вложенный(е) оператор(ы). Если оно равно FALSE (ложь),
то цикл заканчивается. В конце каждой итерации вычисляется
(исполняется) expr3. Каждое из этих выражений может быть пустым.
Если expr2 пусто, то цикл продолжается бесконечно (PHP по умолчанию
считает его равным TRUE, как и в языке С). Это не так бесполезно,
как могло бы показаться, так как зачастую требуется закончить
выполнение цикла, используя оператор BREAK в сочетании с логическим
условием, вместо использования логического выражения в FOR. Если
внутри цикла (любого) встречается этот оператор (BREAK), цикл
прекращает выполнение итерации и управление передается следующей за
циклом команде. Если встречается оператор CONTINUE — управление
передается на начало следующего ближайшего цикла. Для примера
посмотрим, как можно еще реализовать вывод на экран пользователя
список чисел. Не забывайте про переход из HTML в PHP.




/* пример 1 */
for ($i = 1; $i <= 10; $i++)
{ print $i; }
/* пример 2 */
for ($i = 1;;$i++)
{ if ($i > 10) { break; } print $i; }
/* пример 3 */
$i = 1; for (;;)
{ if ($i > 10) { break; } print $i; $i++; }
/* пример 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;



Так что не говорите потом, что у Вас не было
выбора :-). На примере тривиальной задачи мы рассмотрели, как РНР
позволяет разными способами достичь одной цели. Как правило, на
практике применяется наиболее подходящая конструкция, но часто в
этом нет никакой необходимости, достаточно использовать самый
простой и логичный вариант.



Отправка почты

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

Mail ( $email, "Введено сообщение", $str, "From: сообщение "); 

Конечно, перед этим соответствующие переменные должны быть введены
либо вручную, либо с помощью формы (нужно следить за соответствием
имен переменных в форме и в скрипте). При выполнении данной команды
интерпретатор РНР пошлет письмо с текстом из переменной $str по
адресу, указанному в переменной $email. Все остальное — служебная
информация, которая может быть в некоторых случаях опущена за
ненадобностью. Для примера рассмотрим систему контроля за
посетителями определенных страниц сайта. Такая возможность может
понадобиться для анализа посещений определенных статей, страниц и
т.д. Нам потребуется информация о посетителе, которая в РНР
автоматически доступна через переменные окружения. Эту информацию мы
будем отсылать себе на почтовый ящик. Только не переусердствуйте —
каждое посещение такой страницы вызовет отправку письма, и ящик
может оказаться переполненным.




<?php
if (isset ($HTTP_X_FORWARDED_FOR))
{
$host = gethostbyaddr($HTTP_X_FORWARDED_FOR);
}else{
$host = gethostbyaddr($REMOTE_ADDR); }

$ip=getenv('REMOTE_ADDR');
$date=date('d M Y, H:i:s');
$host1=gethostbyaddr("$ip");

$str=("
Дата — $date
Хост — $host
IP-адрес — $ip
---------------------");
mail( $email, "статистика", $str, "From:информация");
?>



Если Вы разместите на одной из Ваших страниц этот
код РНР, информация о посетителе (это дата входа, хост и IP-адрес)
будет в Вашем почтовом ящике. Еще можно прислать себе сообщение при
возникновении ошибки (например, открытия файла) на сайте:




$filename = "data.txt"; 
$fp = @fopen($filename,"r");
if ( !$fp ) { @mail( $email, "Ошибка!", "Ошибка открытия файла $filename !"); }



Как обычно, можно поставить знак @, и если
возникнет ошибка при отправке почты, сообщение об этом не будет
выведено на экран. А можно просто проверить, ушло письмо или нет: if
( @mail( $email, "Тест", $str) ) { … что сделать если письмо ушло …
} else { … что делать, если произошла ошибка отправки (не доступен
ящик, сайт и т.д) }. Собственно говоря, есть возможность забирать
почту с любого аккаунта, но это требует расширения РНР за счет
подключения дополнительных модулей, и в стандартной поставке
недоступно. Если в переменной $email указать несколько адресов,
разделенных пробелами, информация будет разослана по всем указанным
адресам. Это открывает простой путь к организации собственной, ни от
кого не зависящей системы почтовых рассылок.



Времена и даты

Раз уж разговор коснулся даты, попробуем разобраться, как все
это можно использовать в своих собственных целях. В РНР наиболее
часто используется функция DATE в формате $date=date('параметр');.
Параметров может быть несколько, и разделяются они между собой
запятой. Вот список допустимых параметров.

• a — "am" или "pm"

• A — "AM" или "PM"

• d — день месяца, цифровой, 2 цифры (на первом месте ноль)

• D — день недели, текстовый, 3 буквы; т.е. "Fri"

• F — месяц, текстовый, длинный; т.е. "January"

• h — час, цифровой, 12-часовой формат

• H — час, цифровой, 24-часовой формат

• i — минуты, цифровой

• j — день месяца, цифровой, без начальных нулей

• l (строчная 'L') — день недели, текстовый, длинный; т.е. "Friday"

• m — месяц, цифровой

• M — месяц, текстовый, 3 буквы; т.е. "Jan"

• s — секунды, цифровой

• S — английский порядковый суффикс, текстовый, 2 символа; т.е.
"th", "nd"

• U — секунды с начала века

• Y — год, цифровой, 4 цифры

• w — день недели, цифровой, 0 означает воскресенье

• y — год, цифровой, 2 цифры

• z — день года, цифровой; т.е. "299"


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




<?php 
$h=date('H');
if ($h>=5 && $h<=11) echo "Доброе утро!";
if ($h>=12 && $h<=18) echo "Здравствуйте!";
if ($h>=19 && $h<=24) echo "Добрый вечер!";
if ($h>=1 && $h<=4) echo "Доброй ночи!";
?>



Опубликовал Kest October 26 2008 12:44:07 · 0 Комментариев · 10951 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Страница 1 из 2 1 2 >
Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
mmmJlabel
Размещение элемен...
Swing. Эффектные...
C++ : библиотека ...
StartMark
DelphiX
PHP глазами хакера
Защита от спама ...
Trojan [Исходник ...
DiZsubmit
Mass Photo Upload
DelphiXIsoDemo1
Реализация ЭЦП по...
Фундаментальные а...
Электронный магаз...
Page Promoter 7.7...
Visual Basic for ...
Переработанный пл...
База данных: Книж...
Самоучитель PHP 4

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97843
Converter AMR<-... 20268
GPSS World Stud... 17020
Borland C++Buil... 14195
Borland Delphi ... 10302
Turbo Pascal fo... 7376
Калькулятор [Ис... 5987
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Работа с текстовым...
Острогубцы
Современная реализ...
Область Range
Как быть, если хос...
Создание справки к...
Часто возникают ди...
Игровые автоматы о...
ВИД МОРОЖЕНОГО КОМ...
Размеры динамическ...
Многопользовательс...
Зачем нужны команд...
Как донести до кли...
политику издания, ...
Типизированные файлы
Урок 1. Урок рисов...
Ошибка TACTIVEFORM...
Объект PageSetup
Блоки организации ...
Лазерный термоядер...
Свадебный фотограф
Ещё о защите e-mai...
Функции-друзья класса
4. Вы можете настр...
Оператор «плюс» (+)
Статистика



Друзья сайта
Программы, игры
Error: Incorrect password!
Error: Incorrect password!


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?