Вы не авторизированы! Логин:  Пароль:  Запомнить:    Зарегистрироваться
Забыл пароль
 
 
 

Гостевая книга на PHP

SVD programming - Программирование Delphi, HTML, PHP, CGI. Обзоры софта, ReactOS и многое другое...
 
Главная - Новости - Публикации - Файлы - Ссылки - Форум Обратная связь
 


Друзья сайта ::

Сайтом управляют ::

Друзья сайта ::
PHP » Гостевая книга на PHP
Автор: / Дата: 22:21 21.09.2007
Комментарии: Комментарии (0)
Рейтинг статьи: 0
Гостевая книга на PHP

В этой статье рассказывается о том, как создать гостевую книгу, описывается её структура и реализация. За пределами статьи остаются дизайн, вёрстка, оформление и т.д...

Сделаем гостевую книгу своими руками. Для этого нам понадобятся PHP, MySQL и немного свободного времени. Сообщения будем хранить в базе данных, а не во внешнем файле. Это позволит упростить задачу и повысить быстродействие.

Для начала нам необходимо создать базу данных. Назовём её mydb. В ней мы создадим таблицу gost, в которой будут храниться сообщения.

SQL-код для создания базы данных для гостевой книги выглядит так:

Код:
create database mydb;
use mydb;
create table gost
(

    textid int unsigned not null auto_increment primary key,
    dt int not null,
    name char(16) not null,
    txt text not null

);

Для гостевой книги будем использовать следующую структуру из 3 файлов:

gst.php – основная программа;
db.php – сценарий, содержащий функцию для подключения к базе данных;
units.php – функции, необходимые для работы гостевой книги.

В файле db.php находится одна лишь функция db_connect(), которая устанавливает соединение с MySQL и выбирает базу данных mydb.

В файле units.php размещены функции:

readgost() – считывает сообщения из базы данных;
printmessages($n,$r) – выводит оставленные сообщения;
savegost($UserName,$n,$txt) – сохраняет сообщение в гостевой книге;
showgostform() – выводит форму отправки сообщения.

Сначала создадим основной файл, который будет вызывать необходимые функции.
Код:
<?php
Error_Reporting(E_ALL & ~E_NOTICE);

//Подключение модулей

require(‘db.php’);
require(‘units.php’);

//Подключение к базе данных

db_connect();

//Считывание сообщений и определение их количества.

$r=readgost();
$n=mysql_num_rows($r);

//Создание коротких имён переменных

$UserName = $HTTP_POST_VARS['username'];
$gost = $HTTP_POST_VARS['gost'];
$txt = $HTTP_POST_VARS['txt'];

// Если была нажата кнопка отправки сообщения,
//сохраняем сообщение в базе данных
//и снова считываем сообщения и определяем их количество.

if ($gost==true)
{
savegost($UserName,$n,$txt);
$r=readgost();
$n=mysql_num_rows($r);
}

//Выводим количество оставленных сообщений.

echo '<h2>Оставлено '. $n.'сообщение(ий)</h2>';

//Выводим оставленные сообщения

printmessage($n,$r);

//Показываем форму отправки сообщений.
showgostform();
?>

В PHP может быть установлен высокий уровень контроля ошибок. Из-за этого могут возникать предупреждения. Такой режим вывода ошибок является рекомендуемым. Он будет полезен при отладке скриптов. Однако для большинства скриптов нет необходимости его устанавливать, и следует пользоваться более слабым уровнем контроль ошибок. Мы это сделали так:

Error_Reporting(E_ALL & ~E_NOTICE);
Однако рекомендуется использовать следующий способ. В директории со скриптом надо создать файл .htaccess содержащий строчку:

php_value error_reporting 7

Рассмотрим файл db.php
Код:
<?php
Function db_connect()
{
  //Подключение к MySQL

  @ $db = mysql_pconnect('имя_узла','пользователь','пароль');
  if (!db)   
  {   
//соединение не установлено

Echo 'Не удалось установить соединение с базой данных.
Пожалуйста, повторите попытку позже.';
return 0;
  }
  else
  {
//Выбираем базу данных mydb

$b = Mysql_select_db("mydb");
if (!$b)
{
  //Баз данных не выбрана

  Echo 'Не удалось выбрать базу данных.
   Пожалуйста, повторите попытку позже.';
  return 0;
}
return 1;
  }
}
?>


Теперь пора создавать функции в файле units.db, которые будут выполнять все необходимые действия.
Код:
function readgost()
{
$query = "select * from gost";
$result = mysql_query($query);
return $result;
}

В переменную $query помещаем SQL-запрос для извлечения всех данных из таблицы gost. Функция mysql_query() выполняет переданные ей команды и возвращает результат.

Теперь рассмотрим, как происходит вывод сообщений. За это, как было ранее сказано, отвечает функция printmessages($n,$r).
Код:
function printmessages($n,$r)
{

  $outprint = array();
  for ($i=0; $i <$n; $i++)
{
$outprint[$n-$i-1] = mysql_fetch_array($r);
}

//сортируем  как надо

  for ($i=0; $i <$n-1; $i++)
  {
  for ($j=$i+1; $j <$n; $j++)
{
$row1=$outprint[$i];
$arr1 = $row1['textid'];
$row2=$outprint[$j];
$arr2 = $row2['textid'];
if ($arr1<$arr2)
{
$arr3=$outprint[$i];
$outprint[$i]=$outprint[$j];
$outprint[$j]=$arr3;
}
}
  }
?><?php

  // Выводим сообщения
  for ($i=0; $i <$n; $i++)
    {
$row=$outprint[$i];
echo '<br><b>'.($i+1).'. </b>'.
date(" d/m/Y  H:i:s",stripslashes($row['dt'])).
'<b>Отправитель:</b><i>'.
htmlspecialchars(stripslashes($row['name'])).'</i>';

echo '<br><b>Текст сообщения:</b><br>'.
htmlspecialchars(stripslashes($row['txt'])).'<br>';
     }

}


Функция htmlspecialchars() нужна для удаления HTML тегов. Также используется функция stripslashes(). Она восстанавливает специальные символы, которые были отменены функцией addslashes() при сохранении сообщений в базу данных.
Код:
function savegost($UserName,$n,$txt)
{

//Определяем время

$t = mktime();

//проверяем, были ли заполнены поля формы.
//Если да, то сохраняем сообщение.

if (!$UserName)
{
Echo('Вы не ввели своё имя.');
}
elseif (!$txt)
{
echo 'Вы не ввели текст сообщения.';
}
else
{
//Отменяем специальные символы.

$UserName = addslashes($UserName);
$txt = addslashes($txt);

$n++;

//заносим в переменную $query SQL-запрос,
//необходимый для сохранения сообщения.

$query = "insert into gost values
('".$n."','".$t."','".$UserName."','".$txt."')";

$result = mysql_query($query);
if (!$result)
{
echo '<p>Извините,'.
'ваше сообщение сохранить не удалось.</p>';
}
}
}


Теперь перейдём к созданию формы отправки сообщения. За это отвечает функция showgostform().
Код:
function showgostform()
{
?>
<form ACTION="gost.php" METHOD=POST >
<FIELDSET STYLE="padding: 10px; width: 300px;">
<LEGEND>
Форма отправки сообщения:
</LEGEND>
Ваше имя :
<input type="text" width="400"  name="username" ><br>
Поле для ввода:
<TEXTAREA name = "txt">

<INPUT TYPE="submit" value = "Отправить" name='sub'>
<INPUT TYPE="reset" value="Очистить" >

<input type="hidden" value="true" name="gost">
</FIELDSET>
</form>
<?php
}


Источник: http://webstat.ws
Автор :
Комментарии: Комментарии (0)

Внимание!

Друзья сайта
Голосование ::
Случайные статьи ::
Добавления в форуме ::
Новые комментарии ::
Пользователи on-line ::
0 пользователь, 172 гостей
 
Страница создана за 0.016 секунд

SQL общее время: 0.008 секунд
SQL запросов всего: 15
Администрация сайта не несет ответственности за содержание рекламных материалов, а так же за информацию размещаемой посетителями. При использовании материалов сайта ссылка на svdpro.info обязательна.

Powered by LDU 802

Рейтинг@Mail.ru
Copyright © 2005 - 2011 «SVD Programming»
Версия сайта для коммуникаторов
Обратная связь - Карта сайта