File: /www/wwwroot/www.cytocare.cn/wp-content/plugins/stop-registration-spam/stop_registration_spam.php
<?PHP
/*
Plugin Name: Stop Registration Spam
Plugin URI: http://www.tomroyal.com/blog/2012/04/09/stop-wordpress-registration-spam/
Description: Stop robot registrations using a custom question
Version: 1.24
Author: Tom Royal
Author URI: http://www.tomroyal.com
GPL licensed: http://www.gnu.org/licenses/gpl.html
*/
// add options
add_action( 'admin_menu', 'srs_plugin_menu' ); 
function srs_plugin_menu() {
	add_options_page( 'Stop Registration Spam Options', 'Stop Registration Spam', 'manage_options', 'stop_registration_spam_options', 'srs_plugin_options' ); 
}
function srs_plugin_options() {
	// check user has rights to change
	if ( !current_user_can( 'manage_options' ) )  {
		wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
	}
	// begin settings page
	
	// variables for the field and option names 
    $opt1_name = 'srs_captcha_q';
	$opt2_name = 'srs_captcha_a';
	$opt3_name = 'srs_captcha_h';
	
    $hidden_field_name = 'srs_submit_check';
    $data_field_name1 = 'srs_captcha_q';
	$data_field_name2 = 'srs_captcha_a';
	$data_field_name3 = 'srs_captcha_h';
    // Read in existing option values from database
    $opt1_val = get_option( $opt1_name );
	$opt2_val = get_option( $opt2_name );
	$opt3_val = get_option( $opt3_name );
    // See if the user has posted us some information
    // If they did, this hidden field will be set to 'Y'
    if( isset($_POST[ $hidden_field_name ]) && $_POST[ $hidden_field_name ] == 'Y' ) {
		if ( ! isset( $_POST['srs_opts_nonce'] ) || ! wp_verify_nonce( $_POST['srs_opts_nonce'], 'srs_submit_options' )) {
			error_log('nonce failure die');
			exit;
		} 
		else {
			// Read their posted value
			$opt1_val = $_POST[ $data_field_name1 ];
			$opt2_val = $_POST[ $data_field_name2 ];
			$opt3_val = $_POST[ $data_field_name3 ];
			// Save the posted value in the database
			update_option( $opt1_name, $opt1_val );
			update_option( $opt2_name, $opt2_val );
			update_option( $opt3_name, $opt3_val );
			// Message user..
?>
<div class="updated"><p><strong><?php _e('Thanks - your custom settings have been saved.', 'Stop Registration Spam' ); ?></strong></p></div>
<?php
		}
    }
    // Show settings editing screen
    echo '<div class="wrap">';
    // header
    echo "<h2>" . __( 'Stop Registration Spam Settings', 'Stop Registration Spam' ) . "</h2>";
    // settings form
    
    ?>
<form name="form1" method="post" action="">
<input type="hidden" name="<?php echo $hidden_field_name; ?>" value="Y">
<p>To help stop registration spam robots in their tracks, enter a question and answer that should be obvious to your visitors but baffling to a robot scanning the site automatically.</p>
<p>Keep the question short, as it needs to display in a small box. The answer should also be short, and without spaces.</p>
<p><?php _e("Question:", 'Stop Registration Spam' ); ?> 
<input type="text" name="<?php echo $data_field_name1; ?>" value="<?php echo htmlspecialchars($opt1_val); ?>" size="60">
</p>
<p><?php _e("Answer:", 'Stop Registration Spam' ); ?> 
<input type="text" name="<?php echo $data_field_name2; ?>" value="<?php echo htmlspecialchars($opt2_val); ?>" size="20">
</p>
<p><?php _e("Message to display on failure:", 'Stop Registration Spam' ); ?> 
<input type="text" name="<?php echo $data_field_name3; ?>" value="<?php echo htmlspecialchars($opt3_val); ?>" size="60">
</p>
<?php wp_nonce_field( 'srs_submit_options', 'srs_opts_nonce' ); ?>
<p class="submit">
<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
</p>
</form>
</div>
	<?php
	
	// end settings page
}
// Get settings..
$tom_custom_question_q = get_option('srs_captcha_q');
$tom_custom_question_a = get_option('srs_captcha_a');
$tom_custom_question_z = get_option('srs_captcha_h');
// in case no settings saved, defaults
if ($tom_custom_question_q == ""){
	$tom_custom_question_q = "What kind of animal is Snoopy?";	
	$tom_custom_question_a = "dog";	
	$tom_custom_question_z = "Sorry, incorrect answer. It's a three letter word.";	
}
// hooks..
add_action('register_form','tom_custom_question_f');
add_action('register_post','tom_custom_answer_f',10,3);
// end hooks..
// do question function
function tom_custom_question_f(){
 global $tom_custom_question_q;
 $html = '
 			<style type="text/css">
 					#newfield {
					background:#FBFBFB none repeat scroll 0 0;
					border:1px solid #E5E5E5;
					font-size:24px;
					margin-bottom:16px;
					margin-right:6px;
					margin-top:2px;
					padding:3px;
					width:97%;
				}
 			</style>
 				<div width="100%">
 					<p>
 						<label style="display: block; margin-bottom: 5px;">' . $tom_custom_question_q . '
 							<input type="text" name="tomcustomq" id="tomcustomq" class="input" value="'.$_POST['tomcustomq'].'" size="10" tabindex="26" />
 						</label>
 					</p>
</div>
';
echo $html;
}
// do validation
function tom_custom_answer_f($login,$email,$errors){
 global $tom_custom_question_a,$tom_custom_question_z;
   if (strtolower($_POST['tomcustomq']) != strtolower($tom_custom_question_a)){
    	$errors->add('tom_captcha_error',__($tom_custom_question_z));
   };
}
?>