ZeosMaster ZeosHost.Ru
Главная страница » Статьи » Создание гостевой книги

Случайная новость

Тема Mohawk Red
Автор: Tanya

Реклама

Реклама:

СЛУЧИЛАСЬ БЕДА!!!
Случилась беда...

18 ноября 2008 года умер всеми уважаемый Боцман.. Он был администратором форума http://xwab.ru/forum/ , но в первую очередь он был замечательным человеком...
У Юры осталась Дочь, судьба которой зависит от нас всех, так как она осталась сиротой..
Мы расчитываем на вашу помощь..

ЧИТАТЬ ПОДРОБНЕЕ

[Статьи Создание гостевой книги

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

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

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

Создадим его, оставим пустым, и укажем ему права (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

<html>
<head>
<title>Guestbook</title>
</head>
<body>
<!-- включаем вышеописанный файл -->
<? include(‘config.inc’); ?>
<!-- пишем форму для добавки сообщений -->
<!-- ниже указываем в свойствах формы защиту от повторного нажатия кнопки Submit -->
<form onSubmit="newmsg.Submit.disabled='true'" name='newmsg' action='gbadd.php' method=post>
<!-- для всех трех полей устанавливаются максимально возможные размеры для полей имени, адреса электронной почты и сообщения -->
*Имя:<input type=text maxlength="<? echo $name_max_size; ?>" name=name><br>
E-mail:<input type=text maxlength="<? echo $email_max_size; ?>" name=email><br>
*Сообщение:<br><textarea maxlength="<? echo $message_max_size; ?>" name=guesttext cols=42 rows=10></textarea><br>
<!-- ниже указано, что при нажатии кнопки Submit она станет недоступна, и взамен ее появится кнопка с надписью «ждите!!!» -->
<input type="Submit" onClick="newmsg.Submit.value='ждите!!!'" name="Submit" value="Отправить">
<input type="reset" value="Стереть"></form>
<!-- думаете это весь файл? :) нет, ошибаетесь… Сейчас начнется самое интересное! -->
<?
$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 "<a href=”mailto:$email”>$name</a> @ [$date, $time]<br>$guesttext<br><hr>";
}

$col=$c/$gb_on_page;
echo "<center>";
if ($c<$gb_on_page){ echo ""; }
else {
   echo "<b>Страницы: </b>";
   /* Здесь такая штука, что если можно перейти на предыдущую страницу, то показывается примерно что то вроде этого :) << [1] 2 */
   if($c>$gb_on_page & $page>0){ echo "<a href="gb.php?page=".($page-1).""><<</a>"; }

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

   for($i=0;$i<$col;$i++)
   {
      if(($i)!=$page)echo "[<a href="gb.php?page=$i">".($i+1)."</a>] ";
      else echo "<b><i>".($i+1)."</b></i>"." ";
   }
}


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

if($c>$gb_on_page & $page<$col-1){ echo "<a href="gb.php?page=".($page+1)."">>></a>"; }
echo "<br>Всего сообщений: $c";
echo "</center></font>";
?>    
<!-- Уффффффффффф. Все! С этим файлом покончили, но остался главный, отвечающий собственно за добавление сообщения в гостевую книгу -->
</body>
</html>


Файл №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", "<br>", $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+)/", "<nobr>\1-\2</nobr>", $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}))", "<a href="mailto:\0">\0</a>", $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~#%&'_+=:?.-]*)*)", "<a href="\0" target="_top">\0</a>", $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]", "<b>", $guesttext);
   $guesttext = ereg_replace("[/b]", "</b>", $guesttext);
   $guesttext = ereg_replace("[i]", "<i>", $guesttext);
   $guesttext = ereg_replace("[/i]", "</i>", $guesttext);
   $guesttext = ereg_replace("[u]", "<u>", $guesttext);
   $guesttext = ereg_replace("[/u]", "</u>", $guesttext);
   $guesttext = ereg_replace("[red]", "<font color="red">", $guesttext);
   $guesttext = ereg_replace("[/red]", "</font>", $guesttext);
   $guesttext = ereg_replace("[green]", "<font color="green">", $guesttext);
   $guesttext = ereg_replace("[/green]", "</font>", $guesttext);
   $guesttext = ereg_replace("[blue]", "<font color="blue">", $guesttext);
   $guesttext = ereg_replace("[/blue]", "</font>", $guesttext);
   $guesttext = ereg_replace("[yellow]", "<font color="yellow">", $guesttext);
   $guesttext = ereg_replace("[/yellow]", "</font>", $guesttext);

   // отправка сообщения на мой электронный адрес
   // сообщение
   $message .="".$date.", ".$time." n";
   $message .="Имя: ".$name.", e-mail: ".$email."nСообщениеn";
   $message .="".$guesttext."n ";
   $message .="----------rn";
   $message .="Сообщение из гостевой книги";
   // заголовки
   $headers .="From: $site_name <$recipient>n";
   $headers .="X-Mailer: Pseon’s Guestbookn";
   $headers .="X-Priority: 1n";
   $headers .="Content-Type: text/plain; charset=windows-1251n";
   // отправляем все нафиг!
   mail($recipient, $subject, $message, $headers);

   $msg="$name:::$email:::$date:::$time:::$guesttext ";
   $lines = file("guestbook.inc.dat");
   $fp = fopen("guestbook.inc.dat", "w");
   fwrite($fp, "$msgn");
   for ($i = 0; $i < count($lines); $i++)
   {
      @fwrite($fp, "$lines[$i]");
   }
   fclose($fp);
   clearstatcache();
}

// если не удалось, отсылаем его обратно!
else
{
   header("Location: gb.php");
}

?>
<!-- какой то умник пытается нас сломать :) пошел он на индекс :) -->
<html>
<body onload='window.location="gb.php?page=0"'>
</html>


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

[i]test[/i] - наклонный
[b]test[/b] - жирный
[u]test[/u] - подчеркнутый
[red]test[/red] - красный
[blue]test[/blue] - синий
[green]test[/green] - зеленый
[yellow]test[/yellow] - желтый


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

И еще! «Шура, я вас умоляю»(с), если у вас что-то не получилось, не надо обвинять автора в криворукости и тупости, ибо я сам только что все проверил, и книга пошла отлично… Попробуйте вернуться к искомому и начните заново…

Автор: Papulovskii S. aka ‘pseon’
    

Внимание! Если Вы заметили что ссылка для скачивания не рабочая, напишите ниже в комментариях, и мы обязательно ее исправим!

 (голосов: 0)
 
| Просмотров: 1863 | Автор: Tanya | Дата: 4 фев 2008 | Напечатать 
Добавление комментария
Ваше Имя:
Ваш E-Mail:
Реклама
Вход на сайт
Логин
Пароль
 
Регистрация | Забыли пароль?
Статистика:


Лучшие авторы:
  1    Tanya 585
  2    skyver491 375
  3    adder200810 348
  4    kobiev 261
  5    lifeua 201


Новостей:
  Сегодня: 158
  За месяц: 5640
  За все время: 9622


Пользователей:
  Новых:10
  За месяц:396
  Всего:2516

Реклама:

ZeosHost.Ru

Биллинг панель

Реклама:
оформление утилизации автомобиля утилизация автомашин
Здесь Вы можете заказать практику
создание текстов на английском языке
Наши друзья

» Домены .RU по 6$
» Бесплатный хостинг файлов!
» ZeosWeb.Com
» Скрипты на PHP
» SOFT навигатор
» -=News-Box=-
» ker.clan.su
» SOSisek.net
» leto.clan.su
» Yurann.com
» moloto4ka.net
» Vse-vsem
» WEBSalat.RU
» Y2007
» ezino.ru
» SVYT.net
» BoomWarez.Info
» wind0ws.ru
» designjunkie.ru

Обмен ссылками!
Наш код:
После того как вы разместите нашу ссылку на вашем сайте напишите нам через форму обратной связи, после проверки мы добавим вашу ссылку в этот раздел.