TeBEa.Ru



 

   

Запомнить страницу

 
 

Статьи по темам:
 

 
   Авто и мото
   Банки
   Бизнес
   Дети
   Дизайн
   Законы
   Игры
   Искусство
   История
   Интересное
   Компьютеры
   Медицина
   Музыка
   Наука
   Образование
   Природа
   Программы
   Путешествия
   Работа
   Развлечения    
   Религия    
   Спорт  
   Техника    
   Технологии    
   Фармацевтика    
   Фото  
   Эротика    
   Электроника 
   Юмор
 
 



 

  Rambler's Top100

 

 
     
 

  ..

 
 

 
 

 Информации

 

 Развлечении

 
 

Шокирующие факты, Тайны, Аферы,
Полезные советы, Сенсаций, Чудеса науки, Интересное из истории,  Удивительные технологии

 

Фокусы, Обманы зрения, Игры, Анекдоты, Забавные истории, Шутки и розыгрыши, Эротические приколы, Головоломки с юмором

 
 
 

 


Вы можете получать прибыль со своего сайта разместив тематические обьявления
 

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

 Как создать гостевую книгу? На тему создания гостевых книг было написано большое количество статей, однако большинство из них раскрывали процесс написания не полностью, а частично. К тому же, написанные книги были максимально просты, и не могли ничего, кроме как добавлять сообщения. В данной статье я постараюсь подробно описать процесс создания гостевой книги с неплохим набором функций. Гостевая книга написана на 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 .="----------\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");

}

?>
<!-- какой то умник пытается нас сломать :) пошел он на индекс :) -->
<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] - желтый


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


Автор: Papulovskii S. aka 'pseon'
 

 


 

 
 
 


 

 
     
 

@

 

 


 

 
© Tebea.Ru