Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
contact-form-maker
/
admin
/
views
:
FMMathCaptcha.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * Class FMViewFormmakerwdmathcaptcha_fmc */ class FMViewFormmakerwdmathcaptcha_fmc extends FMAdminView_fmc { /** * Display. */ public function display() { if ( isset($_GET['action']) && esc_html($_GET['action']) == 'formmakerwdmathcaptcha' . WDFMInstance(self::PLUGIN)->plugin_postfix ) { $i = (isset($_GET["i"]) ? esc_html($_GET["i"]) : ''); $r2 = (isset($_GET["r2"]) ? (int) $_GET["r2"] : 0); $rrr = (isset($_GET["rrr"]) ? (int) $_GET["rrr"] : 0); $randNum = 0 + $r2 + $rrr; $operations_count = ((isset($_GET["operations_count"]) && (int) $_GET["operations_count"]) ? ((int) $_GET["operations_count"] > 5 ? 5 : (int) $_GET["operations_count"]) : 1); $operations = (isset($_GET["operations"]) ? str_replace('@', '+', $_GET["operations"]) : '+,-'); $operations = preg_replace('/\s+/', '', $operations); $cap_width = 2 * ($operations_count + 1) * 20 + 10; $cap_height = 26; $cap_quality = 100; $code = $this->code_generic($operations_count, $operations); WDW_FM_Library(self::PLUGIN)->start_session(); $_SESSION[$i . '_wd_arithmetic_captcha_code'] = md5($code[1]); $canvas = imagecreatetruecolor($cap_width, $cap_height); $c = imagecolorallocate($canvas, rand(150, 255), rand(150, 255), rand(150, 255)); imagefilledrectangle($canvas, 0, 0, $cap_width, $cap_height, $c); $code = $code[0]; $count = strlen($code); $color_text = imagecolorallocate($canvas, 0, 0, 0); for ( $it = 0; $it < $count; $it++ ) { $letter = $code[$it]; imagestring($canvas, 6, (10 * $it + 10), $cap_height / 4, $letter, $color_text); } for ( $c = 0; $c < 150; $c++ ) { $x = rand(0, $cap_width - 1); $y = rand(0, 29); $col = '0x' . rand(0, 9) . '0' . rand(0, 9) . '0' . rand(0, 9) . '0'; imagesetpixel($canvas, $x, $y, $col); } header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', FALSE); header('Pragma: no-cache'); header('Content-Type: image/jpeg'); imagejpeg($canvas, NULL, $cap_quality); } die(''); } /** * Code generic. * * @param array $_length * @param array $_operations * @return array */ private function code_generic( $_length = array(), $_operations = array() ) { $cap = ''; $dig = array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ); $valid_oprations = array( '+', '-', '*', '/' ); $operations_array = array_filter(explode(',', $_operations)); foreach ( $operations_array as $key => $operation ) { if ( !in_array($operation, $valid_oprations) ) { unset($operations_array[$key]); } } for ( $k = 0; $k <= $_length; $k++ ) { if ( substr($cap, -1) == '/' ) { $operations_array = array_diff($operations_array, array( '/' )); $num_divisors = $this->arrayOfNumberDivisors(substr($cap, -2, 1)); $cap .= $num_divisors[array_rand($num_divisors)]; } else { $cap .= $dig[array_rand($dig)]; } if ( $k != $_length ) { $cap .= $operations_array[array_rand($operations_array)]; } } $pass = eval('return ' . $cap . ';'); if ( $pass < 0 ) { return $this->code_generic($_length, $_operations); } $cap .= '='; $cap = implode(' ', str_split($cap)); return array( $cap, $pass ); } /** * array Of Number Divisors. * * @param int $x * @return array */ public function arrayOfNumberDivisors( $x = 0 ) { $divisors = array(); if ( $x == 0 ) { $divisors[] = rand(1, 9); } for ( $i = 1; $i <= $x; $i++ ) { if ( $x % $i == 0 ) { $divisors [] = $i; } } return $divisors; } }