При разработке портала для одного Online издания, была поставлена задача, написания системы, которая даст возможность посетителям сообщать о найденных орфографических ошибках редактору.
первоисточник: http://network.com.kz/javascript/53-koppa.html
Так как в проекте уже использовался jQuery, решено было воспользоваться функциями этого JS фреймворка и решать поставленную задачу с его помощью. Собственно задача решена и небольшой скриптик, который был написан за пару часов, отправляется в свободное плаванье.
Для работы нам нужно:
1. jQuery оттуда, http://jquery.com/
2. Коппа отсюда, http://network.com.kz/show/js/koppa/koppa.js
3. Пишем простенький PHP скрипт для отправки сообщения на эл. почту (скрипт ложим в корень сайта)
/**
* Коппа — система орфо сообщений
*
* @автор Хрищатый Максим
* @копирайты Copyright (c) 2005-2008, Laboratory Khrishhatogo.
* @веб-сайт http://www.laborant.kz
* @сборка 1.0.1
*/
#подключаем MySQL
$link = @mysql_connect("localhost", "имя пользователя", "пароль")
or die ("Соединение с сервером MySQL не установлено!");
@mysql_select_db("имя базы",$link)
or die("Необходимая база данных отсутствует на сервере MySQL!");
@mysql_query ("SET NAMES cp1251");
#из грязи в князи
function windows1251_decode_iconv($str) {
$str = iconv("utf-8", "windows-1251", $str);
return $str;
}
#обозначение переменных
if (isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
else $ip = "";
if (isset($_GET['text'])) $text = $_GET['text'];
else $text = "";
#обычный 2007-12-21
$d = date("Y-m-d");
#обычный час формат [1..24]
$g = date("G");
$ok = 0;
#ЗАПРОС /-> статистика
$sql = @mysql_query("SELECT u
FROM koppa
WHERE date = '$d'
AND hour = '$g'
AND ip = '$ip'");
if (@mysql_num_rows($sql) == 0) {
#ЗАПРОС /-> вносим информацию в статистику
$sql = @mysql_query("INSERT INTO koppa (u,date,hour,ip)
VALUES (
'1','$d','$g','$ip'
)");
$ok = 1;
}
else {
$malyava = @mysql_fetch_assoc($sql);
if ($malyava['u'] >= 3) {
echo "Ваш IP заблокирован за СПАМ!";
}
elseif ($malyava['u'] < 3 && $malyava['u'] >= 1) {
#ЗАПРОС /-> обновляем статистику
$sql = @mysql_query("UPDATE koppa
SET u = u+1
WHERE date = '$d'
AND hour = '$g'
AND ip = '$ip'");
$ok = 1;
}
@mysql_free_result($sql);
}
if ($ok == 1) {
//отправляем собщение
$to = "ЭЛ. ПОЧТА ВЕБ-МАСТЕРА";
$subject = "Коппа орфо ошибка";
$message = windows1251_decode_iconv($text);
$headers = "MIME-Version: 1.0" . "\r\n" .
"Content-type: text/html; charset=windows-1251" . "\r\n" .
"From: ". $to . "\r\n" .
"Reply-To: " . $to . "\r\n" .
"X-Mailer: PHP/" . phpversion();
mail($to, $subject, $message, $headers);
echo "Ваше сообщение получено";
}
#ЗАПРОС /-> закрываем соединение
@mysql_close($link);
?>
4. Структура базы MySQL
CREATE TABLE IF NOT EXISTS `koppa` (
`u` tinyint(1) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`hour` tinyint(2) NOT NULL default '0',
`ip` varchar(16) NOT NULL,
PRIMARY KEY (`date`,`hour`,`ip`),
KEY `u_views` (`u`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
5. Подключаем
<!-- jQuery -->
<script src="jquery.js" type="text/javascript"></script>
<!-- Коппа -->
<script src="koppa.js" type="text/javascript"></script>
6. Информируем посетителей
Не забудьте поместить кнопочку, которая будет информировать посетителей о том, что они могут помочь редакторам при выявлении ошибки на сайте.
А теперь внимание! Когда будите размещать кнопочку не забудьте присвоить тегу img специальный id="koppa"
7. Заходим на сайт, выделяем текст, нажимаем Shift+Q
Если руки прямые — работать будет :)