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

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


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

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

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

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

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


Что такое РНР ?

Эта статья - продолжение предыдущего опуса о РНР. Я думаю, что не очень надоел Вам хвалебными одами о РНР, но та почта, которая приходит мне на адрес, показывает наличие здорового интереса общественности с программированию на РНР. Кстати, отвечаю по ходу дела на один из самых распространенных вопросов. Да, рассылка будет содержать в себе статьи и примеры, и нет, она по идее не должна превратиться только в вопросы и ответы. Ну, может иногда такое и будет происходить, но только когда уж совсем будет поджимать со временем.
Теперь ближе к делу. Вот что я взял на неплохом сайте, посвященном РНР - http://php3.agava.ru Кстати, если есть желание, Вы можете посетить этот сайт, и найти там массу полезной информации. В свое время она (информация с этого сайт) очень мне помогла. Итак:

PHP - это интерпретируемый язык для создания активных Web-страниц. Программа на PHP, подобно тексту на JavaScript, VBScript или ASP, вставляется в HTML-файл. Начало и конец программы отмечаются специальными скобками <?php и ?>. Текст вне этих скобок PHP не интерпретирует: он передается Web-браузеру "как есть". Синтаксис PHP основан на синтаксисе языков Си, Java и Perl. Способы заставить сервер правильно реагировать на HTML-файлы со вставками на PHP, вообще говоря, различны для разных серверов, но чаще всего бывает достаточно дать имени файла расширение *.php3 или *.phtml

PHP - это Си-подобный язык, предназначенный для быстрого создания программ на WEB-сервере. Он похож на Perl и ASP, но на порядок удобней их! Программы на PHP защищены от взлома методом "кривых символов". PHP вместе с Apache - самый популярный WEB-сервер - работает гораздо эффективней, чем Perl+Apache (RTFM). Если вы webmaster (а не держатель домашней странички) и вы установите этот PHP под Windows или Unix, вы поймете что значит выражение "крутой программер"

PHP - это система разработки скриптов, включающая в себя CGI - интерфейс, интерпретатор языка и набор функций для доступа к базам данных и различным объектам WWW. На данный момент PHP является наиболее удобным и мощным средством разработки приложений WWW и интерфейсов к Базам Данных в Интернет.

PHP — это интерпретируемый язык программирования, код которого встраивается непосредственно в HTML-страницы. При запросе пользователя web-сервер просматривает документ, выполняет найденные в нем PHP-инструкции, а результат их выполнения возвращает пользователю. При этом статическая часть документа, написанная на языке HTML, фактически является шаблоном, а изменяемая часть формируется при исполнении PHP-инструкций. Для удаленного пользователя подобные документы ничем не отличаются от обычных статических HTML-документов, за исключением того, что в расширении имени файла для таких документов может стоять не htm или html, а phtml или php3.

Надеюсь, что теперь Вам стал еще более понятнее смысл РНР и его возможности. Прошлый урок повторили, теперь пойдем немного дальше. Давайте попробуем разобраться, что позволяет сделать интерактивной страничку, на которой применяется РНР.
Во первых, это возможность генерировать код HTML прямо на лету, подготавливая страницу посетителю в уже готовом виде. Самый распространенный и самый простой пример - счетчик. Если он текстовый, все упрощается до предела. При просмотре кода HTML такой страницы Вы обнаружите что прямо в коде стоит цифра посещений, а при обновлении страницы она уже будет другой - на еденицу большей. Вот Вам и интерактивность. РНР передал браузеру нужное значение, что положительно сказалось на скорости, так как уменьшился поток передаваемых данных по Интернету и браузеру ничего не надо дополнительно выполнять кроме HTML. Он и с этим-то не всегда хорошо справляется :-)
Во вторых - возможность читать во внутренние переменные любую страницу в Интернете. Самый распространенный пример - новости, курсы валют, погода и т.д. Все эти вещи делаются буквально одним движением руки, а создается впечатление, что над сайтом постоянно работает команда, так как новости всегда свежие, курсы правильные, погода... ну как обычно :-)
В третьих - теснейшая интеграция со всеми основными базами данных, что позволяет иметь доступ к сохраненной прежде на сервере провайдера информации. Опять же пример - прайс Вашей фирмы может быть просто в формате EXCEL, а может генерироваться с возможностью поиска, структуризации, дополнения, заказов по почте и т.д. Что Вы предпочтете для своей фирмы? Ответ ясен.
В четвертых.... (ну последнее) - поразительная легкость обработки форм, что дает безграничные возможности по управлению вводом данных пользователем. Это - вообще просто и если честно, то мне кажется что логичнее и проще сделать уже нельзя.
Еще можно упомянуть про легкость расширения и подключеия новых модулей (пример - графический модуль), а так-же достаточно хорошая защищенность от взлома (хотя и тут есть поразительные исключения, оправдать которые может только недостаток знаний). Впрочем, это больше зависит не от простых пользователей (не считая их так называемых кривых рук :-), а от держателя сервера, именуемого часто провайдером. Кстати узнать, что может Ваш РНР у провайдера очень просто. Вот Вам код, что с ним делать, надеюсь уже ясно.

<?php
phpinfo();
?>


Маленький!? Тогда посмотрите, сколько он Вам выдаст! Вот уж точно - всего одна строка, а как много оа нам говорит... Не думаю, что сможете сразу во всем разобраться, но знать такое часто полезно.
Перейдем к примерам.


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

Придумаем пример немного посложнее предыдущего :-) Задача перед нами вот какая - выбрать из двух чисел большее, и вывести его на экран. Если числа равны - вывести сумму чисел. Просто? Да конечно...

<?php
$w = "4"; // первое число
$e = "6"; // второе число
if ( $w == $e ) { echo $w+$e; exit; }
if ( $w > $e ) { echo $w; } else { echo $e; }
exit;
?>

Вот и весь скрипт! На входе имеем два числа. Не важно откуда они берутся, важно то, что мы потом с ними делаем. А делаем мы с ними вот что. Перво на перво пытаемся проверить, равны числа или нет. Обратите внимание на двойной знак равенства в операторе if. Дело в том, что если оставить тут один знак равенства, переменной $w будет присвоено значение переменной $e. А в нашем случае надо проверить, равны ли переменные. Это и достигается двумя знаками равенства. Другими словами, если Вам надо провести сравнение, равны ли две переменных, не забудьте поставить два знака равенства - это вторая самая распространенная ошибка начинающих программистов. Поставите один - и будете очень долго искать правды от Вашего скрипта, а работать он в упор не будет. Если числа равны, выводим их сумму, что достигается простым знаком плюс между переменными и командой echo а потом завершаем скрипт если это надо командой exit Этого, кстати можно было бы и не делать, в этом случае интерпретатор пошел бы дальше обрабатывать код, и в конце его нашел бы ту-же команду, но... Время, братцы, время... Старайтесь не заставлять интерпретатор производить ненужные действия, и он отплатит Вам приличной скоростью работы. Если же числа не равны, код вывода на экран суммы (обратите внимание, что он заключен в кавычки типа {} ) будет проигнорирован, и интерпретатор продолжит свою работу дальше. А дальше у нас идет проверка, какая из переменных больше. Само собой, что если переменные не равны, то одна из них больше, а другая меньше. Итак, если $w>$e, выводим на экран $w, так как оно больше. А если условие не выполняется (короче - $w<=$e) , выполняется конструкция в скобках после else Но так как на равенство мы уже проверяли вначале скрипта, то эта конструкция выполнится только если $w<$e. Вот тут то и пригодился нам оператор exit в предыдущей строке, так как если бы его не было, на экран кроме суммы переменных была бы выдана переменная $e. После обработки всех строк интерпретатор завершает свою работу, а браузеру передается результат в виде одного числа.


Наши обшибки

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

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

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

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

 


Сайты в тему

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

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

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

 


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

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

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


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

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

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

Вопросы:

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

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

    ответить (ответ есть уже в этой рассылке, но можете ответить подробнее)

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

  1. Что то я не могу въехать, как мне сделать запись в файл. Все делаю как положено в описании, но в том месте, где должна идти запись в файл, РНР выдает ошибку. Что бы это могло быть?

    Ответ:
    Скорее всего, Вы не поставили атрибуты на записываемый файл. Сделать это очень просто. В вашем FTP менеджере посмотрите свойства уже закаченного файла на сервере. Атрибуты его будут установлены только в чтение. Вам надо изменить их на запись. Код атрибутов должен быть 666 или 777. После этого все будет работать, если в скрипте нет ошибки.

  2. Как мне сделать так, что бы не закачивать каждый раз файлы для проверки на сервер. Можно ли проверять работоспособность РНР в offline?

    Ответ:
    Нужно воспользоваться одним из серверов. Самый распространенный - 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

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


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

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

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

В избранное