BackEnd
Это не конец спины. И вообще не конец. Это начало!
Хотя, в некотором роде, это тыловая часть баянометра.

Шеф, а что это?
Это, коллега, чёрный ход в БД баянометра.

Шеф, а как это?
Ну, коллега, это же элементарно :)

Шеф, а для чего это?
Задумывалось ЭТО как прибамбас к движкам форумов и чатов.

На многих форумах (если не на всех) есть подфорум с названием "Оффтопик", "Приколы", "Юмор" и т.д. куда люди в основном постят ссылки.

BackEnd представляет из себя удобную "лазейку" в БД баянометра через http. Своего рода веб-сервис. Но для php-шников (пока что).

Представьте себе кусочек кода, встроенный в POST-скрипт вашего форума (скрипт, добавляющий новый пост), который проверяет все найденные ссылки в сообщении на причастность к баянам. Автоматика короче, 21й век. Не хухры-мухры.

Шеф, а как это работает?
А работает это приблизительно так: Из скрипта вы формируете HTTP-запрос (здесь и далее примеры на PHP, однако это может быть и Perl и ASP, да что угодно):

<?
$url
=urlencode("http://somehost.com/somedoc.html");
// Здесь вам надо самостоятельно подумать 
//   про таймаут запроса.
// Так как задержка может длиться до 30 сек!!!
// Хотя пока что все укладывается в доли секунды, 
//   слава .masterhost :)
$str=@file_get_contents("http://rdf.ru/bayan/".
    
"backend.php?url=$url");
?>
То есть передаете URL который хотите проверить GET-запросом.


И не забывайте, коллега, передаваемый URL должен обязательно начинаться с 'http://'!!!

Переданный URL проверяется по базе, и в ответ вы получаете... получаете...
В ответ вы получаете PHP-объект, выданный наружу с помощью serialize():
<?
$result
=@unserialize($str);
if(
is_object($result)){
//Вуаля! Вы только что получили ответ 
//  от БД баянометра:
//Можете для начала слить содержимое в 
//  error-log вашего веб-сервера
    
error_logvar_export($result), true);
//Тут можно "дооформить" пост результатами
    
if($result->bayan==1){
        
//баян
    
}else if($result->bayan==0){
        
//не баян
    
}else{
        
//ошибочка:
        
error_log("URLErr:" $result->err);
    }
}else{
    
//Возвернулся не_обект
    //Рисуем ошибку
    
error_log("URLErr: is_object == false!");
}
?>

А какие поля будут в возвращаемом объекте?
А возвращаются в объекте такие поля:

$result->bayan - принимает значения -1, 0, 1
-1 - в ходе проверки возникла ошибка
0 - URL в базе не найден (ссылка не баян)
1 - URL найден в базе (ссылка возможно баян)

Если проверка завершилась с ошибкой, то возвращается текст ошибки:
$result->err - текст ошибки

Если же всё ок - возвращаютя ещё вот такие поля:
$result->time_first - UNIX TIMESTAMP когда ссылка попала в базу
$result->time_last - UNIX TIMESTAMP когда ссылку последний раз проверяли
$result->name - Имя героя, который первым проверил ссылку
$result->count - Сколько раз ссылку уже проверяли

Шеф, а на будущее?
А на будущее, коллега, прошу вас передавать еще один параметр в GET-запросе.
Параметр who - в котором будет содержаться короткий URL вашего форума (сайта с которого делается проверка).
Например для сайта "http://www.rdf.ru" достаточно передать "rdf.ru":

<?
$url
=urlencode("http://somehost.com/somedoc.html");
$who=urlencode("rdf.ru");
$str=@file_get_contents("http://rdf.ru/bayan/backend.php?".
    
"url=$url&who=$who");
?>

Глядишь, в будущем $result разбогатеет на пару полей, которые подскажут вам "а не постился ли этот урл уже где-то в другом месте на вашем сайте?"

Ну а тут можно посмотреть, что именно возвращает скрипт:

URL:

 

 

 

DISCLAIMER:
  • "КонецСпины" повернулся своей передней частью к людям 19 октября 2004 года.
  • Создатели баянометра не несут никакой ответственности за результаты работы этого сервиса.
  • Создатели баянометра не несут никакой ответственности за тормоза хостинга.
  • Создатели баянометра обязуются своевременно реагировать на все глюки и непонятки, возникающие при взаимодействии с этим сервисом
  • Absolutely no warranty