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

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


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

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

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

Здравствуйте

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

Перед Вами очередной, на этот раз юбилейный :-) выпуск. Мы уже выходили в эфир 10 раз, и за прощедший период набрано почти 3000 подписчиков. Неплохо, особенно если учесть что я собирался делать выпуски для 50-100 человек... :-)


Обработка форм

Итак, на протяжении 10-ти выпусков мы постигали самые основы РНР, и теперь нам предстоит разобраться, как увязать программирование на HTML с скриптами на РНР. На самом деле это еще проще, чем что-либо другое в РНР. Все сделано так, что-бы пользователь чувствовал себя достаточно комфортно и не испытывал проблем, в том числе и при программировании. Каким же образом можно достичь плотного взаимодействия программиста и пользователя? Посещая различные сайты, каждый из Вас не раз сталкивался с различными формами и полями для ввода. Некоторые даже пытались разобраться, как все это работает, но непременно натыкались на тот факт, что данные формы нужно как-то обработать. Но как!? Ответ ясен - с помощью РНР. И именно это мы с Вами сейчас и будем делать...

Для начала давайте сделаем форму для отправки писем на любой адрес, который тоже требеутся ввести. На этом примере и разберемся как все работает:




<form method="POST" action="action.phtml"><p><input type="text" name="email" size="20"><br><input type="text" name="name" size="20"><br><textarea rows="2" name="txt" cols="20"></textarea><br><input type="submit" value="Submit" name="B1"><input type="reset" value="Reset" name="B2"></p></form>

Вы видите перед собой небольшую форму с тремя полями для ввода. Особенности этой формы таковы: обработка после нажатия кнопки отправить будет передана файлу action.phtm Если надо указать другой путь - воспользуйтесь стандартными методами указания пути. Имя первого поля - email, и туда посетитель будет вводить адрес, куда надо отправить письмо. Второе поле имеет имя name ,и оно предназначено для ввода имени того, кто хочет отправить письмо. Можно конечно обойтись и без этого, но для наглядности не помешает. Следующее поле - поле ввода текста сообщения, и оно имеет имя txt. Как видите все имена можно давать так, что бы в последствии не запутаться в них. Наша форма почти готова. Не хватает только эстетического оформления, но это уже дело десятое, можно сделать любые надписи или применить различные стили. Теперь перейдем к нашей основной части - обработчику формы, который как Вы помните, находится у нас в файле action.phtm.

<?php mail($email, $name, $txt, $name); ?>

Все... Нда-а-а, что-то не густо получилось у нас сегодня с примерами. Ну да ладно, не я виноват в том что в РНР все так просто. Как Вы поняли уже, все те имена которые мы присвоили полям ввода в нашей форме, перешили точно такими-же в скрипт РНР, котоый указывается в форме как обработчик. Причем значением этих имен (переменных РНР) будет являться то, что посетитель Вашей странички введет в соответствующее поле. Адрес окажется в переменной $email, имя - в $name,а текст - в $txt. Вот и вся наука! Любое имя формы становится переменной в обработчике, написанном на РНР.

 

Теперь по поводу прошлого выпуска. Информация, размещенная в нем, была несколько не полной, и нуждается в корректировке. Дело в том, что предложенный способ организации сайта был дан в качестве примера. Если использовать его в таком виде, можно при определенных условиях подвергнуть опасности весь сервер, где расположен сайт. К слову - такая брешь была обнаружена на сайте рассылки, но теперь она благополучно устранена. Я хочу выразить благодарность всем, кто указал мне на эти проблемы. А остальным - посоветовать не повторять моих ошибок. Проблема заключается в том, что если посетитель введет определенную информацию после символа ? в URL Вашего сайта, он получит доступ к специфической информации сервера, а дальше применить полученную инфрмацию для взлома. Метод защиты от этого пока мне известен только один - контролировать то, что посетитель вводит и производить отсев неправильных ссылок. Правда, придется создать массив правильных, и сравнивать каждую из них с уже введенной. Как это все работает - можете посмотреть на сайте тут: http://virtual.bresttelecom.by/?это   Ссылка заведомо не существующая, так что все увидите сами.


Наши обшибки

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

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

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

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


Сайты в тему

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

  • http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.
  • http://go.to/php-encoder - защита РНР скриптов.
  • http://phpclub.net - Архив бесплатных PHP-приложений (вкл. E-commerce), форумы, чаты, рассылки, книги, обучение, хостинг.

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

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

http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков, анекдоты.
www.gdekupit.ru Интернет-каталог Где купить в России. Каталог полностью автоматизирован. Регистрация, добавление нового города, Оформление Договора, выписка счета, служба рассылки и т.д. полностью автоматизировано. Все, кроме счетчика посещений на PHP и MySQL. Кстати, регистрация предприятий, расположенных в любом города России, абсолютно бесплатная.
http://www.ohrana.nsk.su - Практически весь сайт написан на PHP. Используется БД на MySQL.

http://www.webclub.lv   - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.
http://www.love24h.com/ru/   - международная служба знакомств, все анкеты (более 1500) с фото
http://www.freeglobus.com/ - сайт бесплатных игр (все со скриншотами и линками на загрузку)

http://trinet.wallst.ru - на PHP сделан каталог игр


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

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

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

Вопросы: 

  1. Здравствуйте помогите правильно напистаь скрипт по аудентификации, я что то совсем запутался с Oracle-ом, подскажите хотя бы что я делаю не так, с Mysql, мне не поможет, мне нужно именно с БД Oracle. Заранее благодарен, С уважением Олег.

    <html>
    <?php
    if(!isset($PHP_AUTH_USER)) {
    Header("WWW-Authenticate: Basic realm=\"restricted area\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo Вы ввели неправельный пароль... \n";
    exit;
    } else {
    $db="userpass";
    $conn = OCIlogon ("users", "password", $db);
    $str = OCIParse ($conn, "select * from users);
    $user_id = strtolower ($PHP_AUTH_USER);
    $result = -Oci -("select password from userpas" .
    "where username = '$username'")
    $row = -Oci - ($result);
    if ($PHP_AUTH_PW != $row["password"]){
    Header("WWW-authtenticate: basic realm=\"restricted area\"");
    Header("HTTP/1.0 401 Unathorized");
    echo " Аудентификация невозможна повторите попытку";
    exit;
    }
    }
    ?>
    </html>

    ответить
  2. У мена такая проблема. Пробовал пример с посылкой почты, выдает ошибку :
    Warning: Server Error in test.php on line 75.
    Строка 75:
    73 - $email = "адрес";
    74 - $txt = "тестовое послание!";
    75 - mail($email, "Тема письма", $txt, "");
    У меня стоит W2000 (соответственно с IIS 5.0) При инсталяции PHP прописался пад него. Может что подскажите?

    ответить
  3. Что лушчше использовать для организации счетчика: MySQL, куда будут заноситься IP-адреса входивших, или текстовый файл .dat. И еще, как распознать тот же IP-адрес клиента? Спасибо. Tip.
    ответить
  4. Подскажите как вставить с помощью РНР в html-страничку картинку gif или jpg сохраненную в базе MySQL. С помощью include/require не получается из-за header.
    ответить
  5. Что мне нужно написать, чтобы форма отправлялась на p1@e-mail.ru названия форма msg1, msg2
    ответить
  6. есть-ли версия Apache под Win ME? или какой-нибудь другой веб-сервер для отладки скриптов в офф-лайне с поддержкой php, mysql и perl под millennium?
    ответить


    Ответы на заданные вопросы:
  1. есть index.html и php (который из текстового файла читает новости)... Как сделать так чтобы эти новости размещались в index.html?

    Ответ:
    Самое простое с помощью SSI включать в тело index.html php-скрипт,
    который и будет показывать новости на сайте.

    Ответ:
    Если сервер поддерживает SSI (а таковых большинство), то сделай так:
    <!--#include virtual="/path/to/your.phtml?${QUERY_STRING}"-->
    где - ?${QUERY_STRING} - если нужно еще и данные передать, например,
    при "листании" новостей и т.п.

    Ответ:
    <!--#include virtual="php_file.php"-->

    Ответ:
    немного не понятен вопрос, если я правильно понял то у тебя такая ситуация: index.php сгенерил новости, а index.html должен их показать ? Зачем? Непроше что бы index.php и выводил новости, ну если это так то вот: index.php генерит файл news.txt в index.html включаеш <!--#include virtual="news.txt"--> и все...
    правда логика у тебя кривая...зачем два indexa
  2. Можно ли в пхп нормально вычитать даты? или только грабить из строки числа и
    самому дальше их вычитать?


    Ответ:
    Прочитайте, пожалуйста, про функции date, localtime, mktime.
    Пример:
    <?php
    lt = localtime(time(), 0);
    $start_time = mktime(0, 0, 0, $lt[4] + 1, $lt[3]-1, 1900+$lt['5']);
    ?>

    этот пример присваивает переменной $start_time время 00 часов 00 минут 00 секунд вчерашнего дня.
    А вообще, время хранится в формату unix_timestamp, то есть в секундах прошедших с начала 1970 года, то есть, если у вам известен какой-то момент времени, то получить время ровно на 24 часа более ранне можно вычитанием 60 * 60 * 24 = 86400. С уважением, В. Шабанов.


    Ответ:
    Приводи к Unix timestamp и вычитай. Получишь разницу в секундах.
  3. Почему когда программа считывает информацию с файла с помощью fgets в переменную записывается только 256 символов, как можно расширить её объём?

    Ответ:
    Функция fgets в качестве второго параметра принимает максимальный размер в байтах считываемой строки, то есть достаточно указать $str = fgets($file, 4096); и fgets сможет считать из файла 4096 байт. С уважением, В. Шабанов.

    Ответ:
    Используй fread(int fp, int length) Позволяет читать произвольное число байт из файла...

    $filename = "/usr/local/something.txt";
    $fd = fopen ($filename, "r");
    $contents = fread ($fd, filesize ($filename));
    fclose ($fd);
  4. Здравствуйте.Установил себя Apache и дистрибутив PHP. Проблема: не запускаются файлы с расширением phtml (php3 - работают) и не работают вставки в HTML. При запуске HTML странички с любой из следующих строк в теле ничего не происходит.
    <? echo("Hello"); ?>
    <?php echo("Hello"); ?>
    <script language="php">
    echo ("Hello");
    </script>;
    <% echo("Hello"); %>
    Заранее спасибо.


    Ответ:
    Необходимо в конфигурационных файлах внести некоторые изменения:-)
    1.а)
    Именно - либо в httpd.conf по умолчанию там есть следующие строки:
    #AddType application/x-httpd-php3 .phtml
    #AddType application/x-httpd-php3-source .phps
    Раскомментируй их и дополни так:
    AddType application/x-httpd-php3 .phtml .php3 .php
    AddType application/x-httpd-php3-source .phps
    Если используешь PHP4, то подправь ...x-httpd-php3 на ...x-httpd-php4.
    Если используешь и PHP3 и PHP4 одновременно (и такие "гурманы" есть),
    то скопируй эти строки и отредактируй соответственно.

    1.б)
    или в mime.types - отредактируй строки:
    application/x-httpd-php phtml php3 php
    application/x-httpd-php-source phps

    2.
    Под Windows нужно еще и проверить наличие в httpd.conf следующей директивы:
    <Directory "f:/usr/local/php">
    Options ExecCGI
    </Directory>
    ScriptAlias "/__php_dir__/" "f:/usr/local/php/"
    Action application/x-httpd-php "/__php_dir__/php.exe"
    Здесь "f:/." - путь к каталогу твоего PHP. И повнимательнее со слешами в конце... Можно, конечно и поэкспериментировать, но в Руководствах по Apache и PHP это оговорено _однозначно_. Надеюсь, совет окажется полезным... С уважением, Андрей Емельянов, eav@vov.ru , http://www.eav.vov.ru


    Ответ:
    Пропиши в файле mime.types след строчку: application/x-httpd-php .php .phtml .php3 .php4 .<любое другое нужное тебе расширение> добавление .html будет парсить html - файлы. Но делать этого настоятельно не рекомендую.

    Ответ:
    Апачем файлы с расширением php3 у тебя обрабатываются, а php, phtm, phtml - нет? Это прописывается простым перечислением типов в конфиге апача httpd.conf, php3 ты возможно и добавил, а остальные, если нужны??? Апач еще пока не знает, на файлы с каким расширением "напускать" PHP-шку...

    Ответ:
    Проще всего сделать модуль php как внешний подключаемый модуль (быстрее, удобней). В файле путь_к_apache/conf/httpd.conf:

    LoadModule php4_module c:/usr/local/php4/sapi/php4apache.dll
    AddType application/x-httpd-php .php4 .php3 .php .phtml

    Тут и пишешь нужные расширения. Все остальное есть в файле install.txt читай на досуге... Кстати новая версия PHP 4.0.5, обновляйте !


    Ответ:
    Наверняка у Вас стоит Win32. Для нее:
    http://httpd.apache.org/dist/httpd/binaries/win32/   и скачать *.msi на 2,9 Мб


    Ответ:
    Я точно не уверен, но идея состоит в том, что бы подправить %SystemRoot%\php.ini. Там есть разделы, которые отвечают за вот такие фишки <% echo("Hello"); %>, т.е. за ASP тэги. А за запуск файлов phtml отвечает один конфигурационных файлов или Apache, или PHP.

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


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

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

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

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

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

<!-- PHP banner end -->

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

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

  2. http://www.webclub.lv - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.

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

http://virtual.bresttelecom.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
http://saleha.al.ru/anecdot/index.phtml   - самые новые и смешные анекдоты.
http://klepan.narod.ru  - Халява pliz! - реферал клуб.
http://www.ohrana.nsk.su - Название: Управления вневедомственной охраны г.Новосибирска. Описание: Услуги по охране квартири других объектов, сопровождение грузов. На сайте: интересные статьи, новости, криминальная хроника, вакансии и другая полезная информация!
http://www.programing.narod.ru - программирование на РНР


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

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

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


Разное

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

Текстовая обменная сеть

TLE (http://www.tle.ru)   - это уникальная сеть обмена ссылками, позволяющая увеличить посещаемость Вашего сайта. Показывая у себя на сайте 100 баннеров, вы зарабатываете всего 80 показов Ваших баннеров. Показывая 100 рекламных блоков TLE.RU, Вы зарабатываете 255 показов Ваших ссылок! Почуствуйте разницу! Высокий CTR%, удобная панель управления, мгновенная регистрация. Спешите! Только до 15 мая каждому новому участнику 50,000 БЕСПЛАТНЫХ показов! Узнать подробности и стать участником сети можно на сайте http://www.tle.ru


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



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

В избранное