Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Рассылка сайта
РНР для всех!

Выпуск номер 4

Здравствуйте все, кто не побоялся трудностей и решил окунуться в удивительный и странный мир программирования. Дело это не простое, но затягивает не хуже игрушек. Вообще, это и есть игра, только противник твой - упрямый сервер, а оружие - голова. Рассылка РНР для всех! позволит Вам сделать первые шаги в программировании на скриптовом языке РНР. У Вас будет возможность задать вопрос по интересующей Вас теме и получить на него профессиональный ответ. Или наоборот - дать ответ, если Вы его знаете. Вы сможете обмениваться мнениями и читать авторские статьи, а так же размещать здесь свою информацию. И это - только начало. Я надеюсь, что рассылка РНР для всех! станет хорошим помощником для многих из Вас! Вопросы по организации рассылки и свои мнения присылайте на адрес virtualphp@tut.by. Буду рад любым предложениям о сотрудничестве.

А еще хочу сказать большое СПАСИБО сайту и его автору лично TweakMan-y за помощь в рекламе моей рассылки. Оптимизация и настройка компьютера


Что может РНР?

Работа с Базами Данных:
Возможно самая сильная и значимая возможность в PHP3 - уровень интеграции с базами данных. Написание веб-страницы работающей с базой данных невероятно проста. В настоящее временя поддерживаются следующие базы данных:
Oracle, Adabas D, Sybase, FilePro, mSQL, Velocis, MySQL,  Informix, Solid,  dBase,  ODBC,  Unix dbm,  PostgreSQL. Я не сомневаюсь, что если у Вас есть на сервере база данных, то это одна из этих перечисленных. Впрочем, если этого добра нет, не беда. РНР с легкостью позволяет сделать эмуляцию базы данных, делая запись непосредственно в файлы. Лишь бы места хватило...

HTTP-аутификация средствами PHP:
Позволяет выполнить парольный вход в закрытую зону. Аутификация в PHP доступна только при использовании модуля Apache. При использовании специальной функции вызывается окно диалога, позволяющее ввести логин и пароль, а в дальнейшем легко проверить введенные данные.

Создание GIF-файлов с помощью PHP:
PHP не ограничен созданием только HTML вывода. Он может также использоваться для создания файлов GIF, или даже более удобные потоки изображений GIF. Для этого вам надо скомпилировать PHP с библиотекой функций изображения - GD, что уже будет зависеть как я писал, от провайдера или хостера.

Поддержка file upload:
Очень полезная штука. Позволяет реализовать закачку файлов на сервер пользователем. Пригодится например, для обмена музыкой, рефератами, программами и т.д. Кроме того, РНР предоставляет полный контроль над загружаемым файлом, в том числе есть ограничения на размер, а так же дает возможность управлять загруженным файлом.

Поддержка HTTP cookie:
PHP поддерживает HTTP cookies. Cookies - механизм для сохранения данных в удаленном браузере и, таким образом, - трэкинг или идентификация пользователей. Вы можете устанавливать файлы cookie используя функцию setcookie(). Cookies - часть HTTP заголовка, так что функция SetCookie() должна вызваться прежде чем браузеру послан какая-нибудь информация для вывода. Любой cookie, посланный Вам от клиента будет автоматически превращен в переменную PHP.

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

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

Управление электронными письмами:
Если вкратце, то все сведено к одной функции. Есть адрес и текст для отправки на этот адрес, а дальше уже дело РНР, как все это сработает, только письмо будет отправлено без проблем.

Недокументированные возможности:
Очень многие провайдеры предоставляют доступ к своим страничкам по гостевому входу. При этом выход на внешний Интернет блокируется. РНР позволяет частично снять такую блокировку (точнее, обойти ее) и пользоваться отправкой писем и смотреть адреса в Интернете. Что уже не мало. Впрочем, об этом придется писать отдельно.


Пример в номер

Пора уже сделать что-то более практическое. Предлагаю Вам для начала вместе со мной написать скрипт, который показывал бы посетителям текущее время. Это - достаточно популярный скрипт на личных страничках, и у меня прямо руки чешутся показать Вам, как просто это реализовывается в РНР. Полезность данного скрипта я бы опять же поставил под сомнение, но зато Вы научитесь применять логику в сравнениях, так как задача усложняется тем, что вывод времени надо осуществить в правильном с точки зрения русского языка виде. Иначе было бы ну уж совсем не интересно. Приступим...

<?

$ch = Date("H"); //
читаем показания часов
$mi = Date("i"); // 
читаем показания минут

$p1 = "час";     //
определяем переменные для часов
$p2 = "часа";
$p3 = "часов";

$m1 = "минут";  //
определяем переменные для минут
$m2 = "минута";
$m3 = "минуты";

// проверяем какое из слов подходит к показаниям часов
if ( $ch == 1 or $ch == 21 ) { $p = $p1; } else {
if ( $ch > 1 and $ch <= 4 or $ch > 20 and $ch <= 24 ) { $p = $p2; } else { $p = $p3; } }

// проверяем какое из слов подходит к показаниям минут
if ( $mi == 0 or $mi > 4 and $mi <= 20 or $mi > 24 and $mi <= 30 or $mi > 34 and $mi <= 40 or $mi > 44 and $mi <= 50 or $mi > 54 and $mi <= 60) { $m = $m1; } else {
if ( $mi == 1 or $mi == 21 or $mi == 31 or $mi == 41 or $mi == 51) { $m = $m2; } else { $m = $m3; } }


//
выводим результат на экран
echo "Сейчас $ch $p, $mi $m";
?>

скачать cкрипт в готовом виде

Теперь подробно разбор полетов. Как Вы видите, большинство из всего этого нам уже знакомо по предыдущим примерам. Но есть и кое что новое. Во первых - это определение времени. Это делается в самых первых строках скрипта. Сначала считываем показания часов, затем минут. Соответствующие числа попадают в указанные переменные и в принципе уже могут быть выведены на экран, но напомню, задача сделать вывод в соответствии  с логикой русского языка. Если 1, то час, а если 2, то часа и т.д. Так что на достигнутом не останавливаемся, а идем дальше по ходу скрипта. В следующих двух блоках определяемся со словами, которые пригодятся нам в дальнейшем. Подходим к самому главному. Перво на перво выбираем нужное слово для часов. Подходят три варианта - час, часов, часа. Считанное показание часов в виде числа сохранено в переменной $ch, с ней-то и будем работать. В первой строчке проверки смотрим, равно ли $ch 1-це или 21-му. Как не трудно догадаться, это те числа, при которых нужно подставить слово час. Если да, то присваиваем переменной $p значение $p1 (то есть слово час). Обратите внимание, мы не писали две проверки на каждое число, а использовали логику ИЛИ ( or ). Если нет, переходим к следующему блоку проверки, и если все условия выполняются ( кроме ИЛИ используется еще и логическое И - and ) то выполняем присваивание переменной $p слова часа в виде переменной $p2. Если и это условие не выполняется, остается только один вариант, который мы и применяем - присваиваем переменной $p слова часов в виде переменной $p3. В результате нужное слово уже лежит в переменной $p.
Теперь точно также нам придется поступить и с минутами. Правда, здесь будет немного больше заморочки, так как и минут по количеству больше чем часов, но трудности это не представляет, ведь алгоритм уже известен. В конечном итого нужное слово для минут оказывается в переменной $m. И вот теперь настало время вывести результат на экран, что тоже уже знакомо нам по предыдущим примерам. Вот Вам и основы РНР! Еще и учиться то толком не начали, а уже первый скрипт готов... То ли еще будет!


Наши обшибки

Не думаю, что постоянное напоминание о самых распространенных ошибках будет Вам сильно вредить. По крайней мере будет полезно знать и постоянно вспоминать о том, что можно сделать не так. Предлагаю Вам тоже поучаствовать в составлении коллекции ошибок. Опишите ошибку, ее признаки, и присылайте сюда.

  • Самое распространенное - не стоит завершающая оператор точка с запятой. Не ставится она только в конструкции if () {} {} Основной признак - ошибка в следующей строке за тем оператором, в котором нет точки с запятой.

  • При сравнении на равенство двух переменных ставится два знака равенства. Исключений нет. Основной признак - скрипт работает, но не так как это от него ожидается.

  • В конструкции if () {} {} отсутствует завершающий знак - } Исключений нет. Признак этой ошибки очень простой, и позволяет детектировать эту ошибку очень просто. При запуске скрипта на выполнение интерпретатор выдает ошибку в самой последней строчке кода, где стоит завершающий тег ?>

 


Сайты в тему

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

  • http://php3.agava.ru - информационный ресурс о РНР. Есть примеры и много статей самого различного уровня. От начинающего до профи! Язык - русский.

  • http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.


Примеры скриптов

Всегда приятно взять что-то уже готовое, а не тратить время на настройку и программирование. В этом разделе Вы сможете найти все скрипты, описанные в рассылке и на сайте. Если Вы хотите разместить тут свой скрипт - присылайте его код и авторские данные.

  • vremya.rar - выводит на экран время в соответствии с логикой русского языка.


Где можно посмотреть

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

  • http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков.


Вопросы и ответы
задать вопрос

Предлагаю Вам присылать свои вопросы на адрес рассылки. Первое время будет действовать только вариант пересылки вопроса по почте, но в будущем приоритет будет отдаваться вопросам, заданным с формы на сайте. Вопрос должен быть кратким, точным и по теме. Ответы на вопросы по мере знаний будут даваться мной, а если я не смогу дать Вам исчерпывающий ответ - кто-то из подписчиков обязательно поможет. А если Вы знаете ответ на заданный вопрос - не поленитесь ответить. Этим Вы очень поможете кому-то решить свою проблему. Синтаксис и грамматика - авторские.

задать вопрос

Вопросы:

  1. Вопрос есть ли в РНР аналогичная замена директивы SSI <!--#exec cgi="cgi-bin/counter.cgi" -->
    И как функция пишется, я пробовал exec, system ничего не выходит. Нужно запустить из РНР файда CGI счетчик и что бы он вставил свое значение в файл РНР и counter.dat, в общем выполнить CGI скрипт. Заранее благодарен, Андрей.

    ответить
  2. Пришло несколько вопросов, я их объединяю в один. Где можно получить бесплатный или почти бесплатный хостинг с поддержкой РНР и желательно базы данных.
    ответить

Ответы на заданные вопросы:

  1. Здравствуйте. Если я все правильно понимаю, для того что бы писать на php никакой среды разработки не нужно, можно и блокнотом обойтись, так? А как писать и выполнять на своей машине скрипты, не подключаясь к инету каждый раз, чтобы проверить, работает ли скрипт? Можно ли
    использовать для этих целей Apache for windows? Если да, то как это сделать?(я с ним еще не очень разобрался...). Заранее спасибо, Владимир.


    Ответ:
    Нужно воспользоваться одним из серверов. Самый распространенный - Apache. Он прекрасно работает с РНР. Настройка тоже не сложная, и в Интернете есть много инструкций на эту тему. Можете посмотреть на сайте www.tweak.tut.by

    Дам стандартный ответ: необходимо поставить какой-либо Web-сервер (не побоюсь быть оригинальным, Apache 1.3.12 вполне подойдет). Также рекомендую поставить PHP Triad /Apache-PHP4-MySQL/ for Windows GkWare(если пользуетесь этой ОС) - существует поддержка PHP4, через ISAPI-интерфейс возможно поставить поддержку PHP на IIS(Internet Information Server) и
    PWS(Personal Web Server). Сергей seryj_volhv@mail.ru


    Можно! Стоит только установить себе сервер Apache с поддержкой PHP и пользуйтесь. Если возникнут
    вопросы с настройкой - обращайтесь apollonX@mail.ru

  2. Не подскажешь, где можно скачать php пакет? (т.е. есть у меня апача, я там над perl-ом балуюсь :-), так вот где мне можно скачать php интерпритатор (под винду, хотя она и мастдай).....)

    Ответ:
    Очевидно, что

задать вопрос


Обмен ссылками и баннерами

Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - virtualphp@tut.by Все ссылки обязательно появятся в этой рассылке. Если есть желание разместить свой баннер 88*31 на сайте рассылки http://virtual.bresttelecom.by/php/ , укажите это дополнительно, и пришлите код своего баннера. В любом случае, Вам надо будет разместить у себя код баннера сайта рассылки.

<!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img src="http://virtual.bresttelecom.by/php/php/php1.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>

<!-- PHP banner end -->

Правила у меня стандартные - описания Ваших сайтов будут периодически (в зависимости от из количества) размещаться в рассылке. И конечно - будет отдельная страничка на сайте, на которой будут представлены все друзья сайта.

http://virtual.bresttelecom.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!


Подпишитесь на рассылки!

Рассылки Subscribe.Ru
Программируем на PHP - вопросы и ответы.
Новости сайта Виртуальный Брест
Оптимизация и настройка компьютера

Здесь будет публиковаться список рассылок, рекомендуемых к подписке. Если у Вас есть рассылка - предлагаю Вам обменяться подобной формочкой для подписчиков.


Разное

Обращаю Ваше внимание, что правильный адрес рассылки - virtualphp@tut.by. Сайт рассылки доступен по адресу http://virtual.bresttelecom.by/php/
Если Вы можете помочь сделать баннер для сайта, буду Вам очень признателен. С графикой я не очень дружу, но думаю, что смогу быть полезен и Вам. Жду предложений. Нужен баннер 88*31, лучше анимированный, по теме РНР, вопросы, ответы, статьи и т.д. Возможна оплата показами баннера или через RLE. Рассмотрю любые варианты.


автор рассылки Андрей Кухарчик


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное