Понедельник, 15.06.2026, 19:30
Приветствую Вас Гость | RSS
Поиск по каталогу
Главная страница | Каталог статей | Регистрация | Вход

Информационные технологии
Форма входа
Меню сайта

Категории каталога
php [246]
perl [1]
perl
ASP [1]
AJAX [0]

Друзья сайта

Наш опрос
Оцените мой сайт
Всего ответов: 69

Начало » Статьи » Web программирование » php

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

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

Файл №1 - guestbook.inc.dat

Создадим его, оставим пустым, и укажем ему права (0777-*nix, rwx/rwx/rwx)

Сюда будут записываться все сообщения... Да-да!!! Именно в один файл! Но не пугайтесь :) Мной лично проверялось на всеми известном сервере WallSt. база данных размером в 5, 10, 100, 250, 500, 1000 Кб! Торможения были только на 1000 Кб книге, поверьте, это более 3000 средних записей! Вам хватит ее с лихвой :)

Создадим его, оставим пустым, и укажем ему права (0777-*nix, rwx/rwx/rwx)

Сюда будут записываться все сообщения... Да-да!!! Именно в один файл! Но не пугайтесь :) Мной лично проверялось на всеми известном сервере WallSt. база данных размером в 5, 10, 100, 250, 500, 1000 Кб! Торможения были только на 1000 Кб книге, поверьте, это более 3000 средних записей! Вам хватит ее с лихвой :)

Файл №2 – config.inc

$gb_on_page = "10";//кол-во мессаг в гостевой на стр.

$name_max_size = "15"; // максимальная длина ника

$email_max_size = "50"; // максимальная длина мыла

$message_max_size = "1000";//максимальная длина сообщения

$recipient =”Name.Sirname@email.zone”;

$subject = "Новое сообщение на сайте";

$site_name = “Ваш сайт”;

?>

Файл №3 – gb.php

Guestbook

*Имя:

E-mail:

*Сообщение:

$data=file("guestbook.inc.dat");

$c=count($data);

if (!isset($page)) { $page=0; }

for ($i=$page*$gb_on_page;$i<$page*$gb_on_page+$gb_on_page;$i++)

{

   if($i>$c-1)break;

   list($name,$email,$date,$time,$guesttext)=split(":::","$data[$i]", 5);

   /* я нарочно не стал делать супер_мега_навороченных дизайнов, я лишь ограничусь простым выводом текста! Кому надо, тот легко поймет, что нужно делать! Кто не поймет, мыло будет ниже, посему читайте дальше… */

   echo "$name @ [$date, $time]
$guesttext


";

}

$col=$c/$gb_on_page;

echo "

";

if ($c<$gb_on_page){ echo ""; }

else {

   echo "Страницы: ";

   /* Здесь такая штука, что если можно перейти на предыдущую страницу, то показывается примерно что то вроде этого :) << [1] 2 */

   if($c>$gb_on_page & $page>0){ echo "<<"; }

   /* Ниже функция, которая отвечает за вывод нумерации страниц с сообщениями… */

   for($i=0;$i<$col;$i++)

   {

      if(($i)!=$page)echo "[".($i+1)."] ";

      else echo "".($i+1).""." ";

   }

}

/* Здесь такая штука, что если можно перейти на следующую страницу, то показывается примерно что то вроде этого :)  1 [2] >>*/

if($c>$gb_on_page & $page<$col-1){ echo ">>"; }

echo "
Всего сообщений: $c";

echo "

";

?>    

Файл №4 -- gbadd.php

include('config.inc');

/* укажем, что данные должны передаться скрипту из формы... иначе можно было бы отправить сообщение примерно таким образом:

http://myhost.ru/gb/gbadd.php?name=admine&email=you@#admin.com&guesttext=message_have_been_posted спасибо CompDocs */

$name=$_POST['name'];

$email=$_POST['email'];

$guesttext=$_POST['guesttext'];

if ($name !="" and $guesttext !="")

{

   $date=date('d.m.Y');

   $time=date('H:i');

   // заменяем двоеточия

   $guesttext = ereg_replace(":::",":::",$guesttext);

   $name = ereg_replace(":::",":::",$name);

   $email = ereg_replace(":::",":::",$email);

   // разрешим только шрифты, картинки и списки

   // теги как украшение

   $guesttext = ereg_replace("<", "<", $guesttext);

   $guesttext = ereg_replace(">", ">", $guesttext);

   $name = ereg_replace("<", "<", $name);

   $name = ereg_replace(">", ">", $name);

   $email = ereg_replace("<", "<", $email);

   $email = ereg_replace(">", ">", $email);

   // нет кавычкам! 2=DeaD= thanX!

   $name = ereg_replace("\"", """, $name);

   $email = ereg_replace("\"", """, $email);

   $guesttext = ereg_replace("\"", """, $guesttext);

   // удаление лишних пробелов

   // в центре

   $guesttext=ereg_replace(" +"," ",$guesttext);

   $name=ereg_replace(" +"," ",$name);

   $email=ereg_replace(" +"," ",$email);

    //cправа и слева

    $name=trim($name);

    $email=trim($email);

   $guesttext=trim($guesttext);

   // перевод строки

   $guesttext = ereg_replace("\n", "
", $guesttext);

   // чтобы весь текст был на одной строке!

   $guesttext = ereg_replace("\r", "", $guesttext);

   // мегакавычки

   $name = stripslashes($name);

   $email = stripslashes($email);

   $guesttext= stripslashes($guesttext);

   // правильные тире

   $guesttext = preg_replace ("/[ ]{1,}-[ ]{1,}/", " — ", $guesttext);

   $guesttext = preg_replace ("/^- /", "— ", $guesttext);

   // число-число

   $guesttext = preg_replace ("/(\d)-(\d)/", "\\1–\\2", $guesttext);

   // слова с дефисом

   $guesttext = preg_replace ("/(\S+)-(\S+)/", "\\1-\\2", $guesttext);

   // частицы и предлоги

   $guesttext = preg_replace ("/([А-Яа-яA-Za-z]) (ли|ль|же|ж|бы|б)([^А-Яа-яA-Za-z])/", '\\1 \\2\\3', $guesttext);

   $guesttext = preg_replace ("/(\s)([А-Яа-я]{1})\s/", '\\1\\2 ', $guesttext);

   // A.C. Пушкин

   $guesttext = preg_replace ("/([А-ЯA-Z])([\. ]{1})[ ]{0,1}([А-ЯA-Z])([\. ]{1})[ ]{0,1}([А-ЯA-Z][А-Яа-яA-Za-z]*)/", '\\1. \\3. \\5', $guesttext);

   // Пушкин А. С.

   $guesttext = preg_replace ("/([А-ЯA-Z][А-Яа-яA-Za-z]*) ([А-ЯA-Z])[\. ]{1}[ ]{0,1}([А-ЯA-Z])\.([,\ )]{1})/", '\\1 \\2. \\3.\\4', $guesttext);

   // преобразовываем адреса в ссылки!

   $guesttext = eregi_replace("([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))", "\\0", $guesttext);

   $guesttext = eregi_replace("((ht|f)tp://www\.|www\.)([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})((/|\?)[a-z0-9~#%&\\/'_\+=:\?\.-]*)*)", "http://www.\\3", $guesttext);

   $guesttext = eregi_replace("((ht|f)tp://)((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:\?\.-]*)*)", "\\0", $guesttext);

   // делаем "обрезание" слишком большого куска информации

   $name=substr($name,0,$name_max_size);

   $email=substr($email,0,$email_max_size);

   $guesttext=substr($guesttext,0,$message_max_size);

   // BBcodes

   $guesttext = ereg_replace("\[b\]", "", $guesttext);

   $guesttext = ereg_replace("\[\/b\]", "", $guesttext);

   $guesttext = ereg_replace("\[i\]", "", $guesttext);

   $guesttext = ereg_replace("\[\/i\]", "", $guesttext);

   $guesttext = ereg_replace("\[u\]", "", $guesttext);

   $guesttext = ereg_replace("\[\/u\]", "", $guesttext);

   $guesttext = ereg_replace("\[red\]", "", $guesttext);

   $guesttext = ereg_replace("\[\/red\]", "", $guesttext);

   $guesttext = ereg_replace("\[green\]", "", $guesttext);

   $guesttext = ereg_replace("\[\/green\]", "", $guesttext);

   $guesttext = ereg_replace("\[blue\]", "", $guesttext);

   $guesttext = ereg_replace("\[\/blue\]", "", $guesttext);

   $guesttext = ereg_replace("\[yellow\]", "", $guesttext);

   $guesttext = ereg_replace("\[\/yellow\]", "", $guesttext);

   // отправка сообщения на мой электронный адрес

   // сообщение

   $message .="".$date.", ".$time." \n";

   $message .="Имя: ".$name.", e-mail: ".$email."\nСообщение\n";

   $message .="".$guesttext."\n ";

   $message .="----------\r\n";

   $message .="Сообщение из гостевой книги";

   // заголовки

   $headers .="From: $site_name <$recipient>\n";

   $headers .="X-Mailer: Pseon’s Guestbook\n";

   $headers .="X-Priority: 1\n";

   $headers .="Content-Type: text/plain; charset=windows-1251\n";

   // отправляем все нафиг!

   mail($recipient, $subject, $message, $headers);

   $msg="$name:::$email:::$date:::$time:::$guesttext ";

   $lines = file("guestbook.inc.dat");

   $fp = fopen("guestbook.inc.dat", "w");

   fwrite($fp, "$msg\n");

   for ($i = 0; $i < count($lines); $i++)

   {

      @fwrite($fp, "$lines[$i]");

   }

   fclose($fp);

   clearstatcache();

}

// если не удалось, отсылаем его обратно!

else

{

   header("Location: gb.php");

}

?>

Ну а теперь банановый :) На закуску хочу предложить вам набор BB-codes, которые помогут вашим посетителям несколько разнообразить сообщения в гостевых книгах :)

[i]test[/i] - наклонный

[b]test[/b] - жирный

[u]test[/u] - подчеркнутый

[red]test[/red] - красный

[blue]test[/blue] - синий

[green]test[/green] - зеленый

[yellow]test[/yellow] - желтый

Как можно увидеть, вот он наш скриптик... Сверху формочка, ниже сообщения... Еще ниже, сортировка по страницам.

И еще! «Шура, я вас умоляю»(с), если у вас что-то не получилось, не надо обвинять автора в криворукости и тупости, ибо я сам только что все проверил, и книга пошла отлично… Попробуйте вернуться к искомому и начните заново… А для тех, у кого совсем ничего не получилось, скачайте архив книги отсюда: http://pseon.dax.ru/scripts/gb.rar (3670 Bytes)

Категория: php | Добавил: freeone (09.05.2007) | Автор: Papulovskii S. aka ‘pseon’
Просмотров: 949 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright Информационные технологии © 2006