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

Создать профессиональный web-сайт - легко! (выпуск 12) - Гостевая книга (часть 3)


Информационный Канал Subscribe.Ru

Создать профессиональный web-сайт - легко!
Создать профессиональный web-сайт - легко!
или
все о PHP шаг за шагом.

     Сегодня в выпуске (N 12):
28 ноября 2004 года 
     ВНИМАНИЕ !!!
тираж выпуска: 3500 
- От автора (рекомендуется прочитать)
- Статья выпуска "Гостевая книга (чаcть 2) - Безопасность 2"
- Новое на форуме
       ∙ задать вопрос
- Автору


Сайт рассылки

- Поиск / Новости сайта
- Статьи
- Скачать
- Гостевая книга
- Форум
- Регистрация

Архив рассылки
     На сайте появился ПОИСКОВИК по сайтам web-програмирования и дизайна. Не верите? Заходите и смотрите! Подробнее >>

     Теперь зарегистрированные пользователи могут обсудить статью выпуска на Форуме, что даст возможность гораздо быстрее получить ответ на интересующий Вас вопрос. Если Вы еще не регистрировались, то Вам сюда.
     Новости

  28.11.04 Изменилось оформление главной страницы форума. Смотреть >>
А также теперь можно скачать документацию и не одну в разделе Скачать.

     От автора (рекомендуется прочитать):
Добрый день, уважаемые подписчики.

     Если у Вас есть сайт тематики web-программирования или дизайна, Вы можете добавить его в Базу Данных поиска, что, вероятно, поможет в его раскрутке, а у пользователей поисковика будет больше результатов поиска. Все свои предложения и пожелания можете оставлять на форуме в разделе "По сайту".
     Статья выпуска "Гостевая книга (чаcть 2) - Безопасность 2":
     В предыдущем выпуске был показан достаточно простой, но не очень эффективный способ, распознования url'ов. Нет, конечно, это достаточно приличный и работоспособный пример, но на практике использовать его просто будет не очень хорошо. Хотя, безусловно, он показывает работу с пользовательскими функциями в PHP. Поэтому я предлагаю в этом выпуске хороший способ, определения Url'ов в сообщениях гостевой книги. Причем теперь возможна будет автоматическое нахождение url в самом тексте сообщения, и замена их на ссылки. Вот сама функция:

function Url($string){

$string = " " . $string;
$string = str_replace("<br>", "<br> ", $string);

$string = eregi_replace ('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="http://\\2" target="_blank">\\2</a>', $string);
$string = eregi_replace ('([[:space:]()[{}])(http://.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="\\2" target="_blank">\\2</a>', $string);
// замена урлов типа www.domain.ru, http://domain.ru/ и http://www.domain.ru/

$string = eregi_replace ("[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*","<a href=\"mailto:\\0\">\\0</a>", $string);
// и собственно e-mail'ов

return $string;

}


Смотрите, 6 строк, а такие возможности. Считай используем только одну функцию eregi_replace("что меняем", "на что меняем") для этого. А теперь вызываем при чтении БД из файла:

$file = file("guestbook.dat"); // читаем в массив $file
$count = count($file); // подсчет элементов массива

for($i = $count - 1; $i >= 0; $i--){
$e = explode("|", $file[$i]);
if($e[1] == "") $e[1] = $e[0]; else { $e[1] = str_replace("$e[1]</a>", "$e[0]</a>", Url($e[1])); if(!ereg("<a", $e[1])) $e[1] = $e[0];}
// замена логина и емеила на ссылку

if($e[3] == "") $e[3] = "не указан"; else $e[3] = Url($e[2]);
// замена урл на ссылку

if($e[2] == "") $e[2] = "не указан"; echo "Добавил: $e[1] из города: $e[2]. Сайт в интернете: $e[3]<br><br> $e[4]<br><hr width=750><br>"; }

А запись сделаем самой простой, т. е. будем использовать только функцию cutty(), которую мы создали в прошлой статье:

if($name != "" && $message != ""){
$name = cutty($name); // удаляем ненужное
$email = cutty($email);
$city = cutty($city);
$html = cutty($html);
$message = cutty($message);
$file=fopen("guestbook.dat", "a+");
fputs($file, "$name|$email|$city|$html|$message|\n");
fclose($file);
}else echo "<center>Не все поля с * заполнены.</center>";


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

Замечание: При запуске функции cutty() возможны ошибки в строках:

$string = ereg_replace ('"', """, $string);
$string = ereg_replace ("'", """, $string);


, т. к. они не распознаются на некоторых версиях php. В этом случае замените их на:

$string = ereg_replace ('\\\"', """, $string);
$string = ereg_replace ("\\\'", """, $string);


А чтобы работала корректно функция Url() нужно немного изменить функцию cutty():

function cutty ($string)
{

$string = str_replace ("<", "<", $string);
$string = str_replace (">", ">", $string);
$string = ereg_replace ('\\\"', """, $string);
$string = ereg_replace ("\\\'", """, $string);
$string = str_replace (":", ":", $string);
$string = str_replace ("\r", "", $string);
$string = str_replace ("\n", "<br>", $string);
$string = str_replace ("%", "%", $string);
$string = str_replace ("!", "!", $string);
$string = str_replace ("^ +", "", $string);
$string = str_replace (" +$", "", $string);
$string = str_replace ("|", "1", $string);
return ($string);

}




Статью подготовил Ястребов Сергей.

Копирование информации возможно только с согласием автора с обязательным указыванием ссылки на сайт.

...наверх...
     Новое на форуме:
1. krek
Неплохо было бы если
рассылки оперались на денвер
подробней описывалось в какую именно папку ложить тот или иной скрипт итд
так как начинающему как я
думаю что таких много,трудно понять что к чему в апачи
и самому настроить тоже не просто
а денвер уж сильно замороченный
много папок всяких итд
Помочь | Задать свой вопрос

2. Arawak
Привет! Скачал Apache и согласно рекомендациям поставил его, но он не работает :(. Ввожу ..\\\\localhost - загружается тестовая страничка Apache, но другие тесты не проходят. Что можете посоветовать?
Помочь | Задать свой вопрос

3. 00278402
У меня вопрос или скорее просьба
я пытаюсь начать изучать php
уже 3тий месяц как
Скачал последнию версию пакета на dklab.ru всё вроде работает
в папке www лежит мой хтмл
это вроде всё понятноно вот с РНР обсолютно ничего.
Просьба такая
может ли кто обьяснить какой код,
куда внести и как и где увидеть результат работы
я уже информирован на счёт того что
всё выполняется на сервере
но я же должен как то понять что к чему
я уже много где искал,нигде не одного практического примера
и никакого описания как это делается


Помочь | Задать свой вопрос

4. jvs
В примерах вы пишете примерно следующее:

<form action="download.php" method="post">

а как сделать, чтобы при нажатии кнопки просто выполнялся фрагмент кода, написанный на php, без перехода на файл download.php

спасибо
Помочь | Задать свой вопрос

5. viv
подскажите пожалуйста что-такое Apache и что там можно сделать?
Помочь | Задать свой вопрос



...наверх...
     Автору:
      Если Вы - опытный веб-дизайнер или вам есть, что сказать читателям, то присылайте Ваши статьи по адресу about-php@mail.ru. Тема author. Ваши статьи будут опубликованы в близжайших выпусках рассылки (если, конечно, они будут содержать полезную информацию о веб-дизайне). В письме должны быть статья, ее название и контактная информация о авторе (имя и e-mail (например, с которого отправлено письмо) обязательно). Также Вы можете стать ведущими рассылки. Для этого отправьте письмо на этот же e-mail с той же темой, указав контактную информацию и тематику ваших статей.

     Возможно, подписываясь на эту рассылку, Вы уже имели опыт работы с PHP и создали какие-нибудь скрипты. Поэтому, если у Вас есть полезный скрипт для сайта, написанный на PHP, присылайте его мне на e-mail about-php@mail.ru с темой script. Он обязательно появится в этой рассылке и разделе "Скачать" с контактной информацией автора.


...наверх...


     На сегодня это все. Увидимся через неделю.
Рассылку подготовил, Ястребов Сергей.
Сайт рассылки http://www.about-php.fatal.ru/.
...наверх...

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: inet.webbuild.aboutphp
Отписаться

В избранное