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

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


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

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

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

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


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

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

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

Сначала давайте определимся с адресом, куда мы все будем отправлять.

<?
$email = "login@name.ru";
?>

Уверен, что подставить сюда свой Вы сможете. Дальше давайте Введем текст сообщения.

<?
$txt = "Произошла ошибка, сообщение было отправлено администратору сайта!";
?>

Текст может быть любой, на Ваш вкус. Дальше ... Все! Отправляем наше сообщение...

<?
@mail($email, "Тема письма", $txt, "Подпись");
?>

Действительно просто. Собака перед mail нужна, как мы помним для того, чтобы если произойдет ошибка отправки почты, сообщение об этом не было выведено в некрасивом виде посетителю. Уж лучше тогда сделать более правильно:

<?
if (@mail($email, "Тема письма", $txt, "Подпись")) { echo "Сообщение отправлено без ошибок!"; } else { echo "Сообщение не было отправлено в связи с возникшей ошибкой! Попробуйте написать администратору по адресу <a href=mailto:$email>$email</a>"; }
?>

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

А как сделать так, чтобы пользователь мог сам вводить и адрес, куда отправлять, и сам текст сообщения? На самом деле это еще проще, но придется немного попользоваться HTML-ом, что все мы уже умеем :-) Или, на худой конец - Front Page-ем, что в данном случае допустимо. Итак, делаем форму...

<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>New Page 1</title>
<
meta name="GENERATOR
" content="Microsoft FrontPage 3.0"></head><body>

<form method="POST" action="mail.phtml">
<p><input type="text" name="email" size="20"> - сюда надо
вводить e-mail, куда будем отправлять почту<
br><br>
<
textarea rows="2" name="txt" cols="20"></textarea>
- текст сообщения.<br><br>
<
input type="submit" value="Submit" name="B1">
<
input type="reset" value="Reset" name="B2">
<
/p
></form></body></html>

Обратите внимание на наличие двух полей в форме. В первом ввод адреса, во втором - сообщения. Их имена соответственно email и txt. Совсем как в нашем примере! И действительно, если убрать присвоение адреса и текста для отправки, и сохранить наш код РНР в файл mail.phtml (он прописан как обработчик в форме), при нажатии кнопки отправить форма будет передана в этот файл, и то, что ввел пользователь будет автоматически доступно под переменными $email и $txt. Вот и все! Таким способом Вы можете передавать что угодно из формы в РНР. Только следите за правильностью имен в форме и в коде РНР. Вот код для файла mail.phtml (кстати, он должен находиться в том же каталоге, что и наша форма)

<?
if (@mail($email, "Тема письма", $txt, "Подпись")) { echo "Сообщение отправлено без ошибок!"; } else { echo "Сообщение не было отправлено в связи с возникшей ошибкой! Попробуйте написать администратору по адресу <a href=mailto:$email>$email</a>"; }
?>

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


Наши обшибки

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

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

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

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


Сайты в тему

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

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

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


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

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

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

http://www.ohrana.nsk.su - Практически весь сайт написан на PHP. Используется БД на MySQL.


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

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

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

Вопросы:

  1. Пожалуйста, подскажите, как при помощи php скачать файл с машины клиента на сервер (через браузер).
    ответить
  2. Здравствуйте!
    А можно ли сделать так, что бы в страницу HTML (с расширением *.htm ) вставить внизу текстовой счетчик, написанный на php? Просто на одном сервере не поддерживается php. А код счетчика, написанный на пхп, у меня есть на другом сервере.

    ответить
  3. Вопрос повидимому простой, но я что то "зациклился". На форме есть набор checkbox-ов., формируется автоматически. Количество заранее неизвестно. Имя общее, например kod. Value разные, например 52, 63, 75 и т.д., определяются при создании формы. Надо выделить несколько!!! и передать, например методом POST для обработки. В результате получаю только одно значение, а надо бы
    все. Самая большая проблема в том, что заранее не известно, ни сколько checkbox-ов будет на форме, ни их значения. Возможен вариант что в форме будут меняться и/или имя checkbox-а. Заранее благодарен. Игорь Румянцев

    ответить
  4. Здравствуйте помогите правильно напистаь скрипт по аудентификации, я что то совсем запутолся с 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>

    ответить

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

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


    Ответ:
    Вообще-то, есть функция виртуал -- аналог апачевских "include virtual". Василий Шабанов.

    Ответ:ДЕЛАЙ СЛЕДУЮЩЕЕ: Заходи в конфиг Apache находи нижеслед. строку AddHandler server-parsed .shtml и меняй ее на след. AddHandler server-parsed .shtml .php .php3 .php4
    и тогда пиши в файле PHP можно писать <!--#exec cgi="cgi-bin/counter.cgi" -->

  2. Буду очень признателен, если кто сможет помочь мне разобраться, что такое сессионные переменные в PHP, как с ними работать, что, где и почем...8). К сожалению, в документашке нарисовано все(для меня;( видимо, не хватает мне чего-то) достаточно кратко, а опыты пока ни к чему не привели...
    Буду признателен за подробную "растолковку", или за линки на толковые подробные статьи с примерами по этой теме. Задача, собственно, может и тривиальна, тащить за собой из страницы в
    страницу, из скриптика в скриптик кучку значений (переменных, в т.ч массивчик), относящихся к данному посетителю, читай, сессии. Но по внешнему запросу ( ?zz="xxxx"&....), некрасиво, да и нельзя, т.к. некоторые значения - конфеденциальны, + да и великовато их количество; Кук - такая-же картина, да и еще его нужно "совать" первым в выводе, что не очень-то и подходит, данные в течении сессии должны изменяться; Писать данные в базу - некрасиво тоже, ерзать (читать-писать, да на каждого пользователя) с обращениями к базе каждый раз, т.е. 15-20-50-70 раз за сессию -
    накладно... остается - ??? Какие есть решения ??


    Ответ: Да никаких тут нет решений. Что тебе мешает писать все через базу - лень или малоопытность? Тогда пиши в файл. Это даже проще. А передавать из файла в файл в целях конфиденциальности можно не сами данные, а номер индекса массива, а сам массив брать из файла.

  3. Можно-ли из формы, используя PHP, передать одномерный массив данных, но сформированный не объектом multiple, а используя ...type="hidden"... ? Aliaksandr

    Ответ:
    Достаточно просто добавлять квадратные скопки:
    <input type=hidden name='val[]' value=1>
    <input type=hidden name='val[]' value=2>
    Василий Шабанов.

  4. Подскажите как мне можно настроить PHP на IIS (Internet Information Server).

    Ответ:
    Какая там версия IIS у тебя? Распаковываешь акет ПХП. Копируешь php.ini-dist файл в корневую директорию WinNT (C:\winnt D:\winnt) переименовываешь его php.ini Там малость надо отредактировать этот файл (указать wwwroot каталог где находится, подключить
    или же отключить пару директив, смотря что ты собираешсья делать) Потом открываешь IIS Managment Console а дальше можно прочитать по ссылке http://phpclub.unet.ru/tutor/php4win32/instnt.htm Будут вопросы, пиши.
    Эдуард Рушанян, webmaster@artsakhworld.com edo@artsakhworld.com http://www.artsakhworld.com

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


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

Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - 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 - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
http://saleha.al.ru/anecdot/index.phtml   - самые новые и смешные анекдоты.
http://klepan.narod.ru  - Халява pliz! - реферал клуб.
http://www.ohrana.nsk.su - Название: Управления вневедомственной охраны г.Новосибирска. Описание: Услуги по охране квартири других объектов, сопровождение грузов. На сайте: интересные статьи, новости, криминальная хроника, вакансии и другая полезная информация!


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

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

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


Разное

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


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



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

В избранное