|
|
|
| А в гостевой которая на диске, можно, как нибудь, как в форуме старые сообщения подчищать.
Если Да.
Подскажите где вставить.
Заранее Спасибо. | |
|
|
|
|
|
|
|
для: kak
(07.10.2007 в 13:30)
| | Что вставить? =]
Что за диск, гостевая? | |
|
|
|
|
|
|
|
для: kasmanaft
(07.10.2007 в 17:59)
| | Диск который "идет" с книгой "Практика создания web сайтов"
на нем гостевая книга. Нужно чтобы старые сообщения удалялись.
Где нужно подправить?
Или дело не только в этих скриптах?
Нужно что-то еще сделать?
Добавление сообщения
<?
///////////////////////////////////////////////////
// Web-приложения для книги "Профессиональный сайт на PHP 5"
// 2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Голышев С.В. (glsv@softtime.ru)
// Кузнецов М.В. (kuznetsov@softtime.ru)
///////////////////////////////////////////////////
// Устанавливаем соединение с базой данных
include "../admin/config.php";
$error = "";
$action = "";
// Возвращаем значение переменной action, переданной в урле
$action = $_POST["action"];
// Если оно не пусто - добавляем сообщение в базу данных
if (!empty($action))
{
// Проверяем сообщение на слишком длинные слова
$lenmsg = strlen($msg);
$templen = 0;
$temp = strtok($msg, " ");
if (strlen($msg)>60)
{
while ($templen < $lenmsg)
{
if (strlen($temp)>60)
{
$action = "";
$error = $error."<LI>Текст сообщения содержит слишком много символов без пробелов\n";
break;
}
else
{
$templen = $templen + strlen($temp) + 1;
}
$temp = strtok(" ");
}
}
// Проверяем правильность ввода информации в поля формы
$_POST["msg"] = trim($_POST["msg"]);
if (empty($_POST["msg"]))
{
$action = "";
$error = $error."<LI>Вы не ввели сообщение\n";
}
$_POST["name"] = trim($_POST["name"]);
if (empty($_POST["name"]))
{
$action = "";
$error = $error."<LI>Вы не ввели имя\n";
}
// При помощи регулярных выражений проверяем правильность ввода e-mail
$_POST["email"]=trim($_POST["email"]);
if(!empty($_POST["email"]))
{
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST["email"]))
{
$action = "";
$error = $error."<LI>Неверно введен е-mail. Введите e-mail в виде <i>something@server.com</i> \n";
}
}
// Обрабатываем HTML-тэги и скрипты в сообщении и информации
// об авторе, ограничиваем объём сообщения
$name = substr($_POST["name"],0,32);
$name = htmlspecialchars(stripslashes($name));
$city = substr($_POST["city"],0,32);
$city = htmlspecialchars(stripslashes($city));
$email = substr($_POST["email"],0,32);
$email = htmlspecialchars(stripslashes($email));
$url = substr($_POST["url"],0,60);
$url = htmlspecialchars(stripslashes($url));
$msg = substr($_POST["msg"],0,1024);
$msg = htmlspecialchars(stripslashes($msg));
// Добавляем протокол в url, если пользователь забыл это сделать сам
$url = strtr($url, "HTPF", "htpf");
if (trim($url)!="")
{
if (strtolower((substr($url, 0, 7))!="http://") && (strtolower(substr($url, 0, 7))!="ftp://")) $url="http://".$url;
}
if (empty($error))
{
$msg = nl2br($msg);
// Обрабатываем встроенные тэги
$msg = str_replace("[u]", "<u>", $msg);
$msg = str_replace("[U]", "<u>", $msg);
$msg = str_replace("", "<i>", $msg);
$msg = str_replace("[I]", "<i>", $msg);
$msg = str_replace("", "<B>", $msg);
$msg = str_replace("[B]", "<B>", $msg);
$msg = str_replace("", "<SUB>", $msg);
$msg = str_replace("[SUB]", "<SUB>", $msg);
$msg = str_replace("", "<SUP>", $msg);
$msg = str_replace("[SUP]", "<SUP>", $msg);
$msg = str_replace("[/u]", "</u>", $msg);
$msg = str_replace("[/U]", "</u>", $msg);
$msg = str_replace("", "</i>", $msg);
$msg = str_replace("[/I]", "</i>", $msg);
$msg = str_replace("", "</B>", $msg);
$msg = str_replace("[/B]", "</B>", $msg);
$msg = str_replace("", "</SUB>", $msg);
$msg = str_replace("[/sub]", "</SUB>", $msg);
$msg = str_replace("", "</SUP>", $msg);
$msg = str_replace("[/sup]", "</SUP>", $msg);
$msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3", $msg);
$msg = str_replace("\n", " ", $msg);
$msg = str_replace("\r", " ", $msg);
// Запрос к базе данных на добавление сообщения
$query = "INSERT INTO guest VALUES (0,
'$name',
'$city',
'$email',
'$url',
'$msg',
'-',
NOW(),
'show');";
if(mysql_query($query))
{
// Если в конфигурационном файле
// $sendmail = true отправляем уведомление
if($sendmail)
{
$thm = "guestbook - a new post";
$msg = "post: $msg\nname: $name";
mail($valmail, $thm, $msg);
}
// Возвращаемся на главную страницу, если всё прошло удачно
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n";
print "</HEAD></HTML>\n";
exit();
}
else
{
// Выводим сообщение об ошибке в случае неудачи
echo "<a href='index.php'>Вернуться</a>";
echo("<P> Ошибка при добавлении сообщения</P>");
echo("<P> $query</P>");
exit();
}
}
}
if (empty($action))
{
$title="Добавить сообщение в гостевую книгу";
include "../util/top.php";
?>
<h1 class=artnamepage>Гостевая книга</h1>
<p><a href="index.php" title="Вернуться в гостевую книгу">гостевая книга</a></p>
<form action=addrec.php method=post>
<input type=hidden name=action value=post>
<table>
<tr>
<td><p><b>Имя</b> *:</td>
<td><input class=input type=text name=name value='<? echo $name; ?>'></td>
</tr>
<tr>
<td><p><b>Город:</b></td>
<td><input class=input type=text name=city value='<? echo $city; ?>'></td>
</tr>
<tr>
<td><p><b>E-mail:</b></td>
<td><input class=input type=text name=email value='<? echo $email; ?>'></td>
</tr>
<tr>
<td><p><b>URL:</b></td>
<td><input class=input type=text size=40 name=url value='<? echo $url; ?>'></td>
</tr>
<tr>
<td><p><b>Сообщение</b> *:</td>
<td><textarea class=input cols=42 rows=5 name=msg><? echo $msg; ?></textarea></td>
</tr>
<tr>
<td></td>
<td><input class=button type="submit" value="Добавить"></td>
</tr>
</table>
</form>
<?php
// Выводим сообщение об ошибке
if (!empty($error))
{
print "<p class=msg><b>Во время добавления записи произошли следующие ошибки:</b></p>";
print "<UL><p>\n";
print $error;
print "</UL>\n";
}
}
include "../util/bottom.php";
?>
|
Главная страница:
<?
///////////////////////////////////////////////////
// Web-приложения для книги "Профессиональный сайт на PHP 5"
// 2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Голышев С.В. (glsv@softtime.ru)
// Кузнецов М.В. (kuznetsov@softtime.ru)
///////////////////////////////////////////////////
$title="Гостевая книга";
include "../admin/config.php";
include "../util/top.php";
?>
<h1 class=artnamepage>Гостевая книга</h1>
<p><a class=link href="addrec.php" title="">Написать сообщение</a></p>
<?
// Осуществляем соединение с базой данных
// Извлекаем из строки запроса параметр start
if(isset($_GET['start'])) $start = $_GET['start'];
else $start = "";
// Стартовая точка
if (empty($start)) $start = 0;
// Стартовая точка не может быть меньше нуля
if ($start < 0) $start = 0;
// Запрашиваем общее число отображаемых сообщений
$query = "SELECT count(*) FROM guest
WHERE hide = 'show'";
$tot = mysql_query($query);
// Запрашиваем сами сообщения
$query = "SELECT * FROM guest
WHERE hide = 'show'
ORDER BY puttime DESC
LIMIT $start, $pnumber";
$thm = mysql_query($query);
if(!$tot || !$thm) puterror("Ошибка при выборке сообщений...");
// Общее число отображаемых сообщений
$count= mysql_result($tot,0);
// Выводим ссылки на предыдущие и следующие сообщения
if ($start > 0) print "<a href=index.php?start=".($start-$pnumber).">Предыдущие</A>";
if ($count > $start + $pnumber) print " <a href=index.php?start=".($start + $pnumber).">Следующие</A>";
while($themes = mysql_fetch_array($thm))
{
// Извлекаем переменные из базы данных
$name = trim($themes['name']);
$city = trim($themes['city']);
$email = trim($themes['email']);
$url = trim($themes['url']);
$msg = trim($themes['msg']);
$answer = trim($themes['answer']);
?>
<table border="0" cellpadding="0" cellspacing="0" width=80%>
<tr bgcolor="#DEDEDE">
<td height="20"><p> <b><? echo $name?></b>
<? if (!empty($city)) print "($city)"; ?></td>
<td align="right"><p class=help>от: <? print $themes['puttime']; ?></td>
</tr>
<tr>
<td><p class=help><? if (!empty($email)) print "e-mail: <a class=link href=mailto:$email>$email</a>"; ?>
<? if (!empty($url)) print "www: <a class=link href='$url'>$url</a>"; ?></td>
</tr>
<tr>
<td><p><? echo $msg; ?><br>
<?
if (!empty($answer) && $answer != "-" ) print "<p class=msg>Администратор: $answer</p>";
?>
</td>
</tr>
</table><br>
<?
}
print '<a class=link href=addrec.php>Написать сообщение</A>';
// Выводим ссылки на предыдущие и следующие сообщения
if ($start > 0) print "<a href=index.php?start=".($start-$pnumber).">Предыдущие</a>";
if ($count > $start + $pnumber) print " <a href=index.php?start=".($start + $pnumber).">Следующие</a>";
include "../util/bottom.php";
?>
|
| |
|
|
|
|
|
|
|
для: kak
(07.10.2007 в 19:34)
| | В index.php, где-нибудь в начале, можно выпослить такой запрос
mysql_query("DELETE FROM guest WHERE (puttime < ???)");
В зависимости от того, в каком формате хранится puttime, вопросы нужно на что-то заменить. (текущее время минус срок службы :) ) | |
|
|
|
|
|
|
|
для: kasmanaft
(08.10.2007 в 00:23)
| | Спасибо Огромное.
Буду пробовать :) | |
|
|
|
|
|
|
|
для: kasmanaft
(08.10.2007 в 00:23)
| | У меня выставлено: puttime datetime Нет 0000-00-00 00:00:00
Где вы указали вопросы, как правильно записать? | |
|
|
|
|
|
|
|
для: kak
(08.10.2007 в 10:57)
| | Вот так, например, можно удалить сообщения старше 10 дней
DELETE FROM `guest` WHERE `puttime` < NOW() - INTERVAL 10 DAY | |
|
|
|
|
|
|
|
для: kasmanaft
(08.10.2007 в 14:22)
| | Спасибо, Спасибо... | |
|
|
|
|
|
|
|
для: kasmanaft
(08.10.2007 в 14:22)
| | Если в начале index.php пишу DELETE FROM `guest` WHERE `puttime` < NOW() - INTERVAL 10 DAY
Не работает, если в середине то ошибку выборки сообщений пишет.
Не могли бы Вы точно указать где вставлять в index.php? | |
|
|
|
|
|
|
|
для: kak
(07.10.2007 в 13:30)
| | За какой период хотите удалять сообщения? | |
|
|
|
|
|
|
|
для: cheops
(08.10.2007 в 12:47)
| | - | |
|
|
|
|
|
|
|
для: cheops
(08.10.2007 в 12:47)
| | Ну, например которым более 6 мес. | |
|
|
|
|
|
|
|
для: kak
(08.10.2007 в 20:04)
| | Подставте запрос в этом месте :
<?
...
// Осуществляем соединение с базой данных
// Удаляем записи старше 6 месяцев
$query = mysql_query("DELETE FROM `guest` WHERE `puttime` < NOW() - INTERVAL 6 MONTH");
if(!query) puterror("Ошибка...");
// Извлекаем из строки запроса параметр start
if(isset($_GET['start'])) $start = $_GET['start'];
...
?>
|
| |
|
|
|
|
|
|
|
для: mehelson
(09.10.2007 в 05:56)
| | Спасибо .
попробую | |
|
|
|
|
|
|
|
для: mehelson
(09.10.2007 в 05:56)
| | Спасибо. Все работает.
А вы не знаете, как сделать чтобы выводился не весь текст сообщений, а ссылки на сообщения (чтобы у каждого сообщения своя страница была)
пример (ссылка): форум не работает
перейдя по ней (ссылке) видно заголовок и полный текст сообщения
Из того , что я уже имею можно сделать? | |
|
|
|