34.2. Zend_Service_Akismet

34.2.1. µµÀÔ

Zend_Service_Akismet (Àº)´Â, Akismet API ÀÇ Å¬¶óÀÌ¾ðÆ® ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.Akismet ¼­ºñ½º´Â, ÀÔ·Â µ¥ÀÌÅͰ¡ ½ºÆÔ¸ÞÀÏÀÎÁö ¾î¶²Áö¸¦ ÆÇÁ¤Çϱâ À§Çؼ­ ÀÌ¿ëµË´Ï´Ù. ¶Ç, ¾î´À µ¥ÀÌÅ͸¦ ¡¸½ºÆÔ¸ÞÀÏÀÌ´Ù¡¹¶ó°íÀΰ¡ ¡¸¹«½ÇÀÌ´Ù (ÇÜ)¡¹ µî°ú µî·ÏÇϱâ À§ÇÑ ¸Þ¼Òµåµµ °ø°³Çϰí ÀÖ½À´Ï´Ù. ¿ø·¡´Â Wordpress ÇâÇØÀÇ ½ºÆÔ¸ÞÀÏÀ» ½Äº°Çϱâ À§Çؼ­ ¸¸µé¾îÁø °ÍÀÔ´Ï´Ù¸¸, ¸ðµç ÇüÅÂÀÇ µ¥ÀÌÅÍ¿¡ ´ëÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Akismet (À»)¸¦ »ç¿ëÇÏ·Á¸é API ۰¡ ÇÊ¿äÇÕ´Ï´Ù. ۸¦ ÃëµæÇÏ·Á¸é WordPress.com ±×¸®°í ¾îÄ«¿îÆ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù.blog (À»)¸¦ ÀÛ¼ºÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ´ÜÁö ¾îÄ«¿îÆ®¸¦ ÀÛ¼ºÇÏ´Â °Í¸¸À¸·Î API ۸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

°Ô´Ù°¡Akismet (À»)¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, ÇÊÅ͸µ ÇÏ°í ½ÍÀº µ¥ÀÌÅ͸¦ °¡¸®Å²´Ù URL (À»)¸¦ ÁöÁ¤ÇØ ¸®Äù½ºÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. Akismet ÇÏ WordPress Àü¿ëÀ¸·Î ¸¸µé¾îÁø °ÍÀÎ °ÍºÎÅÍ, À̰ÍÀº blog url (À¸)·Î ºÒ¸³´Ï´Ù. À̰ÍÀº, constructor¡¡ ¡¡ ÀÇ µÎ¹øÂ°ÀÇ Àμö·Î¼­ °Ç³×ÁÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ´ÜÁö, ¾ðÁ¦¶óµµ setBlogUrl() ±×¸®°í º¯°æÇÒ ¼ö ÀÖ°í, ±× ¿ÜÀÇ ¸Þ¼Òµå ÄÝ ½Ã¿¡ 'blog' ۸¦ ÁöÁ¤ÇØ µ¡¾²±âÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

34.2.2. API ŰÀÇ °ËÁõ

Zend_Service_Akismet::verifyKey($key) (À»)¸¦ »ç¿ëÇϰí,Akismet API ۰¡ À¯È¿ÇÒÁö¸¦ °ËÁõÇÕ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì´Â ƯÈ÷ °ËÁõÇÒ Çʿ䵵 ¾øÀ» °ÍÀÔ´Ï´Ù°¡, °³ÂùµÇ¾î ÀÖÁö ¾ÊÀºÁö ¾î¶²Áö Á¶»çÇϰųª »õ·Ó°Ô ÃëµæÇÑ Å°°¡ ½ÇÁ¦·Î »ç¿ë °¡´ÉÇÒÁö¸¦ Á¶»çÇϰųª ±×·¸´Ù°í ÇßÀ» °æ¿ì¿¡ ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.


<?php
require_once 'Zend/Service/Akismet.php';

// API Å°, ±×¸®°í ¾îÇø®ÄÉÀ̼ÇÀ̳ª ÀÚ¿ø¿¡ÀÇ URL
// (À»)¸¦ ÁöÁ¤ÇØ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$akismet = new Zend_Service_Akismet($apiKey'http://framework.zend.com/wiki/');
if (
$akismet->verifyKey($apiKey) {
echo 
"ÀÌ Å°´Â À¯È¿ÇÕ´Ï´Ù.n";
} else {
echo 
"ÀÌ Å°´Â ¹«È¿ÀÔ´Ï´Ù.n";
}

Àμö¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ÄÝ Çϸé,verifyKey() (Àº)´Â constructor¡¡ ¡¡ À¸·Î ÁöÁ¤Çß´Ù API ۸¦ »ç¿ëÇÕ´Ï´Ù.

verifyKey() (Àº)´Â,Akismet ÀÇ verify-key REST ¸Þ¼Òµå¸¦ ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.

34.2.3. ½ºÆÔ¸ÞÀÏÀÇ Ã¼Å©

Zend_Service_Akismet::isSpam($data) (À»)¸¦ »ç¿ëÇϰí,Akismet ÇÏÁö¸¸ ±× µ¥ÀÌÅ͸¦ ½ºÆÔ¸ÞÀÏ·Î °£ÁÖÇÒÁö¸¦ Á¶»çÇÕ´Ï´Ù. Àμö´Â Çϳª·Î, ¿©±â¿¡ ¿¬»ó ¹è¿­À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹è¿­¿¡´Â, ´ÙÀ½ÀÇ Å°¸¦ ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

  • user_ip (Àº)´Â, µ¥ÀÌÅ͸¦ ¼Û½ÅÇÑ À¯ÀúÀÇ IP ÁÖ¼ÒÀÔ´Ï´Ù (´ç½ÅÀÇ IP ÁÖ¼Ò°¡ ¾Æ´Ï°í, ´ç½ÅÀÇ »çÀÌÆ®¸¦ »ç¿ëÇϰí ÀÖ´Â À¯ÀúÀÇ IP ÁÖ¼ÒÀÔ´Ï´Ù).

  • user_agent (Àº)´Â, µ¥ÀÌÅ͸¦ ¼Û½ÅÇÑ À¯ÀúÀÇ UserAgent ¹®ÀÚ¿­ (ºê¶ó¿ìÀú ¹× ¹öÁ¯) ÀÔ´Ï´Ù.

ÀÌÇÏÀÇ Å°µµ,API ¿·¿¡¼­ Àνĵ˴ϴÙ.

  • blog (Àº)´Â, ÀÚ¿øÀ̳ª ¾îÇø®ÄÉÀ̼ÇÀ» °¡¸®Å²´Ù ¿ÏÀüÇÑ URL ÀÔ´Ï´Ù.ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, constructor¡¡ ¡¡ ¿¡ °Ç³×ÁÖ¾ú´Ù URL (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

  • referrer (Àº)´Â, ¼Û½Å½ÃÀÇ HTTP_REFERER Çì´õÀÇ ³»¿ëÀÔ´Ï´Ù (½ºÆç¿¡ ÁÖÀÇÇսôÙ.Çì´õÀÇ À̸§°ú´Â ´Ù¸¨´Ï´Ù).

  • permalink (Àº)´Â, ¼Û½ÅÇÏ´Â µ¥ÀÌÅÍÀÇ ¿µ¼ÓÀûÀÎ Àå¼Ò (¸¸¾à ÀÖÀ¸¸é) ÀÔ´Ï´Ù.

  • comment_type (Àº)´Â, µ¥ÀÌÅÍÀÇ Çü½ÄÀÔ´Ï´Ù. ¿©±â¼­ ÁöÁ¤ÇÏ´Â °ªÀº API ±×¸®°í Á¤Àǵǰí ÀÖ¾î 'comment','trackback','pingback' ¾ß b ÇÏ´ÃÀÇ ¹®ÀÚ¿­ ('') µîÀÌ ÀÖ½À´Ï´Ù.±×·¯³ª, ÀÓÀÇÀÇ °ªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • comment_author (Àº)´Â, µ¥ÀÌÅÍÀÇ ¼Û½ÅÀÚÀÇ À̸§ÀÔ´Ï´Ù.

  • comment_author_email (Àº)´Â, µ¥ÀÌÅÍÀÇ ¼Û½ÅÀÚÀÇ ¸ÞÀÏ ÁÖ¼ÒÀÔ´Ï´Ù.

  • comment_author_url (Àº)´Â, µ¥ÀÌÅÍÀÇ ¼Û½ÅÀÚÀÇ URL ȤÀº Ȩ ÆäÀÌÁöÀÔ´Ï´Ù.

  • comment_content (Àº)´Â, ½ÇÁ¦·Î ¼Û½ÅµÈ µ¥ÀÌÅÍÀÇ ³»¿ëÀÔ´Ï´Ù.

±× ¿ÜÀÇ È¯°æ º¯¼öÀÇ ³»¿ëÀ» ¼Û½ÅÇØ, ±× µ¥ÀÌÅͰ¡ ½ºÆÔ¸ÞÀÏÀÏÁöÀÇ ÆÇ´Ü Àç·á¿Í ½Ãų ¼öµµ ÀÖ½À´Ï´Ù. Akismet (Àº)´Â,$_SERVER ¹è¿­ÀÇ ³»¿ëÀ» ¸ðµÎ ¼Û½ÅÇÏ´Â °ÍÀ» Ãßõ Çϰí ÀÖ½À´Ï´Ù.

isSpam() ¸Þ¼Òµå´Â true ȤÀº false (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù. API ۰¡ ¹«È¿ÀÎ °æ¿ì´Â ¿¹¿Ü¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.

·Ê 34.1. isSpam() ÀÇ »ç¿ë¹ý


<?php
$data 
= array(
    
'user_ip'              => '111.222.111.222',
    
'user_agent'           => 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0',
    
'comment_type'         => 'contact',
    
'comment_author'       => '´©±º°¡¾¾',
    
'comment_author_email' => 'nospam@myhaus.net',
    
'comment_content'      => "½ºÆÄ¸¶°¡ ¾Æ´Ñ °É.¹Ï¾î!"
);
if (
$akismet->isSpam($data)) {
    echo 
"¹Ì¾ÈÇÏÁö¸¸, ¾Æ¸¶ ´ç½ÅÀº ½ºÆÄ¸¶Áö¿ä.";
} else {
    echo 
"¿ì¸®ÀÇ »çÀÌÆ®·Î ¾î¼­ ¿À½Ê½Ã¿À!";
}

isSpam() (Àº)´Â,Akismet API ÀÇ ¸Þ¼Òµå comment-check (À»)¸¦ ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.

34.2.4. ±âÁ¸ÀÇ ½ºÆÔ¸ÞÀÏÀÇ ¼Û½Å

½Ã°£¿¡´Â, ½ºÆÔ¸ÞÀÏÀÌ ÇÊÅ͸¦ Åë°úÇØ ¹ö¸®±âµµ ÇÕ´Ï´Ù. ÇÊÅ͸¦ Åë°úÇÑ µ¥ÀÌÅ;ȿ¡, ¸¸¾à ¡¸À̰ÍÀº ½ºÆÔ¸ÞÀÏÀÏ °ÍÀÌ´Ù¡¹ (ÀÌ)¶ó´Â °ÍÀÌ ¹ß°ßµÇ¸é, ±×°ÍÀ» Akismet ¿¡ ¼Û½ÅÇսôÙ.±×°Í¿¡ ÀÇÇØ, ÇÊÅÍÀÇ ¼º´ÉÀÌ Çâ»óÇÕ´Ï´Ù.

Zend_Service_Akismet::submitSpam() (À¸)·Î ÁöÁ¤ÇÏ´Â ¹è¿­Àº, isSpam() ¿¡ °Ç³×ÁÖ´Â °Í°ú °°Àº Çü½ÄÀÔ´Ï´Ù. ±×·¯³ª, ÀÌ ¸Þ¼Òµå´Â °ªÀ» µ¹·ÁÁÖÁö ¾Ê½À´Ï´Ù. API ۰¡ ¹«È¿ÀÎ °æ¿ì´Â ¿¹¿Ü°¡ ¹ß»ýÇÕ´Ï´Ù.

·Ê 34.2. submitSpam() ÀÇ »ç¿ë¹ý


<?php
$data 
= array(
    
'user_ip'              => '111.222.111.222',
    
'user_agent'           => 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0',
    
'comment_type'         => 'contact',
    
'comment_author'       => '´©±º°¡¾¾',
    
'comment_author_email' => 'nospam@myhaus.net',
    
'comment_content'      => "½ºÆÄ¸¶°¡ ¾Æ´Ñ °É.¹Ï¾î!"
);
$akismet->submitSpam($data));

submitSpam() (Àº)´Â,Akismet API ÀÇ ¸Þ¼Òµå submit-spam (À»)¸¦ ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.

34.2.5. ¹«½ÇÀÇ µ¥ÀÌÅÍ (ÇÜ) ÀÇ ¼Û½Å

½Ã°£¿¡´Â,Akismet ÇÏÁö¸¸ À߸øÇØ ½ºÆÔ¸ÞÀϰú ÆÇÁ¤ÇØ ¹ö¸®±âµµ ÇÕ´Ï´Ù. ±× ¶§¹®¿¡,Akismet ÇÏÁö¸¸ ½ºÆÔ¸ÞÀÏÀ̶ó°í ÆÇ´ÜÇÑ µ¥ÀÌÅÍÀÇ ·Î±×¸¦ Á¤±âÀûÀ¸·Î üũÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Çö»óÀ» ¹ß°ßÇϸé, ±× µ¥ÀÌÅ͸¦ Akismet ¿¡ ¡¸ÇÜ¡¹ ȤÀº ¹«½ÇÀÇ µ¥ÀÌÅͷμ­ ¼Û½ÅÇսô٠(ÇÜÀº ¼±ÀÎ, ½ºÆÔ¸ÞÀÏÀº ¾ÇÀÎÀÔ´Ï´Ù).

Zend_Service_Akismet::submitHam() (À¸)·Î ÁöÁ¤ÇÏ´Â ¹è¿­Àº, isSpam() (ÀÌ)³ª submitSpam() ¿¡ °Ç³×ÁÖ´Â °Í°ú °°Àº Çü½ÄÀÔ´Ï´Ù.¶Ç, submitSpam() (¿Í)°ú °°ÀÌ, °ªÀ» µ¹·ÁÁÖÁö ¾Ê½À´Ï´Ù. API ۰¡ ¹«È¿ÀÎ °æ¿ì´Â ¿¹¿Ü°¡ ¹ß»ýÇÕ´Ï´Ù.

·Ê 34.3. submitHam() ÀÇ »ç¿ë¹ý


<?php
$data 
= array(
    
'user_ip'              => '111.222.111.222',
    
'user_agent'           => 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0',
    
'comment_type'         => 'contact',
    
'comment_author'       => '´©±º°¡¾¾',
    
'comment_author_email' => 'nospam@myhaus.net',
    
'comment_content'      => "½ºÆÄ¸¶°¡ ¾Æ´Ñ °É.¹Ï¾î!"
);
$akismet->submitHam($data));

submitHam() (Àº)´Â,Akismet API ÀÇ ¸Þ¼Òµå submit-ham (À»)¸¦ ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.

34.2.6. Zend °íÀ¯ÀÇ ¾×¼¼½º¿ë ¸Þ¼Òµå

Akismet API ±×·³ ³× °³ÀÇ ¸Þ¼Òµå ¹Û¿¡ Á¤Àǵǰí ÀÖÁö ¾Ê½À´Ï´Ù¸¸, Zend_Service_Akismet ±×·³ ±× ÀÌ¿ÜÀÇ ¾×¼¼½º¿ë ¸Þ¼Òµåµµ ÁغñÇØ ÀÖ½À´Ï´Ù. À̰͵éÀ» »ç¿ëÇϰí, ³»ºÎÀÇ ÇÁ·ÓÆÛƼ¸¦ º¯°æÇÕ´Ï´Ù.

  • getBlogUrl() ¹× setBlogUrl() (Àº)´Â, ¸®Äù½ºÆ®·Î »ç¿ëÇÑ´Ù blog URL (À»)¸¦ ÃëµæÇϰųª º¯°æÇϰųª ÇÕ´Ï´Ù.

  • getApiKey() ¹× setApiKey() (Àº)´Â, ¸®Äù½ºÆ®·Î »ç¿ëÇÑ´Ù API ۸¦ ÃëµæÇϰųª º¯°æÇϰųª ÇÕ´Ï´Ù.

  • getCharset() ¹× setCharset() (Àº)´Â, ¸®Äù½ºÆ®·Î »ç¿ëÇϴ ij¸¯ÅÍ ¼¼Æ®¸¦ ÃëµæÇϰųª º¯°æÇϰųª ÇÕ´Ï´Ù.

  • getPort() ¹× setPort() (Àº)´Â, ¸®Äù½ºÆ®·Î »ç¿ëÇÑ´Ù TCP Æ÷Å並 ÃëµæÇϰųª º¯°æÇϰųª ÇÕ´Ï´Ù.

  • getUserAgent() ¹× setUserAgent() (Àº)´Â, ¸®Äù½ºÆ®·Î »ç¿ëÇÑ´Ù HTTP À¯Àú ¿¡ÀÌÀüÆ®¸¦ ÃëµæÇϰųª º¯°æÇϰųª ÇÕ´Ï´Ù. ÁÖÀÇ: À̰ÍÀº, ¼­ºñ½º¿¡ ¼Û½ÅÇÏ´Â µ¥ÀÌÅÍÀÇ user_agent (ÀÌ)°¡ ¾Æ´Õ´Ï´Ù.¼­ºñ½º¿¡ÀÇ ¸®Äù½ºÆ®¸¦ ÀÛ¼ºÇÒ ¶§¿¡ HTTP User-Agent Çì´õ·Î ÁöÁ¤ÇÏ´Â ³»¿ëÀÌ µË´Ï´Ù.

    À¯Àú ¿¡ÀÌÀüÆ®·Î ¼³Á¤ÇÏ´Â °ªÀº some user agent/version | Akismet/version Çü½ÄÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù.µðÆúÆ®´Â Zend Framework/0.7.0 | Akismet/1.11 ÀÔ´Ï´Ù.