本文整理汇总了PHP中Akismet::errorsExist方法的典型用法代码示例。如果您正苦于以下问题:PHP Akismet::errorsExist方法的具体用法?PHP Akismet::errorsExist怎么用?PHP Akismet::errorsExist使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Akismet
的用法示例。
在下文中一共展示了Akismet::errorsExist方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: filterMessage
/**
* The function for processing a message to see if it might be SPAM
* returns:
* 0 if the message is SPAM
* 1 if the message might be SPAM (it will be marked for moderation)
* 2 if the message is not SPAM
*
* @param string $author Author field from the posting
* @param string $email Email field from the posting
* @param string $website Website field from the posting
* @param string $body The text of the comment
* @param string $imageLink A link to the album/image on which the post was made
* @param string $ip the IP address of the comment poster
*
* @return int
*/
function filterMessage($author, $email, $website, $body, $imageLink, $ip)
{
$commentData = array('author' => $author, 'email' => $email, 'website' => $website, 'body' => $body, 'permalink' => $imageLink);
$zp_galUrl = FULLWEBPATH;
// Sets the webpath for the Akismet server
$zp_akismetKey = getOption('Akismet_key');
$forgive = getOption('Forgiving');
$die = 2;
// good comment until proven bad
$akismet = new Akismet($zp_galUrl, $zp_akismetKey, $commentData);
if ($akismet->errorsExist()) {
// TODO: Add more improved error handling (maybe)
// echo "Couldn't connected to Akismet server!";
// print_r ($akismet->getErrors());
$die = 1;
// mark for moderation if we can't check for Spam
} else {
if ($akismet->isSpam()) {
// Message is spam according to Akismet
// echo 'Spam detected';
// echo "bad message.";
$die = $forgive;
} else {
// Message is not spam according to Akismet
// echo "spam filter is true. good message.";
}
}
return $die;
}
示例2: validate
/**
* validate the elements data against the rule
* @param string data to check
* @param object element model
* @param int plugin sequence ref
* @return bol true if validation passes, false if fails
*/
function validate($data, &$elementModel, $c)
{
$params = $this->getParams();
$user = JFactory::getUser();
if ($params->get('akismet-key') != '')
{
$username = $user->get('username') != '' ? $user->get('username') : $this->_randomSring();
$email = $user->get('email') != '' ? $user->get('email') : $this->_randomSring().'@'.$this->_randomSring().'com';
require_once(JPATH_COMPONENT.DS.'plugins'.DS.'validationrule'.DS.'akismet'.DS.'akismet.class.php');
$akismet_comment = array (
'author' => $username,
'email' => $user->get('email'),
'website' => JURI::base(),
'body' => $data
);
$akismet = new Akismet(JURI::base(), $params->get('akismet-key'), $akismet_comment);
if ($akismet->errorsExist()) {
JError::raiseNotice( JText::_("Couldn't connected to Akismet server!"));
} else {
if ($akismet->isSpam()) {
return false;
}
}
}
return true;
}
示例3: validate
/**
* Validate the elements data against the rule
*
* @param string $data To check
* @param int $repeatCounter Repeat group counter
*
* @return bool true if validation passes, false if fails
*/
public function validate($data, $repeatCounter)
{
$params = $this->getParams();
if ($params->get('akismet-key') != '') {
$username = $this->user->get('username') != '' ? $this->user->get('username') : $this->_randomSring();
require_once JPATH_COMPONENT . '/plugins/validationrule/akismet/libs/akismet.class.php';
$akismet_comment = array('author' => $username, 'email' => $this->user->get('email'), 'website' => JURI::base(), 'body' => $data);
$akismet = new Akismet(JURI::base(), $params->get('akismet-key'), $akismet_comment);
if ($akismet->errorsExist()) {
throw new RuntimeException("Couldn't connected to Akismet server!");
} else {
if ($akismet->isSpam()) {
return false;
}
}
}
return true;
}
示例4: onSubmit
function onSubmit($vals)
{
$ak = appconf('akismet_key');
if ($ak) {
loader_import('siteblog.Akismet');
$comment = array('author' => $vals['name'], 'email' => $vals['email'], 'website' => $vals['url'], 'body' => $vals['body'], 'permalink' => site_url() . '/index/siteblog-post-action/id.' . $vals['post'] . '/title.' . siteblog_filter_link_title($title), 'user_ip' => $_SERVER['REMOTE_ADDR'], 'user_agent' => $_SERVER['HTTP_USER_AGENT']);
$akismet = new Akismet(site_url(), $ak, $comment);
if (!$akismet->errorsExist()) {
// no errors
if ($akismet->isSpam()) {
// akismet says spam
$title = db_shift('select subject from siteblog_post where id = ?', $vals['post']);
db_execute('insert into siteblog_akismet values (null, ?, now(), ?, ?, ?, ?, ?, ?)', $vals['post'], $comment['author'], $comment['email'], $comment['website'], $comment['user_ip'], $comment['user_agent'], $comment['body']);
header('Location: ' . site_prefix() . '/index/siteblog-post-action/id.' . $vals['post'] . '/title.' . siteblog_filter_link_title($title));
exit;
}
}
}
if (!empty($vals['post'])) {
$res = db_execute('insert into siteblog_comment (id, child_of_post, body, date, author, email, url, ip) values (null, ?, ?, now(), ?, ?, ?, ?)', $vals['post'], $vals['body'], $vals['name'], $vals['email'], $vals['url'], $_SERVER['REMOTE_ADDR']);
if (!$res) {
die(db_error());
}
$id = db_lastid();
} else {
$res = db_execute('update siteblog_comment set body = ?, author = ?, email = ?, url = ? where id = ?', $vals['body'], $vals['name'], $vals['email'], $vals['url'], $vals['_key']);
if (!$res) {
die(db_error());
}
$id = $vals['_key'];
$vals['post'] = db_shift('select child_of_post from siteblog_comment where id = ?', $vals['_key']);
}
$title = db_shift('select subject from siteblog_post where id = ?', $vals['post']);
header('Location: ' . site_prefix() . '/index/siteblog-post-action/id.' . $vals['post'] . '/title.' . siteblog_filter_link_title($title) . '#siteblog-comment-' . $id);
exit;
}
示例5: akismet_check_submit
function akismet_check_submit(&$vars)
{
if (phpnum() >= 5) {
include akismet_lib_path . 'Akismet.class_5.php';
$x = $x['linkres'];
$user = new User();
$user->id = $x->author;
$user->read();
$akismet = new Akismet(my_base_url . my_pligg_base, get_misc_data('wordpress_key'));
$akismet->setCommentAuthor($user->username);
$akismet->setCommentAuthorEmail($user->email);
$akismet->setCommentAuthorURL($x->url);
$akismet->setCommentContent($x->content);
$akismet->setPermalink(getmyurl('story', $x->id));
if ($akismet->isCommentSpam()) {
// store the comment but mark it as spam (in case of a mis-diagnosis)
$spam_links = get_misc_data('spam_links');
if ($spam_links != '') {
$spam_links = unserialize(get_misc_data('spam_links'));
} else {
$spam_links = array();
}
$spam_links[] = $x->id;
misc_data_update('spam_links', serialize($spam_links));
totals_adjust_count($x->status, -1);
totals_adjust_count('discard', 1);
$x->status = 'discard';
} else {
// echo 'not spam';
}
} else {
include akismet_lib_path . 'Akismet.class_4.php';
$x = $vars['linkres'];
$user = new User();
$user->id = $x->author;
$user->read();
$story['author'] = $user->username;
$story['email'] = $user->email;
$story['website'] = $x->url;
$story['body'] = $x->content;
$story['permalink'] = getmyurl('story', $x->id);
$story['user_ip'] = $user->extra_field['user_lastip'];
$akismet = new Akismet(my_base_url . my_pligg_base, get_misc_data('wordpress_key'), $story);
// test for errors
if ($akismet->errorsExist()) {
// returns true if any errors exist
if ($akismet->isError('AKISMET_INVALID_KEY')) {
// echo 'invalid key';
} elseif ($akismet->isError('AKISMET_RESPONSE_FAILED')) {
// echo 'response failed';
} elseif ($akismet->isError('AKISMET_SERVER_NOT_FOUND')) {
// echo 'server not found';
}
} else {
// No errors, check for spam
if ($akismet->isSpam()) {
// returns true if Akismet thinks the comment is spam
$spam_links = get_misc_data('spam_links');
if ($spam_links != '') {
$spam_links = unserialize(get_misc_data('spam_links'));
} else {
$spam_links = array();
}
$spam_links[] = $x->id;
misc_data_update('spam_links', serialize($spam_links));
} else {
// echo 'not spam';
}
}
}
}
示例6: explode
$errors[] = 'formmail_error_text_too_long';
}
if (mb_strlen($subject, CHARSET) > $settings['email_subject_maxlength']) {
$errors[] = 'formmail_error_subj_too_long';
}
if (empty($errors)) {
// Akismet spam check:
if ($settings['akismet_key'] != '' && $settings['akismet_mail_check'] == 1) {
#require('./cms/modules/akismet/akismet.class.php');
$mail_parts = explode("@", $email);
$check_mail['author'] = $mail_parts[0];
$check_mail['email'] = $email;
$check_mail['body'] = $message;
$akismet = new Akismet(BASE_URL, $settings['akismet_key'], $check_mail);
// test for errors
if ($akismet->errorsExist()) {
if ($akismet->isError(AKISMET_INVALID_KEY)) {
$errors[] = 'akismet_error_api_key';
} elseif ($akismet->isError(AKISMET_RESPONSE_FAILED)) {
$errors[] = 'akismet_error_connection';
} elseif ($akismet->isError(AKISMET_SERVER_NOT_FOUND)) {
$errors[] = 'akismet_error_connection';
}
} else {
// No errors, check for spam
if ($akismet->isSpam()) {
$errors[] = 'akismet_spam_suspicion';
}
}
}
// End Akismet spam check:
示例7: wassupAppend
//.........这里部分代码省略.........
}
}
}
//#lastly check for comment spammers using Akismet API
//# Note: this causes "header already sent" errors in some Wordpress configurations
if ($spam == 0) {
$akismet_key = get_option('wordpress_api_key');
$akismet_class = dirname(__FILE__).'/lib/akismet.class.php';
if (file_exists($akismet_class) && !empty($akismet_key)) {
$comment_user_email = utf8_encode($_COOKIE['comment_author_email_'.COOKIEHASH]);
$comment_user_url = utf8_encode($_COOKIE['comment_author_url_'.COOKIEHASH]);
include($akismet_class);
// load array with comment data
$Acomment = array(
'author' => $comment_user,
'email' => $comment_user_email,
'website' => $comment_user_url,
'body' => $_POST["comment"],
'permalink' => $urlRequested,
'user_ip' => $ipAddress,
'user_agent' => $userAgent
);
// instantiate an instance of the class
$akismet = new Akismet($wpurl, $akismet_key, $Acomment);
// Check if it's spam
if ( $akismet->isSpam() ) {
$spam = 1;
$spamresult = $spam;
}
// test for errors
if($akismet->errorsExist()) {
//#error means don't save result in cookie
unset($spamresult);
}
} //end if file_exists(akismet_class)
} //end if $spam == 0
} //end else $spamresult
} //end if wassup_spam == 1
} //end if wassup_spamcheck == 1
//identify hacker/bad activity attempts and assign spam=3
if ($spam == 0 && $hackercheck) {
if (is_admin() || stristr($urlRequested,"/wp-content/plugins")!==FALSE || stristr($urlRequested,"/wp-admin/")!== FALSE) {
$spam=3;
}
}
// Personally used to debug
if ($current_user->user_email == "michele@befree.it") {
}
//## Final exclusion control is spam...
if ($spam == 0 OR ($wassup_options->wassup_spam == 1 AND $spam == 1) OR ($wassup_options->wassup_refspam == 1 AND $spam == 2)) {
/* // #save spam results in session...
if (isset($spamresult)) {
@session_start(); //required to access $_SESSION
$_SESSION['spamresult'] = $spamresult;
@session_write_close();
}
*/
// #Record visit in wassup tables...
示例8: is_spam_akismet
private function is_spam_akismet($text)
{
global $config, $user;
if (strlen($config->get_string('comment_wordpress_key')) > 0) {
$comment = array('author' => $user->name, 'email' => $user->email, 'website' => '', 'body' => $text, 'permalink' => '');
$akismet = new Akismet($_SERVER['SERVER_NAME'], $config->get_string('comment_wordpress_key'), $comment);
if ($akismet->errorsExist()) {
return false;
} else {
return $akismet->isSpam();
}
}
return false;
}
示例9: is_spam_akismet
/**
* @param string $text
* @return bool
*/
private function is_spam_akismet($text)
{
global $config, $user;
if (strlen($config->get_string('comment_wordpress_key')) > 0) {
$comment = array('author' => $user->name, 'email' => $user->email, 'website' => '', 'body' => $text, 'permalink' => '');
# akismet breaks if there's no referrer in the environment; so if there
# isn't, supply one manually
if (!isset($_SERVER['HTTP_REFERER'])) {
$comment['referrer'] = 'none';
log_warning("comment", "User '{$user->name}' commented with no referrer: {$text}");
}
if (!isset($_SERVER['HTTP_USER_AGENT'])) {
$comment['user_agent'] = 'none';
log_warning("comment", "User '{$user->name}' commented with no user-agent: {$text}");
}
$akismet = new Akismet($_SERVER['SERVER_NAME'], $config->get_string('comment_wordpress_key'), $comment);
if ($akismet->errorsExist()) {
return false;
} else {
return $akismet->isSpam();
}
}
return false;
}
示例10: ajaxSubmitReply
//.........这里部分代码省略.........
if (DiscussRecaptcha::isRequired()) {
$obj = DiscussRecaptcha::recaptcha_check_answer($config->get('antispam_recaptcha_private'), $_SERVER['REMOTE_ADDR'], $post['recaptcha_challenge_field'], $post['recaptcha_response_field']);
if (!$obj->is_valid) {
$output = array();
$output['message'] = JText::_('COM_EASYDISCUSS_POST_INVALID_RECAPTCHA_RESPONSE');
$output['type'] = 'error.captcha';
echo $this->_outputJson($output);
return false;
}
} else {
if ($config->get('antispam_easydiscuss_captcha')) {
$runCaptcha = DiscussHelper::getHelper('Captcha')->showCaptcha();
if ($runCaptcha) {
$response = JRequest::getVar('captcha-response');
$captchaId = JRequest::getInt('captcha-id');
$discussCaptcha = new stdClass();
$discussCaptcha->captchaResponse = $response;
$discussCaptcha->captchaId = $captchaId;
$state = DiscussHelper::getHelper('Captcha')->verify($discussCaptcha);
if (!$state) {
$output = array();
$output['message'] = JText::sprintf('COM_EASYDISCUSS_INVALID_CAPTCHA');
$output['type'] = 'error';
echo $this->_outputJson($output);
return false;
}
}
}
}
if ($config->get('antispam_akismet') && $config->get('antispam_akismet_key')) {
require_once DISCUSS_CLASSES . '/akismet.php';
$data = array('author' => $my->name, 'email' => $my->email, 'website' => DISCUSS_JURIROOT, 'body' => $post['dc_reply_content'], 'alias' => '');
$akismet = new Akismet(DISCUSS_JURIROOT, $config->get('antispam_akismet_key'), $data);
if (!$akismet->errorsExist()) {
if ($akismet->isSpam()) {
$output = array();
$output['message'] = JText::_('COM_EASYDISCUSS_AKISMET_SPAM_DETECTED');
$output['type'] = 'error';
echo $this->_outputJson($output);
return false;
}
}
}
// hold last inserted ID in DB
$lastId = null;
// @rule: Bind parameters
$table->bindParams($post);
$isNew = true;
// @trigger: onBeforeSave
DiscussEventsHelper::importPlugin('content');
DiscussEventsHelper::onContentBeforeSave('reply', $table, $isNew);
if (!$table->store()) {
$output = array();
$output['message'] = JText::_('COM_EASYDISCUSS_ERROR_SUBMIT_REPLY');
$output['type'] = 'error';
echo $this->_outputJson($output);
return false;
}
// Process poll items.
if ($config->get('main_polls_replies')) {
$polls = JRequest::getVar('pollitems');
if (!is_array($polls)) {
$polls = array($polls);
}
// If the post is being edited and
// there is only 1 poll item which is also empty,
示例11: get_pingback
public function get_pingback($id)
{
$postdata = file_get_contents("php://input");
if ($postdata) {
$xml = new SimpleXMLElement($postdata);
$pingback_sender_url = strval($xml->params->param[0]->value->string);
$pingback_receiver_url = strval($xml->params->param[1]->value->string);
// get content:
if ($pingback_sender_url) {
if ($url_content = $this->_get_url_content($pingback_sender_url)) {
if (strpos($url_content[1], BASE_URL . PAGE) !== false) {
// get title:
preg_match("/<title>(.*)<\\/title>/i", $url_content[1], $matches);
if (isset($matches[1]) && trim($matches[1]) != '') {
$pingback_title = trim(filter_control_characters($matches[1]));
if (mb_strlen($pingback_title) > $this->pingback_title_maxlength) {
$pingback_title = truncate($pingback_title, $this->pingback_title_maxlength);
}
} else {
$pingback_error = true;
}
// get body:
preg_match("/<body[^>]*>(.*)<\\/body>/smi", $url_content[1], $b_matches);
if (isset($b_matches[1]) && trim($b_matches[1]) != '') {
$body = strip_tags($b_matches[1]);
$body = preg_replace("/\r\n|\r|\n/", "\n", $body);
$body_lines = explode("\n", $body);
$cleared_body = '';
foreach ($body_lines as $body_line) {
if (trim($body_line) != '') {
$cleared_body .= trim($body_line) . ' ';
}
}
$cleared_body = trim(filter_control_characters($cleared_body));
} else {
$pingback_error = true;
}
if (empty($pingback_error)) {
// not accepted words check:
$joined_message = mb_strtolower($pingback_title . ' ' . $pingback_sender_url . ' ' . $cleared_body);
$not_accepted_words = get_not_accepted_words($joined_message);
if ($not_accepted_words) {
$pingback_error = true;
}
}
if (empty($pingback_error)) {
// Akismet spam check:
if ($this->settings['akismet_key'] != '' && $this->settings['akismet_entry_check'] == 1) {
$check_posting['author'] = $pingback_title;
$check_posting['website'] = $pingback_sender_url;
$check_posting['body'] = truncate($cleared_body, 3000);
$akismet = new Akismet(BASE_URL, $this->settings['akismet_key'], $check_posting);
// test for errors
if ($akismet->errorsExist()) {
//$pingback_error = true;
if ($akismet->isError(AKISMET_INVALID_KEY)) {
$akismet_errors[] = 'akismet_error_api_key';
} elseif ($akismet->isError(AKISMET_RESPONSE_FAILED)) {
$akismet_errors[] = 'akismet_error_connection';
} elseif ($akismet->isError(AKISMET_SERVER_NOT_FOUND)) {
$akismet_errors[] = 'akismet_error_connection';
}
} else {
// No errors, check for spam
if ($akismet->isSpam()) {
// TODO:
#$pingback_error = true;
$akismet_spam = true;
#$mail = new Mail();
#$mail->send($this->settings['email'], $this->settings['email'], 'Pingback-Spam?', $check_posting['author']."\n".$check_posting['website']."\n".$check_posting['body'], $this->settings['mail_parameter']);
}
}
}
}
if (empty($pingback_error)) {
// check if url was already posted:
$dbr = Database::$entries->prepare("SELECT COUNT(*) FROM " . Database::$db_settings['comment_table'] . " WHERE comment_id=:comment_id AND type=0 AND comment='' AND email_hp=:email_hp");
$dbr->bindParam(':comment_id', $id, PDO::PARAM_INT);
$dbr->bindParam(':email_hp', $pingback_sender_url, PDO::PARAM_STR);
$dbr->execute();
$comment_count = $dbr->fetchColumn();
if ($comment_count > 0) {
$pingback_error = true;
}
}
if (empty($pingback_error)) {
$dbr = Database::$entries->prepare("INSERT INTO " . Database::$db_settings['comment_table'] . " (type, comment_id, time, ip, name, email_hp, comment) VALUES (0, :comment_id, :time, :ip, :name, :email_hp, '')");
$dbr->bindParam(':comment_id', $id, PDO::PARAM_INT);
$dbr->bindValue(':time', time(), PDO::PARAM_INT);
$dbr->bindParam(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
$dbr->bindParam(':name', $pingback_title, PDO::PARAM_STR);
$dbr->bindParam(':email_hp', $pingback_sender_url, PDO::PARAM_STR);
$dbr->execute();
// E-mail notification to admin:
if ($this->settings['comment_notification'] && $this->settings['email']) {
$this->_localization->replacePlaceholder('page', PAGE, 'pingback_notification_subject');
$this->_localization->replacePlaceholder('title', $pingback_title, 'pingback_notification_message');
$this->_localization->replacePlaceholder('url', $pingback_sender_url, 'pingback_notification_message');
$this->_localization->replacePlaceholder('link', BASE_URL . PAGE, 'pingback_notification_message');
// TODO:
//.........这里部分代码省略.........
示例12: submit
//.........这里部分代码省略.........
$tmppreviousTags = $postsTagsModel->getPostTags($id);
if (!empty($tmppreviousTags)) {
foreach ($tmppreviousTags as $previoustag) {
$previousTags[] = $previoustag->id;
}
}
if ($acl->allowed('add_tag', '0')) {
$postsTagsModel->deletePostTag($id);
}
}
// Get raw content from request as we may need to respect the html codes.
$content = JRequest::getVar('dc_reply_content', '', 'post', 'none', JREQUEST_ALLOWRAW);
if (empty($content)) {
// if there is no content from component, get from module quick question
$content = JRequest::getVar('quick_question_reply_content', '', 'post', 'none', JREQUEST_ALLOWRAW);
}
// some joomla editor htmlentity the content before it send to server. so we need
// to do the god job to fix the content.
$content = DiscussHelper::getHelper('String ')->unhtmlentities($content);
// Ensure that the posted content is respecting the correct values.
$data['dc_reply_content'] = $content;
// Cleanup alias.
$alias = DiscussHelper::wordFilter($data['title']);
$data['alias'] = DiscussHelper::getAlias($alias, 'post', $post->id);
// Detect the poster type.
$data['user_type'] = empty($my->id) ? 'guest' : 'member';
// Akismet configurations.
if ($config->get('antispam_akismet') && $config->get('antispam_akismet_key')) {
require_once DISCUSS_CLASSES . '/akismet.php';
$params = array($data['title'], $data['dc_reply_content']);
foreach ($params as $param) {
$akismet = new Akismet(DISCUSS_JURIROOT, $config->get('antispam_akismet_key'), array('author' => $my->name, 'email' => $my->email, 'website' => DISCUSS_JURIROOT, 'body' => urlencode($param), 'alias' => ''));
// Detect if there's any errors in Akismet.
if (!$akismet->errorsExist() && $akismet->isSpam()) {
DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_AKISMET_SPAM_DETECTED'), DISCUSS_QUEUE_ERROR);
$app->redirect(DiscussRouter::_('index.php?option=com_easydiscuss&view=ask', false));
return $app->close();
}
}
}
// Get previous status before binding.
$prevPostStatus = $post->published;
// If post is being edited, do not change the owner of the item.
if (!$post->id) {
$data['user_id'] = !$post->user_id ? $my->id : $post->user_id;
}
// Check permission to modify assignee
$category = DiscussHelper::getTable('Category');
$access = $post->getAccess($category);
if ($access->canAssign()) {
$assignment = DiscussHelper::getTable('PostAssignment');
$assignment->load($post->id);
// Add new record if assignee was changed
if (array_key_exists('assignee_id', $data) && $assignment->assignee_id != $data['assignee_id']) {
$newAssignment = DiscussHelper::getTable('PostAssignment');
$newAssignment->post_id = $post->id;
$newAssignment->assignee_id = (int) $data['assignee_id'];
$newAssignment->assigner_id = (int) JFactory::getUser()->id;
if (!$newAssignment->store()) {
$ajax->fail('Storing failed');
return $ajax->send();
}
}
}
$data['content_type'] = DiscussHelper::getEditorType('question');
// Bind posted data against the table.
示例13: spamfilter
function spamfilter($comment = null)
{
global $vars, $defaultpage;
// Through if GET (Check only POST)
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
return;
}
// Through if POST is from akismet plugin (submitHam)
if (isset($vars['cmd']) && $vars['cmd'] == 'akismet') {
return;
}
// Through if in IGNORE list
$cmd = isset($vars['cmd']) ? $vars['cmd'] : (isset($vars['plugin']) ? $vars['plugin'] : 'read');
if (defined('PLUGIN_AKISMET_IGNORE_PLUGINS')) {
if (in_array($cmd, explode(',', PLUGIN_AKISMET_IGNORE_PLUGINS))) {
return;
}
}
// Through if already known he is a human
$use_authlevel = PLUGIN_AKISMET_THROUGH_IF_ENROLLEE ? ROLE_AUTH : (PLUGIN_AKISMET_THROUGH_IF_ADMIN ? ROLE_ADM_CONTENTS : 0);
if (is_human(NULL, PLUGIN_AKISMET_USE_SESSION, $use_authlevel)) {
return;
}
// Initialize $comment
if (!isset($comment)) {
// special case (now only supports edit plugin)
if ($vars['cmd'] === 'edit' || $vars['plugin'] === 'edit') {
$body = $vars['msg'];
} else {
$body = implode("\n", $vars);
}
$comment = array('author' => '', 'email' => '', 'website' => '', 'body' => $body, 'permalink' => '', 'user_ip' => $_SERVER['REMOTE_ADDR'], 'user_agent' => $_SERVER['HTTP_USER_AGENT']);
}
$is_spam = TRUE;
if (PLUGIN_AKISMET_USE_AKISMET) {
// Through if no body (Akismet recognizes as a spam if no body)
if ($comment['body'] == '') {
return;
}
// instantiate an instance of the class
$akismet = new Akismet(get_script_uri(), PLUGIN_AKISMET_API_KEY, $comment);
// test for errors
if ($akismet->errorsExist()) {
// returns TRUE if any errors exist
if ($akismet->isError('AKISMET_INVALID_KEY')) {
die_message('akismet : APIキーが不正です.');
} elseif ($akismet->isError('AKISMET_RESPONSE_FAILED')) {
//die_message('akismet : レスポンスの取得に失敗しました');
} elseif ($akismet->isError('AKISMET_SERVER_NOT_FOUND')) {
//die_message('akismet : サーバへの接続に失敗しました.');
}
$is_spam = FALSE;
// through if akismet.com is not available.
} else {
$is_spam = $akismet->isSpam();
}
if ($is_spam) {
$detail = PLUGIN_AKISMET_SPAMLOG_DETAIL ? $comment : array();
PluginAkismet::spamlog_write($vars, $detail, PLUGIN_AKISMET_SPAMLOG_FILENAME);
}
}
if ($is_spam) {
if (PLUGIN_AKISMET_RECAPTCHA_LOG) {
PluginAkismet::spamlog_write($vars, array('body' => 'hit'), LOG_DIR . 'captchalog.txt');
}
$form = PluginAkismet::get_captcha_form($vars, $comment);
// die_message('</strong>' . $form . '<strong>');
$title = $page = 'キャプチャ認証';
pkwk_common_headers();
catbody($title, $page, $form);
exit;
}
}
示例14: check_data
//.........这里部分代码省略.........
}
}
if (empty($data['name'])) {
$this->errors[] = 'comment_error_no_name';
}
if (empty($data['comment_text'])) {
$this->errors[] = 'comment_error_no_text';
}
if (mb_strlen($data['name']) > $this->name_maxlength) {
$this->errors[] = 'comment_error_name_too_long';
}
if (mb_strlen($data['email_hp']) > $this->email_hp_maxlength) {
$this->errors[] = 'comment_error_email_hp_too_long';
}
if (!empty($data['email_hp'])) {
if (strpos($data['email_hp'], ' ') !== false || strpos($data['email_hp'], '.') === false) {
$this->errors[] = 'comment_error_email_hp_invalid';
}
}
if (mb_strlen($data['comment_text']) > $this->comment_maxlength) {
$text_length = mb_strlen($data['comment_text']);
$this->errors[] = 'comment_error_text_too_long';
$this->_localization->replacePlaceholder('characters', $text_length, 'comment_error_text_too_long');
$this->_localization->replacePlaceholder('max_characters', $this->comment_maxlength, 'comment_error_text_too_long');
}
}
if (empty($this->errors)) {
if ($too_long_words = too_long_words(strip_tags($this->format_comment($data['comment_text'])), $this->word_maxlength)) {
foreach ($too_long_words as $too_long_word) {
$stripped_too_long_words[] = htmlspecialchars(mb_substr($too_long_word, 0, $this->word_maxlength)) . '...';
}
$too_long_words_listing = implode(', ', $stripped_too_long_words);
if (count($too_long_words) == 1) {
$this->errors[] = 'comment_error_too_long_word';
#$this->assign_lang_placeholder('word', $too_long_words_listing, 'comment_error_too_long_word');
$this->_localization->replacePlaceholder('word', $too_long_words_listing, 'comment_error_too_long_word');
} else {
$this->errors[] = 'comment_error_too_long_words';
#$this->assign_lang_placeholder('words', $too_long_words_listing, 'comment_error_too_long_words');
$this->_localization->replacePlaceholder('words', $too_long_words_listing, 'comment_error_too_long_words');
}
}
// check for double and repeated entries:
$dbr = Database::$entries->prepare("SELECT COUNT(*) FROM " . Database::$db_settings['comment_table'] . " WHERE time>:time AND comment_id=:comment_id AND name=:name AND email_hp=:email_hp AND comment=:comment");
$time = time() - 300;
// last 5 minutes
$dbr->bindParam(':time', $time, PDO::PARAM_INT);
$dbr->bindParam(':comment_id', $this->comment_id, PDO::PARAM_INT);
$dbr->bindParam(':name', $data['name'], PDO::PARAM_STR);
$dbr->bindParam(':email_hp', $data['email_hp'], PDO::PARAM_STR);
$dbr->bindParam(':comment', $data['comment_text'], PDO::PARAM_STR);
$dbr->execute();
if ($dbr->fetchColumn() > 0) {
$this->errors[] = 'comment_error_entry_exists';
}
if ($this->prevent_repeated_posts_minutes > 0) {
$dbr = Database::$entries->prepare("SELECT COUNT(*) FROM " . Database::$db_settings['comment_table'] . " WHERE time>:time AND comment_id=:comment_id AND ip=:ip");
$time = time() - $this->prevent_repeated_posts_minutes * 60;
$dbr->bindParam(':time', $time, PDO::PARAM_INT);
$dbr->bindParam(':comment_id', $this->comment_id, PDO::PARAM_INT);
$dbr->bindParam(':ip', $_SERVER["REMOTE_ADDR"], PDO::PARAM_STR);
$dbr->execute();
if ($dbr->fetchColumn() > 0) {
$this->errors[] = 'comment_error_repeated_post';
}
}
if ($save) {
// Akismet spam check:
if ($this->akismet_key != '' && $this->akismet_entry_check == 1) {
#require('./cms/modules/akismet/akismet.class.php');
$check_posting['author'] = $data['name'];
if ($data['email_hp'] != '') {
if (preg_match("/^[^@]+@.+\\.\\D{2,5}\$/", $email_hp)) {
$check_posting['email'] = $data['email_hp'];
} else {
$check_posting['website'] = $data['email_hp'];
}
}
$check_posting['body'] = $data['comment_text'];
$akismet = new Akismet(BASE_URL, $this->akismet_key, $check_posting);
// test for errors
if ($akismet->errorsExist()) {
if ($akismet->isError(AKISMET_INVALID_KEY)) {
$this->errors[] = 'akismet_error_api_key';
} elseif ($akismet->isError(AKISMET_RESPONSE_FAILED)) {
$this->errors[] = 'akismet_error_connection';
} elseif ($akismet->isError(AKISMET_SERVER_NOT_FOUND)) {
$this->errors[] = 'akismet_error_connection';
}
} else {
// No errors, check for spam
if ($akismet->isSpam()) {
$this->errors[] = 'akismet_spam_suspicion';
}
}
}
}
// end if($save)
}
}