Рассмотрим вариант, когда мы создаем форму и уже готовые плагины, позволяющие делать капчу в joomla не подходят. Ну во первых находим код капчи в интернете, какая Вам понравиться. Создаем файл php с каким-то названием вроде img.php. Обычно набор цифр капчи погружают в сесию для дальнейшей проверки. Для доступа к сессиям в joomla нам необходимо перед тем, как генерируется число для капчи подключить некоторые файлы joomla которые запускают сессию.
В joomla 1.5 это первые строки файла index.php который находится в корне сайта.
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;
/**
* CREATE THE APPLICATION
*
* NOTE :
*/
$mainframe =& JFactory::getApplication('site');
/**
* INITIALISE THE APPLICATION
*
* NOTE :
*/
// set the language
$mainframe->initialise();
В joomla 1.6 это:
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE.'/includes/defines.php';
}
require_once JPATH_BASE.'/includes/framework.php';
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
Таким образом в нашем файле с кодом капчи, который станет собственно картинкой мы сможем запустить сессию и погрузить в нее числос картинки. Вот код файла img.php с простым кодом капчи (для joomla 1.6).
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE.'/includes/defines.php';
}
require_once JPATH_BASE.'/includes/framework.php';
$mainframe =& JFactory::getApplication('site');
$mainframe--->initialise();
$r=rand(1000,9999);
$session =& JFactory::getSession();
$session->set('capcha', $r);
for($i=0;$i < 7;$i++)//разбиваем секретный код на массив чисел
$arr[$i]=substr($r,$i,1);
$im=imagecreate(80,40);//создаем картинку
imagecolorallocate($im,255,255,255);
$a=0;
for($i=0;$i < 7;$i++)//наносим код на картинку
{
$color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagestring($im,rand(2,9),$a+=15,rand(0,20),$arr[$i],$color);
}
header("Content-type: image/jpeg");
imagejpeg($im,'',100);//выводим капчу
Дальше в нашей форме выводим нашу каgчу:
Обновить цыфры
Ну и если мы хотим обновить картинку, нужно на jQuery написать такие строки(jQuery должно быть подключено)
function renew()
{
jQuery("#capcha").html("");
jQuery("#capcha").html("
");
}
?tp="+Math.random() эта вставка нужна что бы браузер не кешировал картинку
Вход
Реклама
Wayn Топливораздаточные колонки, чем просто, чертеж autocad топливораздаточная колонка.