Settings'; array_push( $links, $settings_link ); return $links; } function AndroCaptcha_actions() { $plugin = plugin_basename( __FILE__ ); add_filter( "plugin_action_links_$plugin", 'add_settings_link' ); add_options_page("AndroCaptcha", "AndroCaptcha Settings", 1, "andro_cap", "AndroCaptcha_admin"); } function AndroCaptcha_admin() { get_options(); include('AndroCaptcha_admin.php'); } function show_captcha() { get_options(); echo '
'; include_once('AndroCaptcha.php'); } //end of show_captcha() function check_captcha($user,$username,$password) { session_start(); if(isset($_POST['AndroCaptcha_value'])) { $cap_value=explode(",",addslashes($_POST['AndroCaptcha_value'])); $arr=$_SESSION["AndroCaptcha_value"]; if(!compare_arrays($arr,$cap_value)) { remove_action('authenticate', 'wp_authenticate_username_password', 20); $user = new WP_Error( 'denied', __("ERROR: The captcha you entered was incorrect!") ); } } $_SESSION["AndroCaptcha_value"]=get_random_array(); return $user; } function get_random_array() { $num=rand(3,6); $arr=array(); $l_index=-1; for($i=0;$i<$num;$i++) { do{ $temp=rand(1,9); }while(!check_allowed_index($l_index,$temp,$arr)); array_push($arr, $temp); $l_index=$temp; } return $arr; } if(!function_exists(check_allowed_index)) { function check_allowed_index($l_index,$index,$arr) { if($l_index===-1) return true; else { if(in_array($index, $arr)) return false; $t_i=($index-1)%3; $t_j=($index-1-$t_i)/3; $t_l_i=($l_index-1)%3; $t_l_j=($l_index-1-$t_l_i)/3; if(abs($t_i-$t_l_i)%2==0 && abs($t_j-$t_l_j)%2==0) return false; else return true; } } } if(!function_exists(compare_arrays)) { function compare_arrays($arr,$cap) { if(count($arr)!=count($cap)) return false; for($i=0;$i$options['AndroCaptcha_bg_color'], "arrow_color"=>$options['AndroCaptcha_arrow_color'], "inner_circle_color"=>$options['AndroCaptcha_inner_circle_color'], "init_circle_color"=>$options['AndroCaptcha_init_circle_color'], "outer_circle_color"=>$options['AndroCaptcha_outer_circle_color'], "line_color"=>$options['AndroCaptcha_line_color']); } else //roll back to default options { $_SESSION['options']=array( "bg_color"=>"rgb(230,184,184)", "arrow_color"=>"rgba(32,232,46,0.5)", "inner_circle_color"=>"rgb(142,53,239)", "init_circle_color"=>"rgb(154,254,255)", "outer_circle_color"=>"rgb(255,243,128)", "line_color"=>"rgba(237,225,104,0.5)"); } } ?>