diff options
Diffstat (limited to 'phpBB/includes/captcha/plugins/captcha_abstract.php')
| -rw-r--r-- | phpBB/includes/captcha/plugins/captcha_abstract.php | 380 | 
1 files changed, 0 insertions, 380 deletions
diff --git a/phpBB/includes/captcha/plugins/captcha_abstract.php b/phpBB/includes/captcha/plugins/captcha_abstract.php deleted file mode 100644 index 21cacd730c..0000000000 --- a/phpBB/includes/captcha/plugins/captcha_abstract.php +++ /dev/null @@ -1,380 +0,0 @@ -<?php -/** -* -* @package VC -* @version $Id$ -* @copyright (c) 2006, 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ -	exit; -} - - -/** -* This class holds the code shared by the two default 3.0.x CAPTCHAs. -* -* @package VC -*/ -class phpbb_default_captcha -{ -	var $confirm_id; -	var $confirm_code; -	var $code; -	var $seed; -	var $attempts = 0; -	var $type; -	var $solved = 0; -	var $captcha_vars = false; - -	function init($type) -	{ -		global $config, $db, $user; - -		// read input -		$this->confirm_id = request_var('confirm_id', ''); -		$this->confirm_code = request_var('confirm_code', ''); -		$refresh = request_var('refresh_vc', false) && $config['confirm_refresh']; - -		$this->type = (int) $type; - -		if (!strlen($this->confirm_id) || !$this->load_code()) -		{ -			// we have no confirm ID, better get ready to display something -			$this->generate_code(); -		} -		else if ($refresh) -		{ -			$this->regenerate_code(); -		} -	} - -	function execute_demo() -	{ -		global $user; - -		$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS)); -		$this->seed = hexdec(substr(unique_id(), 4, 10)); - -		// compute $seed % 0x7fffffff -		$this->seed -= 0x7fffffff * floor($this->seed / 0x7fffffff); - -		$captcha = new captcha(); -		define('IMAGE_OUTPUT', 1); -		$captcha->execute($this->code, $this->seed); -	} - -	function execute() -	{ -		if (empty($this->code)) -		{ -			if (!$this->load_code()) -			{ -				// invalid request, bail out -				return false; -			} -		} -		$captcha = new captcha(); -		define('IMAGE_OUTPUT', 1); -		$captcha->execute($this->code, $this->seed); -	} - -	function get_template() -	{ -		global $config, $user, $template, $phpEx, $phpbb_root_path; - -		if ($this->is_solved()) -		{ -			return false; -		} -		else -		{ -			$link = append_sid($phpbb_root_path . 'ucp.' . $phpEx,  'mode=confirm&confirm_id=' . $this->confirm_id . '&type=' . $this->type); -			$explain = $user->lang(($this->type != CONFIRM_POST) ? 'CONFIRM_EXPLAIN' : 'POST_CONFIRM_EXPLAIN', '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>'); - -			$template->assign_vars(array( -				'CONFIRM_IMAGE_LINK'		=> $link, -				'CONFIRM_IMAGE'				=> '<img src="' . $link . '" />', -				'CONFIRM_IMG'				=> '<img src="' . $link . '" />', -				'CONFIRM_ID'				=> $this->confirm_id, -				'S_CONFIRM_CODE'			=> true, -				'S_TYPE'					=> $this->type, -				'S_CONFIRM_REFRESH'			=> ($config['enable_confirm'] && $config['confirm_refresh'] && $this->type == CONFIRM_REG) ? true : false, -				'L_CONFIRM_EXPLAIN'			=> $explain, -			)); - -			return 'captcha_default.html'; -		} -	} - -	function get_demo_template($id) -	{ -		global $config, $user, $template, $phpbb_admin_path, $phpEx; - -		$variables = ''; - -		if (is_array($this->captcha_vars)) -		{ -			foreach ($this->captcha_vars as $captcha_var => $template_var) -			{ -				$variables .= '&' . rawurlencode($captcha_var) . '=' . request_var($captcha_var, (int) $config[$captcha_var]); -			} -		} - -		// acp_captcha has a delivery function; let's use it -		$template->assign_vars(array( -			'CONFIRM_IMAGE'		=> append_sid($phpbb_admin_path . 'index.' . $phpEx, 'captcha_demo=1&mode=visual&i=' . $id . '&select_captcha=' . $this->get_class_name()) . $variables, -			'CONFIRM_ID'		=> $this->confirm_id, -		)); - -		return 'captcha_default_acp_demo.html'; -	} - -	function get_hidden_fields() -	{ -		$hidden_fields = array(); - -		// this is required for posting.php - otherwise we would forget about the captcha being already solved -		if ($this->solved) -		{ -			$hidden_fields['confirm_code'] = $this->confirm_code; -		} -		$hidden_fields['confirm_id'] = $this->confirm_id; -		return $hidden_fields; -	} - -	function garbage_collect($type) -	{ -		global $db, $config; - -		$sql = 'SELECT DISTINCT c.session_id -			FROM ' . CONFIRM_TABLE . ' c -			LEFT JOIN ' . SESSIONS_TABLE . ' s ON (c.session_id = s.session_id) -			WHERE s.session_id IS NULL' . -				((empty($type)) ? '' : ' AND c.confirm_type = ' . (int) $type); -		$result = $db->sql_query($sql); - -		if ($row = $db->sql_fetchrow($result)) -		{ -			$sql_in = array(); -			do -			{ -				$sql_in[] = (string) $row['session_id']; -			} -			while ($row = $db->sql_fetchrow($result)); - -			if (sizeof($sql_in)) -			{ -				$sql = 'DELETE FROM ' . CONFIRM_TABLE . ' -					WHERE ' . $db->sql_in_set('session_id', $sql_in); -				$db->sql_query($sql); -			} -		} -		$db->sql_freeresult($result); -	} - -	function uninstall() -	{ -		$this->garbage_collect(0); -	} - -	function install() -	{ -		return; -	} - -	function validate() -	{ -		global $config, $db, $user; - -		if (empty($user->lang)) -		{ -			$user->setup(); -		} - -		$error = ''; -		if (!$this->confirm_id) -		{ -			$error = $user->lang['CONFIRM_CODE_WRONG']; -		} -		else -		{ -			if ($this->check_code()) -			{ -				// $this->delete_code(); commented out to allow posting.php to repeat the question -				$this->solved = true; -			} -			else -			{ -				$error = $user->lang['CONFIRM_CODE_WRONG']; -			} -		} - -		if (strlen($error)) -		{ -			// okay, incorrect answer. Let's ask a new question. -			$this->new_attempt(); -			return $error; -		} -		else -		{ -			return false; -		} -	} - -	/** -	* The old way to generate code, suitable for GD and non-GD. Resets the internal state. -	*/ -	function generate_code() -	{ -		global $db, $user; - -		$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS)); -		$this->confirm_id = md5(unique_id($user->ip)); -		$this->seed = hexdec(substr(unique_id(), 4, 10)); -		$this->solved = 0; -		// compute $seed % 0x7fffffff -		$this->seed -= 0x7fffffff * floor($this->seed / 0x7fffffff); - -		$sql = 'INSERT INTO ' . CONFIRM_TABLE . ' ' . $db->sql_build_array('INSERT', array( -				'confirm_id'	=> (string) $this->confirm_id, -				'session_id'	=> (string) $user->session_id, -				'confirm_type'	=> (int) $this->type, -				'code'			=> (string) $this->code, -				'seed'			=> (int) $this->seed) -		); -		$db->sql_query($sql); -	} - -	/** -	* New Question, if desired. -	*/ -	function regenerate_code() -	{ -		global $db, $user; - -		$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS)); -		$this->seed = hexdec(substr(unique_id(), 4, 10)); -		$this->solved = 0; -		// compute $seed % 0x7fffffff -		$this->seed -= 0x7fffffff * floor($this->seed / 0x7fffffff); - -		$sql = 'UPDATE ' . CONFIRM_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array( -				'code'			=> (string) $this->code, -				'seed'			=> (int) $this->seed)) . ' -				WHERE -				confirm_id = \'' . $db->sql_escape($this->confirm_id) . '\' -					AND session_id = \'' . $db->sql_escape($user->session_id) . '\''; -		$db->sql_query($sql); -	} - -	/** -	* New Question, if desired. -	*/ -	function new_attempt() -	{ -		global $db, $user; - -		$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS)); -		$this->seed = hexdec(substr(unique_id(), 4, 10)); -		$this->solved = 0; -		// compute $seed % 0x7fffffff -		$this->seed -= 0x7fffffff * floor($this->seed / 0x7fffffff); - -		$sql = 'UPDATE ' . CONFIRM_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array( -				'code'			=> (string) $this->code, -				'seed'			=> (int) $this->seed)) . ' -				, attempts = attempts + 1 -				WHERE -				confirm_id = \'' . $db->sql_escape($this->confirm_id) . '\' -					AND session_id = \'' . $db->sql_escape($user->session_id) . '\''; -		$db->sql_query($sql); -	} - -	/** -	* Look up everything we need for painting&checking. -	*/ -	function load_code() -	{ -		global $db, $user; - -		$sql = 'SELECT code, seed, attempts -			FROM ' . CONFIRM_TABLE . " -			WHERE confirm_id = '" . $db->sql_escape($this->confirm_id) . "' -				AND session_id = '" . $db->sql_escape($user->session_id) . "' -				AND confirm_type = " . $this->type; -		$result = $db->sql_query($sql); -		$row = $db->sql_fetchrow($result); -		$db->sql_freeresult($result); - -		if ($row) -		{ -			$this->code = $row['code']; -			$this->seed = $row['seed']; -			$this->attempts = $row['attempts']; -			return true; -		} - -		return false; -	} - -	function check_code() -	{ -		return (strcasecmp($this->code, $this->confirm_code) === 0); -	} - -	function delete_code() -	{ -		global $db, $user; - -		$sql = 'DELETE FROM ' . CONFIRM_TABLE . " -			WHERE confirm_id = '" . $db->sql_escape($confirm_id) . "' -				AND session_id = '" . $db->sql_escape($user->session_id) . "' -				AND confirm_type = " . $this->type; -		$db->sql_query($sql); -	} - -	function get_attempt_count() -	{ -		return $this->attempts; -	} - -	function reset() -	{ -		global $db, $user; - -		$sql = 'DELETE FROM ' . CONFIRM_TABLE . " -			WHERE session_id = '" . $db->sql_escape($user->session_id) . "' -				AND confirm_type = " . (int) $this->type; -		$db->sql_query($sql); - -		// we leave the class usable by generating a new question -		$this->generate_code(); -	} - -	function is_solved() -	{ -		if (request_var('confirm_code', false) && $this->solved === 0) -		{ -			$this->validate(); -		} -		return (bool) $this->solved; -	} - -	/** -	*  API function -	*/ -	function has_config() -	{ -		return false; -	} - -} - -?>
\ No newline at end of file  | 
