[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Коментарии
SunSet
ВОт задумался про добавку коментирования статей, новостей и т.д. С тем чтоб просто написать чтото и при нажатию кнопки все улетало в базу - все понятно.
Интересен вариант, когда заполняешь формочку, а вся инфа не сразу на сайт публикуется, а в некую невидимую часть записывается и админ, прочитав комент, сам решает добавлять ли его или грохнуть. Первое что придумалось, это записывать комент с неким значением по дефолту key=0. Админ же, просматривая комент и редактируя его, устанавливает это поле key уже со значением 1.
А скрипт, что прибавляет коменты на самом сайте выбирает только те, где key=1. Как по-другому в теории может быть сделана система, когда комент проходит сначала премодерацию и не сразу публикуется?



Спустя 16 минут, 22 секунды (7.09.2009 - 11:30) sergeiss написал(а):
Смотри на это дело так: всегда надо старайся сделать такой алгоритм, чтобы он был как можно проще, при условии полного выполнения задуманного функционала.

Твой вариант самый простой, проще некуда. Но он позволяет полностью реализовать то, что задумано. А это значит, что он - оптимальный smile.gif Единственное дополнение - поле лучше сразу сделать логическим.

Иными словами, можно придумать и другие варианты, но все они будут извратными.

Спустя 4 минуты, 23 секунды (7.09.2009 - 11:34) SunSet написал(а):
sergeiss
В смысле логическим?
Простота то хорошо, но еще ж на безопасность нужно ориентироваться. blink.gif

Спустя 2 минуты, 27 секунд (7.09.2009 - 11:37) Soldier Ghost написал(а):
А что не безопасного в твоём варианте?

Спустя 1 минута, 47 секунд (7.09.2009 - 11:38) stepan написал(а):
Я думаю на сколько сложным будет твоя защита, рано или поздно найдется человек который сможет ее сломать так что есть на что обращать внимание.

Спустя 3 минуты, 53 секунды (7.09.2009 - 11:42) SunSet написал(а):
Soldier Ghost
НУ я так, на всяк случай подметил smile.gif


stepan
Согласен, но к идеалу ж нужно стремиться. Да тут скорее не о самой защите, сколько о работоспособности такого вышеописаного метода.

Спустя 11 минут, 28 секунд (7.09.2009 - 11:54) FatCat написал(а):
Цитата (SunSet @ 7.09.2009 - 12:14)
Как по-другому в теории может быть сделана система, когда комент проходит сначала премодерацию и не сразу публикуется?

Именно так работает премодерация на нашем форуме. Сейчас мы ей не пользуемся, но встроен именно такой механизм.
В таблице сообщений есть поле "одобрено". При включении режима премодерации все сообщения влетают со значением "0" в этом поле. Модератор может одобрить, и тогда значение станет "1".
При выключенной премодерации (как сейчас), "единички" пишутся сразу и не требуется одобрения модератора.

Показ всегда работает только для записей с "единичкой", включения показа сообщений с нулем не предусмотрен.

Спустя 3 минуты, 42 секунды (7.09.2009 - 11:58) SunSet написал(а):
FatCat
Спасиб. Вопросов больше нету rolleyes.gif

Спустя 58 минут, 45 секунд (7.09.2009 - 12:56) samb100 написал(а):
FatCat всегда очень доступно объясняет! Респект и уважуха)))))

Спустя 42 минуты, 3 секунды (7.09.2009 - 13:38) SunSet написал(а):
samb100
Если ссылкой не бросит, то обьясняет laugh.gif


Вот и вопросец назрел. Идет проверка и вывод коммента где some_id=$id (статьи)
PHP
if ($id >0)
{
$comment mysql_query ("SELECT * FROM comments WHERE some_id=$id");
while (
$comments mysql_fetch_assoc($comment))

printf ("%s",$comments["text"],$r);

echo 
"222";
}

Почему
PHP
echo "222";
выводится раньше чем
PHP
printf ("%s",$comments["text"],$r);
и как сделать наоборот чтоб? blink.gif

Спустя 16 минут, 52 секунды (7.09.2009 - 13:55) Gabriel написал(а):
дык может потомучто ечо быстрее принта?

Спустя 4 минуты, 57 секунд (7.09.2009 - 14:00) SunSet написал(а):
Gabriel
Я чтото сразу подумал "Точно!", а потом задумался "А разве?" laugh.gif
Нет, к сожалению, не в этом дело. Если поставить два принта - то выводится сперва второй. Тут какойто подвох blink.gif

Спустя 11 минут, 25 секунд (7.09.2009 - 14:12) sergeiss написал(а):
Я думаю, тут проблема просто решается smile.gif

Что означает эта запись?
PHP
printf ("%s",$comments["text"],$r);


"Хочу вывести 2 переменных, $comments["text"] и $r, в соответствии с форматом".

Вопрос: а сколько переменных у тебя указано в самом формате?

Спустя 2 минуты, 24 секунды (7.09.2009 - 14:14) SunSet написал(а):
sergeiss
Это для удобочитаемости урезал. Полный вариант:

PHP
if ($id >0)
{
$comment mysql_query ("SELECT * FROM comments WHERE some_id=$id");
while (
$comments mysql_fetch_assoc($comment))

printf ("<tr><td height='30' bgcolor='#33CCFF'>Автор: <a href='mailto:%s'>%s</a></td><td height='30' bgcolor='#33CCFF'>Оценка отеля: %s</td><td height='30' bgcolor='#33CCFF'>%s</td></tr><tr><td colspan='3' bgcolor='#FFFFCC'><br>%s<br><br></td></tr>",
$comments["mail"],$comments["author"],$comments["estimation"],$comments["date"],$comments["text"],$r);

echo 
"222";

Спустя 13 минут, 13 секунд (7.09.2009 - 14:27) sergeiss написал(а):
Ёпрст... Тогда всё правильно. Ты получаешь то, что сделал.

Если ты пытаешься вывести данные где-то внутри таблицы, между тэгами </tr> и <tr> (или после </tr>, но до </table>), то они будут выведены перед таблицей!!! Если хочешь вывести таблицу, и потом текст, то таблицу сначала закрыть надо.

Посмотри текст уже сформированной страницы, в браузере. И ты увидишь свой текст "222" именно там, где ты его выводил. Но показан он будет перед таблицей.

Спустя 7 минут, 35 секунд (7.09.2009 - 14:35) SunSet написал(а):
sergeiss
Ёпрст... Точно! И вправду все очевидно, протупил. Спасибо.
Пришлось после цикла вывода строчек добавить в скрипт echo "</table>"; чтоб поочередность не нарушалась.


PHP
echo
"улетел" на свое место smile.gif


_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Быстрый ответ:

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