Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
22:19, 19 января 2009

Коппа — система орфо сообщений

При разработке портала для одного Online издания, была поставлена задача, написания системы, которая даст возможность посетителям сообщать о найденных орфографических ошибках редактору.

Blog post image

Blog post image

первоисточник: 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. Информируем посетителей

Не забудьте поместить кнопочку, которая будет информировать посетителей о том, что они могут помочь редакторам при выявлении ошибки на сайте.

Blog post image

Blog post image

А теперь внимание! Когда будите размещать кнопочку не забудьте присвоить тегу img специальный id="koppa"

7. Заходим на сайт, выделяем текст, нажимаем Shift+Q

Если руки прямые — работать будет :)

0