[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Content Management System
Unlikely
Здравствуйте. Пишу cms.

Вот решил написать скрипт коментов. Начал думать как это всё можно организовать.
Вот есть таблица 'posts' с полями 'id','title','menu_name','description','keywords','date','text'.

И придумал я сделать так:
Создать ещё одну таблицу 'comment' с полями 'post','name','text'(примерно так).
При заполнении в 'post' добавлялось бы соответствующее 'id' постов из таблицы 'posts'.
А потом вытягивать коменты примерно так SELECT * FROM 'comment' WHERE 'post'=$id

Как вы считаете, удачное ли это решение? И есть ли какие нибудь другие способы?



Спустя 35 минут, 29 секунд (20.05.2010 - 17:35) Kuzya написал(а):
Помоему это самый удобный вариант unsure.gif

Спустя 6 часов, 32 секунды (20.05.2010 - 23:35) Unlikely написал(а):
А можно как нибудь убить $_POST после выполнения заявки? А то, если клацнуть по "Обновить" то заявка выполняется второй раз и третий и четвёртый...

Спустя 3 минуты, 8 секунд (20.05.2010 - 23:39) Unlikely написал(а):
Вот такой код получился:

<br />
<
br />
<?php

if(!$_POST) {
echo "Вы можете оставить свои комментарии";
}
else {
if($_POST) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$age = $_POST['age'];

$name = trim($name, " .");
$email = trim($email, " .");
$message = trim($message, " .");

$name = htmlspecialchars($name, ENT_QUOTES, "UTF-8", false);
$email = htmlspecialchars($email, ENT_QUOTES, "UTF-8", false);
$message = htmlspecialchars($message, ENT_QUOTES, "UTF-8", false);

if($name and $email and $message and !$age) {
$ip = getenv("REMOTE_ADDR");

$query = "INSERT INTO `".$DB_NAME."`.`comment` (`post`, `name`, `email`, `message`, `date`, `ip`) VALUES ('".$id."', '".$name."', '".$email."', '".$message."', NOW(), '".$ip."')";
$result = mysql_query($query, $connection);

echo "Заявка отправлена";
}
else {
echo "Заполните необходимые поля";
}

}
}


?>
<form method="post" action="">
<
input type="text" name="name" size="30" /> Имя*<br />
<
input type="text" name="email" size="30" /> E-Mail*<br />
<
textarea name="message" cols="58" rows="7"></textarea><br />
<
input type="text" name="age" size="10" /> Анти-спам(оставить пустым)<br />
<
input type="submit" name="submit" />
</
form>

Спустя 2 минуты, 18 секунд (20.05.2010 - 23:41) waldicom написал(а):
Cделайте перенаправление с помощью функции header() на свою же страницу.
Примерно так:
header("Location: YOUR_SITE");
exit;


Спустя 30 минут, 40 секунд (21.05.2010 - 00:12) Unlikely написал(а):
Цитата (waldicom @ 20.05.2010 - 20:41)
Cделайте перенаправление с помощью функции header() на свою же страницу.
Примерно так:
header("Location: YOUR_SITE");
exit;

Не получается. Говорит "Warning: Cannot modify header information - headers already sent by".
Я так понимаю это из за того что у меня в начале header('Content-Type: text/html; charset=UTF-8', true); прописано?

Спустя 9 минут, 3 секунды (21.05.2010 - 00:21) waldicom написал(а):
Нет, именно эта функция не влияет, но вот любой вывод в браузер (echo() или вообще любой символ) уже не позволит использовать эту функцию (обойти можно, но это не тот случай)

Спустя 24 минуты, 10 секунд (21.05.2010 - 00:45) Unlikely написал(а):
То есть, мне нужно её выполнить перед выводом чего либо в браузер.
Как это сделать если у меня скрипт добавления коментов(выше вставлял) инклюдится по середине страницы? smile.gif

Спустя 6 часов, 51 минута, 23 секунды (21.05.2010 - 07:36) Raito-kun написал(а):

$name = htmlspecialchars($name, ENT_QUOTES, "UTF-8", false);
$email = htmlspecialchars($email, ENT_QUOTES, "UTF-8", false);
$message = htmlspecialchars($message, ENT_QUOTES, "UTF-8", false);

зачем? при выводе обрабатывайте этой функцией, а при записи в бд используйте
mysql_real_escape_string()

Спустя 5 часов, 4 минуты, 6 секунд (21.05.2010 - 12:40) Unlikely написал(а):
Цитата (Raito-kun @ 21.05.2010 - 04:36)
$name = htmlspecialchars($name, ENT_QUOTES, "UTF-8", false);
$email = htmlspecialchars($email, ENT_QUOTES, "UTF-8", false);
$message = htmlspecialchars($message, ENT_QUOTES, "UTF-8", false);

зачем? при выводе обрабатывайте этой функцией, а при записи в бд используйте
mysql_real_escape_string()

Только если ради экономии места в дб. Другой разницы не вижу.

Спустя 1 день, 21 час, 39 минут, 39 секунд (23.05.2010 - 10:20) Unlikely написал(а):
Есть какой нибудь простой способ подсчитывать количество запросов в дб?
А то я что то создал переменную
$querycounter ="0";
и после каждого запроса пишу
$querycounter++;


Можно конечно создать функцию которая содержала бы в себе mysql_query() и $querycounter++; но я немогу придумать как и где хранить $querycounter ="0";

Спустя 13 минут, 57 секунд (23.05.2010 - 10:34) Basili4 написал(а):
Unlikely
Я бы не стал проверять только на ноличие массива $_POST но и на личеие какойнибудь переменной а после выполнения скрипта unset ($_POST ['Переменная']); я не проверял 100% результат не гарнтриую
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.