codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
<?php /** * CodeIgniter library to interface with the Akismet API. * @author Peter Goodman */ class Akismet { protected $api_key, $key_verified = FALSE, $blog_url, $user_ip, $user_agent; /** * Constructor. */ public function __construct() { $ci = get_instance(); $this->blog_url = $ci->config->slash_item('base_url'); $this->user_ip = $ci->input->ip_address(); $this->user_agent = $ci->input->user_agent(); } /** * Verify the API key. */ public function verify($key) { $this->api_key = $key; $key = urlencode($key); $url = urlencode($this->blog_url); return $this->key_verified = $this->query( 'rest.akismet.com/1.1/verify-key', "key={$key}&blog={$url}" ); } /** * Validate some content with akismet. */ public function validate(array $content) { if(!$this->key_verified) return FALSE; // build up the content to send to akismet $content = array_merge($_SERVER, array( 'blog' => $this->blog_url, 'user_ip' => $this->user_ip, 'user_agent' => $this->user_agent, 'referrer' => NULL, 'permalink' => NULL, 'comment_type' => 'comment', 'comment_author' => 'viagra-test-123', 'comment_author_email' => NULL, 'comment_author_url' => NULL, 'comment_content' => NULL, ), $content); // clear out useless values foreach($content as $key => $val) { if(empty($val)) unset($content[$key]); } // is this spam? return !$this->query( "{$this->api_key}.rest.akismet.com/1.1/comment-check", http_build_query($content) ); } /** * Get a response from akismet for something. * @internal */ protected function query($url, $data) { $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $url, CURLOPT_HEADER => FALSE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_FAILONERROR => TRUE, CURLOPT_FOLLOWLOCATION => TRUE, CURLOPT_FRESH_CONNECT => TRUE, // don't allow caching CURLOPT_FORBID_REUSE => TRUE, CURLOPT_POST => TRUE, CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_POSTFIELDS => $data, )); // if it fails the response will be false $response = curl_exec($ch); curl_close($ch); // this goes for the key being valid or the comment being spam :P if($response == 'valid' || $response == 'true') return TRUE; return FALSE; } }
Private
[
?
]
Run code