Доброе время суток!
Возникла проблема с установкой каптчи на отдельную типовую динамическую страницу.
В общем есть форма в XSL-шаблоне, вот код:
<form class="order_form" action="{/cart/shop/path}cart/" name="address" method="POST">
<b>Форма заказа</b>
<span>
<a title="Условия доставки" href="#">
Условия доставки
</a>
</span>
<table>
<tr>
<td class="sp_left">
Как к Вам обращаться:
</td>
<td>
<input class="in" name="site_users_name" type="text" value="{site_users_name}" />
</td>
</tr>
<tr>
<td class="sp_left">По какому номеру Вам можно позвонить:</td>
<td><input class="in" name="site_users_phone" type="text" value="{site_users_phone}" /></td>
</tr>
<tr>
<td class="sp_left">Адрес электронной почты:</td>
<td><input class="in" name="site_users_email" type="text" value="{site_users_email}" /></td>
</tr>
<tr>
<td class="sp_left">Адрес доставки:</td>
<td><input class="in" name="site_users_address" type="text" value="{site_users_address}" /></td>
</tr>
<tr>
<td class="sp_left1">Дополнительная информация:</td>
<td><textarea rows="0" cols="0" name="site_users_fax" value="{site_users_fax}">
<xsl:value-of disable-output-escaping="yes" select="site_users_fax"/>
</textarea></td>
</tr>
</table>
input name="step_1" type="submit" class="btn" title="Перейти к оформлению" value=" " />
<!-- <input name="step_1" value="Оформить заказ" type="submit" style="font-weight: bold"/> -->
<input name="step_1_1a" type="hidden" value="1"/>
</form>
<!-- <p>
<input name="step_1" value="Оформить заказ" type="submit" style="font-weight: bold"/>
</p> -->
<!-- Добавляем скрытое поле с указанием подшага -->
<!-- <input name="step_1_1a" type="hidden" value="1"/> -->
Код типовой динамической страницы для этой формы выглядит так:
/* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
if (isset($_POST['step_1_1a']))
{
/* Сохраняем данные о пользователе в сессию */
$external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
$external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
$external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
$external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
$external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
$external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
$external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
}
else
{
$aInfoSiteUser = $SiteUsers->GetSiteUser($site_users_id);
$external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($aInfoSiteUser['site_users_name']);
$external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($aInfoSiteUser['site_users_surname']);
$external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($aInfoSiteUser['site_users_patronymic']);
$external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($aInfoSiteUser['site_users_email']);
$external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($aInfoSiteUser['site_users_phone']);
$external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($aInfoSiteUser['site_users_fax']);
$external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($aInfoSiteUser['site_users_address']);
$external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($aInfoSiteUser['site_users_company']);
$external_propertys['site_users_postcode'] = $_SESSION['index'] = to_str($aInfoSiteUser['site_users_postcode']);
}
/* Запоминаем купон */
$_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);
Вот. Надо вставить в эту форму стандартную капчу не через модуль "Формы".
Код генерации капчи:
<?php
require_once("captcha/captcha-config.php");
class geocaptcha{
function captcha(){
require(dirname(__FILE__).'captcha/captcha-config.php');
$this->keystring='';
for($i=0;$i<$length;$i++)
$this->keystring.=$use_symbols{mt_rand(0,$use_symbols_len-1)};
$im=imagecreatefromgif(dirname(__FILE__)."captcha/captcha_fonts/back.gif");
$width = imagesx($im);
$height = imagesy($im);
$rc=mt_rand(120,140);
$font_color = imagecolorresolve($im, $rc, $rc,$rc);
$px =$margin_left;
For($i=0;$i<$length;$i++){
imagettftext($im,$font_size,0,$px, $margin_top,$font_color,dirname(__FILE__)."captcha/captcha_fonts/CARTOON8.TTF",$this->keystring[$i]);
$px+=$font_width+mt_rand($rand_bsimb_min,$rand_bsimb_max);
}
$h_y=mt_rand(0,$height);
$h_y1=mt_rand(0,$height);
imageline($im,mt_rand(0,20),$h_y,mt_rand($width-20,$width),$h_y1,$font_color);
imageline($im,mt_rand(0,20),$h_y,mt_rand($width-20,$width),$h_y1,$font_color);
$h_y=mt_rand(0,$height);
$h_y1=mt_rand(0,$height);
imageline($im,mt_rand(0,20),$h_y,mt_rand($width-20,$width),$h_y1,$font_color);
imageline($im,mt_rand(0,20),$h_y,mt_rand($width-20,$width),$h_y1,$font_color);
image_make_pomexi($im,50,80);
$rand=mt_rand(0,1);
if ($rand)$rand=-1; else $rand=1;
wave_region($im,0,0,$width,$height,$rand*mt_rand($amplitude_min,$amplitude_max),mt_rand(30,40));
header('Expires: Sat, 17 May 2008 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');
if(function_exists("imagejpeg")){
header("Content-Type: image/jpeg");
imagejpeg($im, null, $jpeg_quality);
}else if(function_exists("imagegif")){
header("Content-Type: image/gif");
imagegif($im);
}else if(function_exists("imagepng")){
header("Content-Type: image/x-png");
imagepng($im);
}
}
function getKeyString(){
return $this->keystring;
}
}
function wave_region($img, $x, $y, $width, $height,$amplitude = 4.5,$period = 30){
$mult = 2;
$img2 = imagecreatetruecolor($width * $mult, $height * $mult);
imagecopyresampled ($img2,$img,0,0,$x,$y,$width * $mult,$height * $mult,$width, $height);
for ($i = 0;$i < ($width * $mult);$i += 2)
imagecopy($img2,$img2,$x + $i - 2,$y + sin($i / $period) * $amplitude,$x + $i,$y, 2,($height * $mult));
imagecopyresampled($img,$img2,$x,$y,0,0,$width, $height,$width * $mult,$height * $mult);
imagedestroy($img2);
}
function image_make_pomexi(&$im,$size,$colch){
$max_x=imagesx($im);
$max_y=imagesy($im);
for ($i=0;$i<=$colch;$i++){
$size=mt_rand(10,$size);
$px1=mt_rand(0,$max_x);
$py1=mt_rand(0,$max_y);
$col=imagecolorresolve($im, 255, 255, 255);
$pk1=mt_rand(-1,1);
$pk2=mt_rand(-1,1);
imageline($im,$px1,$py1,$px1+$size*$pk1,$py1+$size*$pk2,$col);
}
}
?>
Форма и проверка капчи:
<?php
session_start(); ?>
<form action="" method="post">
<p>Введите текст с картинки:</p>
<p><img src="captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>">
<p><input type="text" name="keystring"><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && strtolower($_SESSION['captcha_keystring']) == strtolower($_POST['keystring'])){
echo "Правильно";
}else{
echo "Ошибка - неправильный ввод числа";
}
}
unset($_SESSION['captcha_keystring']);
?>
Еще есть вот такая штука в директории капчи:
<?php
error_reporting (E_ALL); // Установите в error_reporting (0);
/* Использование Using:
<?php session_start(); ?>
<form action="" method="post">
<p>Введите текст с картинки:</p>
<p><img src="captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input type="text" name="keystring"><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Правильно";
}else{
echo "Ошибка - неправильный ввод числа";
}
}
unset($_SESSION['captcha_keystring']);
*/
include('captcha-gen.php');
if(isset($_REQUEST[session_name()])){
session_start();
}
$captcha = new captcha();
if($_REQUEST[session_name()]){
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}
?>
Пыталась вставлять код генерации типовую динамическую страницу и туда же проверку формы. Саму форму вставляла в код XSL-шаблона, но конечно же, тут же выдалось куча ошибок.
Подскажите пожалуйста куда вставлять все это? или есть возможность подключения стандартной капчи, то как это сделать?
Документацию читала-не помогло.