Программы для ПК Воскресенье, 28.04.2024, 01:17
Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Мои статьи [8]

Интересно

Глянем

Популярные запросы
интересные программы для пк 7-Zip Программа для эмуляции CD/DVD QuickTime скачать новые программы для пк Firefox Trial Ключи ESET NOD32 Антивирус Notepad++ Opera 10.10 AIMP полезные программы для пк Realtek HD Audio 2.39 ChromePlus программы для пк без регистрации бесплатный антивирус программа звука на пк KMPlayer 2.9.4.1435 Безопасность и защита Download Master 5.5.15.1179 аська EVEREST Аудио, видео плееры и кодеки CCleaner 2.26 Сборка 1050 бесплатная программа скачать полезные программы для пк Paint.NET Microsoft .NET Framework 4.0 Beta All-Radio восстановления файлов CCleaner 2.27 Сборка 1070 бесплатная программа Recuva 1.34.460 Total Commander WinRAR 3.91 Final 32-64Bit + Сrack программа для прослушивания радиостанций Notepad++ 5.6.3 Download Master 5.5.15.1179 Trial Ключи Alcohol120 Retail 1.9.8.7612 VirtualBox GIMP 2.6.8 HDDlifeRus 3.0.146 программа для создания файлов в формате PDF novaPDF ICQ

Наш опрос
Каким из разделов сайта вы чаще пользуйтесь ?
Всего ответов: 31

Интересно

Главная » Статьи » Мои статьи

PHP - руководство для начинающих. Часть 2
Итак, мы продолжаем мучить компилятор php. Сегодня мы узнаем:
-что такое функция и чем ее есть
-как писать в файлы
-разберем пару рабочих скриптов
Go, Go, Go...

Итак, функции. Если объяснять совсем на двух пальцах, то это некое подобие функций в твоем организме (особенно выделительных). Как я думаю, вышеупомянутые функции у тебя регулярны и своевременны, а главное не вызывают ошибок приводящих к нерабочему состоянию всего организма.
Так и в PHP. Функции - это часто посторяющиеся действия, которые для удобства отделили от общей кучи другий действий и в нужное время используют не переписывая код по новой.

Задать функцию в PHP просто, как два байта отслать:

function NAME (PARAMETR)
{
CODE;
}


Теперь поясним вышенаписаное. Ключевое слово function говорит о том что, нужно создать функцию с именем NAME (может быть любым) и параметром PARAMETR (параметров может быть много, а может и вообще не быть). В сам код функции можно написать все что угодно. Это у кого как с фантазией дело обстоит.
Первая функция.

Попробуем написать первую функцию. В ее задачу будет входить вывод фразы "Hello world".

function HW()
{
echo "Hello world!";
}

Как видно из строк выше, мы создали (написали) функцию с именем HW (от hello world) и между фигурными скобками написали код, который будет выполняться всякий раз, когда функция будет вызываться из общего кода. Заметь, наша функция пока не имеет... параметов, поэтому ничего нет между круглыми скобками после имени функции. Теперь попробуем вызвать новорожденную из того самого общего кода.

#c '#' начинаются коментарии, не забывай. Кометарии не выполняются!
function HW()
{
echo "Hello world!";
}
# вызываем функцию
HW();
?>


Как видишь, все просто! Помни только, что сами по себе функции не работают их нужно вызывать. Когда я только изучал программирование вцелом, у меня возник вопрос: "А не проще ли тупо написать echo "Hello world!"; в скрипте и жить спокойно?". Далее мы разбереммся когда целесообразно использовать функции.
А оно мне надо?

Конечно надо! Это в данном примере все слегка нерационально. Вот, например, возмем пример из жизни: я хочу чтоб моя страница показывала пользователям моего прова одно, а всем остальным... все остальное :). Для этого я написал такой код:

if ( getenv ( REMOTE_ADDR ) == '192.168.0.14') echo "Нифига не покажу! Сперва пиво, потом инфа!";
else include ('page_for_all.html');
?>

Вот и все. Пока меня не задобрят алкоголем с ip-адреса 192.168.0.14 никто ничего не увидит (вот так вымагают пиво у невинных ламеров - прим. потерянной совести), как говорится: "Дикриминация рулит"!

Немного поясню синтаксис новых функций и циклов. У каждого конечно сове мнение, но, имхо, IF правит миром. Мне этот ветвитель нравится больше всего, т.к. с его помошью можно делать _САМЫЕ_ непристойные вещи! Вот какова его логическая структура: if ( параметр условие значение ) делает то-то else то-то. В нашем случае параметр - это ip-адрес ущемляемого ламера, условие == (равно, бывает еще != - не равно, < > - меньше больше, <= меньше либо равно, >= больше либо равно) значение - 192.168.0.14. В итоге получаем: если (ip-жертвы равно 192.168.0.14), то пишем.... если нет - "вклеиваем" страницу. Идем далее. Функция getenv (переменная окружения) - читает переменную окружения.

Немного остановимся на этих самых переменных. Их очень много, каждая несет в себе какую-либо информацию о параметрах веб-сервера, системы и т.д. Напрмер переменная REMOTE_ADDR содержит в себе ip-адресс посетителя страницы. Эту переменную передает браузер или прокси-сервер, через который ты сидишь (если ты вообще пользуешься прокси). Все доступные переменные окружения можно посмотреть на своем сервере используя простой скрипт, который я выложил на своем сайте (http://iprit.h10.ru/index.php?part=sources. Скрипт называется getenv.pl).

Далее у нас идет функция include ('что вставляем'). Ее назначение просто, как назначение кнопки "пуск" в твоих виндах - она вставляет содержание файла, который передается ей как параметр. Например, я хочу не переписывать на каждой странице html-код с логотипом сайта, рубрикатором и проч., тогда просто один раз пишем этот код в файл (например top.html) и просто в каждом файле, где необходимо, вставляем стороку и все(!) - никаких запаров с SSI (вставки на стороне сервера)! Кстати сказать, php имеет массу преимуществ перед использованием SSI, т.к. можно варьировать то, что вставляем (как, например, в нашем случае).

Но опять возникает тот самый вопрос "а не проще ли тупо переписать код, вместо функции"? А нет! Мне вот, например, не хочется показывать только отдельные части страницы (напр.: рубрикатор и колонку новостей). И что? Каждый раз вставлять этот код. О...чень больших размеров тогда получится скрипт, дорогой товарищ! Проще, рациональнее и удобнее для понимания написать функцию (lamer_check) и вызывать ее где надо.
lamer_check

Итак, практическое применение функций. Задача: не допустить, что б ламер Федор не смог почитать новости на нашей странице. Напишем функцию, параметром которой служила бы страница, которую необходимо было бы вставить, если зашел не наш мученник Федор

function lamer_check ( $page )
{
if ( getenv ( REMOTE_ADDR ) == '192.168.0.14') echo "Нифига не покажу! Сперва пиво, потом инфа!";
else include ($page);
}


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

function lamer_check ( $page ) - создает функцию lamer_check с параметром, который задан переменной $page.

if ( getenv ( REMOTE_ADDR ) == '192.168.0.14') echo "Нифига не покажу! Сперва пиво, потом инфа!"; - эту сроку можно перевести как "если адрес пользователя" равен 192.168.0.14, то написать "Нифига не покажу! Сперва пиво, потом инфа!"....

else include ($page) - ..., если нет, то выставить текст из фйла, путь к которому задан переменной $page.
На практике

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

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

#Logger v0.01
#путь к файлу с будушими логами
$log_path='./log.txt';
#берем из переменной окружения ip-адрес посетителя...
$user_ip=getenv(REMOTE_ADDR );
#... и его тип браузера
$user_brouser=getenv(HTTP_USER_AGENT);
#узнаем сегодняшнее число и время
$curent_time=date("d-m-y-H-i-s");
#Компануем все данные в одну строку (для удобства)
$log_string="$user_ip $user_brouser $curent_time\n";
#открываем файл для добавления в него (все добавляется в конец старого файла)
$file=fopen($log_path,"a");
#пишем в файл приготовленную строку
fwrite($file, $log_string, strlen($log_string));
закрываем файл
fclose($file);
#все :)
?>

Вот такой вот небольшой скрипт (особенно если убрать коментарии). Итак? разберем по-немногу работу с файлами. Для этого используется несколько основных функций: fopen, fwrite, fread (о ней мы поговорим в следующих частях) и fclose. Рассмотрим их по порядку появления в скрипте.

Посмотрим, что говорит на тему fopen мануал по php:

fopen

fopen -- открыть файл или URL

Описание
int fopen(string filename, string mode);

Если filename начинается с "http://" (без учета регистра), открывается соединение HTTP 1.0 с указанным сервером и возвращается указатель файла, нга начало текста ответа. Поскольку редиректы HTTP не обрабатываются, вы должны включать в указание директории завершающие слеши.

Если filename начинается с "ftp://" (без учета регистра), открывается ftp соединение с указанным сервером и возвращается указатель на искомый файл. Если сервер не поддерживает режим пассивного ftp, данная операция завершится ошибкой. Вы можете открывать файлы как для чтения, так и для записи через ftp (но не обе операции одновременно).

Если filename начинается как-нибудь иначе, откравается файл вашей файловой системы, и возвращается указатель на открытый файл.

Если при открытии файла происходит ошибка, функция возвращает false.

mode выбирается из следующего списка:
'r' - Открыть только для чтения, помещает указатель на начало файла.
'r+' - Открыть для чтения и для записи, помещает указатель на начало файла.
'w' - Открыть только для записи, помещает указатель на начало файла и очищает все содержимое файла. Если файл не сществует, создается новый файл
'w+' - Открыть для чтения и для записи, помещает указатель на начало файла и очищает все содержимое файла. Если файл не сществует, создается новый файл.
'a' - Открыть только для записи, помещает указатель на конец файла. Если файл не сществует, создается новый файл.
'a+' - Открыть для чтения и для записи, помещает указатель на конец файла. Если файл не сществует, создается новый файл.

mode также может содержать символ 'b'. Используется в системах, различающих бинарные и текстовые файлы (не используется в Unix). Если данное значение не имеет смысла, оно игногрируется.

Вроде все понятно. У нас используется тип a - "Открыть только для записи, помещает указатель на конец файла. Если файл не существует, создается новый файл". Файл для открытия log.txt, который находится в одном каталоге со скриптом.

fwrite

fwrite -- бинарная запись в файл

Описание

int fwrite(int fp, string string, int [length]);

fwrite() записывает содержимое string в файловый поток, указанный fp. Если аргумент length присутствует, запись останавливается после записи length-го байта, или после записи всей строки string.

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

fclose

fclose -- close an open file pointer

Описание

int fclose(int fp);

Указатель на файл fp закрывается. Возвращает true при удачной операции и false при ошибке.

Указатель должен быть действующим и указывать на файл, успешно открытый fopen()

Ну тут думаю без коментариев. Просто закрывает открытый файл.

Категория: Мои статьи | Добавил: Partizan (25.12.2009)
Просмотров: 682 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Статистика
Rambler's Top100
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Бонусы

Получить WMR-бонус Balans.kz на свой кошелек!

выбор администраци
» ESET NOD32 Antivirus 4.0.467.0 Russian Home Edition (32-bit-64-bit) а также Trial Ключи

Интересно

People Group

Профессиональная раскрутка сайта, заработок для веб-мастеров



Друзья сайта
  • Всё лучшее для мобильников
  • Книжный мир

  • 18+

    Форма входа

    Топ программы

    Реклама

    Copyright MyCorp © 2024