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

NetWork 2009 M01 19
1313
62
0
0

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

При разработке портала для одного 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

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

Оцените пост

0

Комментарии

0
Прикольно, но слишком низкоуровнево-специфично.

Вот это:

> $link = @mysql_connect("localhost", "имя пользователя", "пароль") or die ("Соединение с сервером MySQL не установлено!");
> @mysql_select_db("имя базы",$link)
or die("Необходимая база данных отсутствует на сервере MySQL!");

называется монадой Either. Жестоко жалею, что в явном виде монады встречаются только в Haskell.
0
Существенный минус в вашем проекте это jQuery.
Вы сделали малюсенький проектик, который требует подключения некой библиотеки… быть может ссылаясь на то, что она многими используется но на деле все иначе… там где не использует придется ставить jquery, а там где используется другая lib'a его ставить не захотят…
Гораздо логичнее было бы сделать все это на нэйтив JS… учитывая что ума там много и не нужно…
Event Listener + xmlHTTPRequest ( по желанию )
0
> Гораздо логичнее было бы сделать все это на нэйтив JS… учитывая что ума там много и не нужно…
> Event Listener + xmlHTTPRequest ( по желанию )

1. Системы растут от простых к сложным.
2. IE

Поэтому лучше юзать любую библиотеку, но не чистый JS.
0
Да кстати… в php скрипте улыбнуло… если 3 раза человек нашёл ошибку — он спамер… а может он просто хорошо язык знает? Вроде бы доброе дело делает, решил весь сайт проверить… а ему — ПЫДЫДЫЩ! Ты спамер ! о_О? Хотя конечно)) это все настраивается :)
0
Человек который более менее не плохо знает JS сможет написать крос платформенный скрипт без библиотек…
Лучше юзать библиотеку тогда, когда это твой проект и ты будешь её юзать еще… но когда ты делаешь продукт из 100 строчек который не будет работать без огромной либы — это не правильно…

IE ? И что IE ? Ну jQuery ведь работает в IE, а там не космический код… такой же любой смертный напишет, что мешает?
Показать комментарии