PDA

Просмотр полной версии : Движок Цитатника от меня


lsass.exe
14.12.2007, 04:30
Simple Quotes Engine v1.3 (Обновление от 10.01.2008)

Возможности самого движка:
1) Постраничный вывод цитат.
2) Выбор кол-ва выводимых цитат на страницу.
3) Редактирование имени(title) сайта.
4) Добавление цитат пользователями (стоит капча от флуда, спама и т.д.).
5) Изменение рейтинга цитаты (Посетитель может 1 раз повысить\понизить рейтинг, ведутся логи по изменениям рейтингов всех цитат).
6) 20-лучших\худших\новых цитат.
7) Статистика на главной странице (кол-во проверенных\непроверенных цитат, модераторов\администратор в).
8) Использование ЧПУ.
9) Подтверждение цитаты модератором.

Возможности администраторской панели:
1) 2 уровня доступа: админ - может делать все и модератор - только редактировать цитаты.
2) Управление цитатами (изменение статуса(проверено\не проверено), редактирование, удаление).
3) Управление пользователями (выбор статуса moderator\admin, создание новых пользователей, удаление старых, редактирование текущих).
4) Изменение настроек сайта (кол-во цитат, выводимых на страницу, имя(title) сайта).
5) Быстрое добавление цитат (нету защитного кода + сразу присваивается статуc "проверено").
6) Редактирование страницы "О сайте".
7) Редактирование правил, отображающихся при добавлении цитат.

В разработке:
1) Изменение рейтинга без перезагрузки страниц.
2) Удобный инсталлятор (если вабще нужен будет).

Установка (хост должен поддерживать PHP, MySQL, mod_rewrite):
1) Залить все файлы на ваш хост.
2) Изменить данные для соединения c базой данных MySQL (файл config.php).
3) Если нужно измените дизайн (в папке inc три файла: top.php, bottom.php, style.css).
4) Импортируйте dump базы данных (файл dump.sql), например через PhpMyAdmin.
5) Цитатник готов к использованию.
6) Администраторская панель находится по адрессу http://yoursite.ru/adm/, по умолчанию логин: admin пароль: qwerty (не забудьте сменить!!!)

Последнее обновление:
-Подправлен код (исправлены некоторые ошибки, убрано лишнее, вынесены функции в отдельный файл и т.д.)
-Исправлена бага в репутации, теперь все работает. Посетитель может 1 раз нажать + и 1 раз нажать -, для каждой цитаты.
-Раздел "О сайте" теперь редактируется прямо из Админки.
-Исправлена ошибка, которая возникала при редактировании пользователей в Админке (неправильно выставлялся статус).
-Теперь при удалении цитаты, также удаляются ее логи (имеется ввиду логи изменения рейтинга).
-Добавлена возможность редактирования правил, отображающихся при добавлении цитат.
-Новый раздел "20 новых" (вывод 20 последних добавленных цитат).

=================================================
О всех найденных багах\ошибках\пожеланиях просьба сообщать по ICQ# 7766666 и e-mail: lsass@yandex.ru.
Пример движка можно посмотреть на http://quotes.lsass.us.
Свежие версии всегда можно найти на http://lsass.us ;).
=================================================

Скачать Simple Quotes Engine (http://lsass.us/releases/3) (lsass.us)
Скачать Simple Quotes Engine (http://rapidshare.com/files/82757468/sqe.zip) (rapidshare.com)

(c) lsass.exe

//щас траблы с хостом, поэтому пока на рапиду залил (демо версия будет доступна позже)

.:EnoT:.
14.12.2007, 05:37
Ну ты вообще молодец :)
Супер, слов нет)
Жалко что могу только +1 стаавить(

Ю_ЗвЕРь
14.12.2007, 06:16
Прелесть! Искал в сети цитатники недавно. Это, пожалуй, самый оптимальный вариант. Понравилось, забираем с удовольствием ,) Благодарю!

+toxa+
14.12.2007, 12:46
Там инхэкция есть через подмену значений X_FORWARDED_FOR и CLIENT_IP +)

index.php

function getip()
{
if(isset($HTTP_SERVER_VARS))
{
if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]))
{
$realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]))
{
$realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
else
{
$realip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
....

$ip = getip();

function modrate($id,$ip)
{
require_once "config.php";
$query = mysql_query("SELECT `rating` FROM `quotes` WHERE `id` = '$id'");
$r = mysql_fetch_array($query);
if($_GET['rating']=="plus") $r['rating']++;
if($_GET['rating']=="minus") $r['rating']--;
$query = mysql_query("UPDATE `quotes` SET `rating` = '$r[rating]' WHERE `id` = '$id'");
if($query)
{
$query = mysql_query("INSERT INTO `logs` VALUES('','$id','$ip','$_GET[rating]')");
} else return false;
return true;
}

....
$query = mysql_query("SELECT * FROM `logs` WHERE `ip` = '$ip' AND `qid` = '$id'");
if(mysql_num_rows($query)>0)
{
....


лечится заменой 95 строчки в index.php на

return addslashes($realip);

lsass.exe
14.12.2007, 13:18
Там инхэкция есть через подмену значений X_FORWARDED_FOR и CLIENT_IP +)

index.php

function getip()
{
if(isset($HTTP_SERVER_VARS))
{
if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]))
{
$realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]))
{
$realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
else
{
$realip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
....

$ip = getip();

function modrate($id,$ip)
{
require_once "config.php";
$query = mysql_query("SELECT `rating` FROM `quotes` WHERE `id` = '$id'");
$r = mysql_fetch_array($query);
if($_GET['rating']=="plus") $r['rating']++;
if($_GET['rating']=="minus") $r['rating']--;
$query = mysql_query("UPDATE `quotes` SET `rating` = '$r[rating]' WHERE `id` = '$id'");
if($query)
{
$query = mysql_query("INSERT INTO `logs` VALUES('','$id','$ip','$_GET[rating]')");
} else return false;
return true;
}

....
$query = mysql_query("SELECT * FROM `logs` WHERE `ip` = '$ip' AND `qid` = '$id'");
if(mysql_num_rows($query)>0)
{
....


лечится заменой 95 строчки в index.php на

return addslashes($realip);

исправил ;)
Также добавлено:
5) Быстрое добавление цитат (нету защитного кода + сразу присваивается статуc "проверено")

.:EnoT:.
14.12.2007, 14:55
Личто я предпочяитаю сразу фильтровать не отходя от кассы:
$realip = htmlspecialchars(stripslashes(getenv('REMOTE_ADDR' )));

lsass.exe
14.12.2007, 15:05
Личто я предпочяитаю сразу фильтровать не отходя от кассы:
Не катит, тогда уж сразу конечный $realip проверять
return htmlspecialchars(stripslashes($realip));

Функция определяет ип с вероятностью 99.9% =)))) Должна по крайне мере, если я не накосячил =\

TrypoED
14.12.2007, 17:00
Отлично )
Щас затестим ;]

.:EnoT:.
14.12.2007, 17:20
lНе катит, тогда уж сразу конечный $realip проверять
return htmlspecialchars(stripslashes($realip));
+1 ты прав, но я в своих скриптах делаю так, конечно больше кода, но привык я так =/:
<?php

function getip(){
if(htmlspeciachars(stripslashes(getenv('REMOTE_ADD R'))))
$ip = htmlspeciachars(stripslashes(getenv('REMOTE_ADDR') ));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_F ORWARDED_FOR'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_FORWARDE D_FOR')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_X _FORWARDED_FOR'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_X_FORWAR DED_FOR')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_X _COMING_FROM'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_X_COMING _FROM')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_V IA'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_VIA'))); }
elseif(htmlspeciachars(stripslashes(getenv('HTTP_X ROXY_CONNECTION'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_XROXY_CO NNECTION')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_C LIENT_IP'))))
{$ip = htmlspeciachars(stripslashes(getenv('HTTP_CLIENT_I P')));}
else{$ip = "unknown";}
return $ip;
}

$ip_user = getip();
?>

Macro
14.12.2007, 17:26
Хороший двиг :) Только цифры с картинки иногда не прочесть совсем. Кстати я ошибся насчет инъекции

lsass.exe
14.12.2007, 17:28
+1 ты прав, но я в своих скриптах делаю так, конечно больше кода, но привык я так =/:
<?php

function getip(){
if(htmlspeciachars(stripslashes(getenv('REMOTE_ADD R'))))
$ip = htmlspeciachars(stripslashes(getenv('REMOTE_ADDR') ));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_F ORWARDED_FOR'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_FORWARDE D_FOR')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_X _FORWARDED_FOR'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_X_FORWAR DED_FOR')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_X _COMING_FROM'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_X_COMING _FROM')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_V IA'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_VIA'))); }
elseif(htmlspeciachars(stripslashes(getenv('HTTP_X ROXY_CONNECTION'))))
$ip = htmlspeciachars(stripslashes(getenv('HTTP_XROXY_CO NNECTION')));}
elseif(htmlspeciachars(stripslashes(getenv('HTTP_C LIENT_IP'))))
{$ip = htmlspeciachars(stripslashes(getenv('HTTP_CLIENT_I P')));}
else{$ip = "unknown";}
return $ip;
}

$ip_user = getip();
?>
согласись это нерацианально, нет смысла проверять каждый раз, если в результате все равно получим $realip , которые првоерим 1 раз и все =)

-Hormold-
14.12.2007, 20:55
Перезалейте...

lsass.exe
14.12.2007, 20:55
Добавил в первый пост скриншоты админки.

F!$T
14.12.2007, 20:59
lsass.exe, молодца, что сказать...

Ponchik
15.12.2007, 18:48
Если оценил цитату, убери плюченги и минусенги, или хотябы пиши не "Спасибо, рейтинг успешно изменен" а "Вы это уже оценили" ИМХО

Piflit
15.12.2007, 18:55
на одну и ту же цитату можно сначала нажать плюсег, а потом минусег. думаю, это не правильно =\

GreenBear
15.12.2007, 18:58
else{$ip = "unknown";}
а почему тут нету фильтрации???

lsass.exe
15.12.2007, 19:13
За одну цитату можно отдать один раз + и один раз -, если передумали например. На баше так по крайне мере, я решил сделать тоже самое.

GreenBear это Enot показывал как он делал функцию =\ В двиге это не используется ;)

Solide Snake
17.12.2007, 17:32
Оооо спасибо:)))Давно хотел себе такой двиг на комп...Но чёто так и не дошли руки...А щас скачал:)Ещё раз спс:)

Vaillas
29.12.2007, 15:55
lsass.exe, где скачать? У тя на саите даёт еррор 404

.:EnoT:.
29.12.2007, 15:57
Перезалейте кто-нить, а то Лсасу писал в пм, он уже три дня не отвечает =/
А я удалил случайно =/

.W
02.01.2008, 05:31
http://slil.ru/25309639

и блин помогите, http://quotes.2ru.name/
не могу с кодировкой ниче сделать..
как ее настроить?

Dabass Org
05.01.2008, 14:25
warlog
Зайди в config.php и раскомментируй строку
//$query = mysql_query("SET NAMES cp1251");
чтобы получилось так:
$query = mysql_query("SET NAMES cp1251");
и импорт базы делай в соответствующей кодировке.

а у меня другая трабла - цитаты добавленные в 2008 году добавляются вниз страницы!
хотя время утверждения показывает именно 2008.
причем цитата за 3 января будет выше 1 января, но все старые цитаты держатся в самом верху.

Isis
05.01.2008, 15:12
Интересно, почему по дефолту эта строка раскомментирована...

Isis
05.01.2008, 15:13
Dabass Org, видимо lsass неправильно сделал order by `date`, сделайте order by `id` desc и все цитаты будут нормально показываться

Dabass Org
05.01.2008, 17:12
спасибо помогло. сам бы не додумался

lsass.exe
10.01.2008, 22:02
Вышло обновление, все подробности в первом посте =)

lsass.exe
14.01.2008, 00:11
Ожила моя хомпага ) Добавил линк в первый пост, теперь последную версию всегда можно скачать с www.lsass.us

ZweR
14.01.2008, 14:05
Спасибо за двиг , понравился , только не работает рейтинг цитат , жму на плюс , переправляет меня , и говорит что нету папки /id8/plus , скачал со злого . с хомпаги . не где нету этой директории .

lsass.exe
14.01.2008, 14:41
Спасибо за двиг , понравился , только не работает рейтинг цитат , жму на плюс , переправляет меня , и говорит что нету папки /id8/plus , скачал со злого . с хомпаги . не где нету этой директории .
для использования цитатника необходим mod_rewrite, видимо на твоем хосте отсутствует данный модуль

ZweR
14.01.2008, 15:01
для использования цитатника необходим mod_rewrite, видимо на твоем хосте отсутствует данный модуль
Спасибо уважаемый , я ставил на localhost . Проблема решена .

ZweR
15.01.2008, 11:54
Кто-то шаблон прикручивал к цитатнику ?
я вот только css поменял чуть ))
скрин (http://img155.imageshack.us/my.php?image=style1kb8.jpg)

vadim399
15.01.2008, 22:08
lsass.exe, копирайты можно снимать? ))

lsass.exe
15.01.2008, 22:35
lsass.exe, копирайты можно снимать? ))
снимай :D

Cawabunga
02.02.2008, 23:37
rss будет ?

Shawn1x
03.02.2008, 15:12
Просто Отлично )
Щас будем тестить ;)

Реджис
15.03.2008, 23:52
День добрый!
Отличный двиг, органичный, ничего лишнего!
На локалке тестил - никаких проблем, всё летатет!
Попробовал залить на хост, а именно на ayola.net - так вот там выдаёт ошибку "Ошибка в файле .htaccess" , что может быть не так? ВОзможно ли дело в том, что "Попробуйте закомментировать строку Options (мы не даём изменять Options)." ?
Register_globals: Off
Output_buffering: Off
Error_reporting: Off
Заранее благодарю.

Дюша
16.03.2008, 00:27
класный двиг

Karantin
16.03.2008, 08:27
Сорри за оффтоп, но вдруг автору захочется заимствовать какие-то идеи в новых версиях? Типа социальной сети цитатной.
http://vashbash.org/

lsass.exe
16.03.2008, 10:48
в общем щас времени свободного побольше стало, выйдет новая версия, ожидаемые изменения
1) rss
2) инсталлятор
3) исправлен баг с путями(сейчас цитатник можно ставить только в корень)
4) небольшие изменения по разделам(новые методы сортировки цитат)
Так что если есть какие пожелания самое время отписать их ;)

.W
16.03.2008, 10:56
Ждемс новую версию, перечисленого хватает с головой :)

strange
11.06.2008, 20:09
в общем щас времени свободного побольше стало, выйдет новая версия, ожидаемые изменения

тебя случаем в армию не забрали? :D
Когда буит новая версия и где её можно будет глянуть?