Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 20:32   #1
(Sandr)
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 37
Печаль Каптча

Всем привет. Тут небольшая проблемка с каптчёй. Картинка выводится, но переменная $randgb не передаётся в индексный файл. Исправте ошибку пжл? (если можно, с комментариями)
Код:
файл chislo.php:
<?php
header ("Content-type: image/gif");
$randgb = chr(mt_rand(65, 90)).chr(mt_rand(65, 90)).chr(mt_rand(65, 90)).chr(mt_rand(65, 90));
$image = imagecreate(mt_rand(65,68), mt_rand(38,34));
$col_fon = imagecolorallocate($image, mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
$col_text = imagecolorallocate($image, 0,0,0);
$ttf = mt_rand(1,2).'.ttf';
$col_line = imagecolorallocate($image, $col_text1, $col_text2, $col_text3);
$col_line2 = imagecolorallocate($image, $col_text1, $col_text2, $col_text3);
$col_line3 = imagecolorallocate($image, mt_rand(0,250), mt_rand(0,250), mt_rand(0,250));
$x = 7;
$y = 25;
imagettftext($image, 20, 0, $x, $y, $col_text, $ttf, $randgb);
?>






Файл ввода данных и каптчи (т.е. индексный файл):

<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/connect.php';
echo '<form action="?add=addgb2" method="POST">
Имя:<br>
<input type="text" name="namegb"><br>
Сообщение:<br/>
<textarea name="textgb" cols="29" rows="4">Текст</textarea><br>
<img src="/gb/chislo.php" alt=""/><br>
Введите число:<br/>
<input type="text" name="chislogb"/><br/>
<input type="submit" value="Отправить"/>
</form>';
?>
(Sandr) вне форума Ответить с цитированием
Старый 21.09.2010, 22:38   #2
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Переменную $randgb необходимо сделать сессионной - $_SESSION['kapcha']. У Вас два запроса и связи между ними нет.
Виталий Желтяков вне форума Ответить с цитированием
Старый 25.09.2010, 01:22   #3
(Sandr)
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 37
По умолчанию

Виталий Желтяков, спасибо. Вот, немного подправил файлы, но ничего тольком не изменилось chislo.php:

<?php session_start();
header ("Content-type: image/gif");
$randgb = mt_rand(1111, 9999);
$_SESSION['randgb'] = $randgb;
$image = imagecreate(mt_rand(65,68), mt_rand(38,34));
$col_fon = imagecolorallocate($image, mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));

$col_text1 = mt_rand(0,150);
$col_text2 = mt_rand(0,150);
$col_text3 = mt_rand(0,150);

$col_text = imagecolorallocate($image, $col_text1, $col_text2, $col_text3);
$ttf = mt_rand(1,2).'.ttf';

$x = mt_rand(6, 9);
$y = mt_rand(24, 25);
imagettftext($image, 20, mt_rand(-4,4), $x, $y, $col_text, $ttf, $randgb);
imagegif($image);
?>



индекс:
<form action="?add=addgb2" method="POST">';
echo 'Имя:<br>
<input type="text" value="" name="namegb"><br>
Сообщение:<br/>
<textarea name="textgb" cols="29" rows="4">Текст</textarea><br>
<img src="/gb/chislo.php" alt=""/><br>
Введите символы с картинки выше:<br>
<input type="text" name="chislogb"/><br/>';
echo $randgb;
echo '<input type="submit" value="Отправить"/>
</form>
(Sandr) вне форума Ответить с цитированием
Старый 25.09.2010, 14:07   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от (Sandr) Посмотреть сообщение
Вот, немного подправил файлы, но ничего тольком не изменилось
Было бы странно,если бы что-то изменилось.
Вам нужно почитать про сессии и их использование(Сессии (сеансы) в PHP) - потому что принципа вы,похоже,не понимаете.

Ваш новый "индекс" - странная смесь HTML и команд PHP...

Вот примерный принцип вашей реализации - разбирайтесь:

index.php:
PHP код:
<?php
session_start
();

// сверяем число из формы с сессией
if(!empty($_POST['chislogb'])){
    if(
$_POST['chislogb'] == $_SESSION['chislo']){
        echo 
'Captcha is Valid!<br/>';
        echo 
$_POST['chislogb'] . ' = ' $_SESSION['chislo'] . '<br/>';// для наглядности))
    
}
    else{
        echo 
'Captcha is Invalid<br/>';
    }
}
$_SESSION['chislo'] = mt_rand(11119999);// создаём новое число для формы
?>

<form action="?add=addgb2" method="POST">
    Имя:<br/>
    <input type="text" value="" name="namegb"><br/>
    Сообщение:<br/>
    <textarea name="textgb" cols="29" rows="4">Текст</textarea><br/>
    <img src="chislo.php" alt=""/><br/>
    Введите символы с картинки выше:<br/>
    <input type="text" name="chislogb"/><br/>
    <input type="submit" value="Отправить"/>
</form>
chislo.php:
PHP код:
session_start();
header ("Content-type: image/gif");
$img imagecreate(mt_rand(65,68), mt_rand(38,34));
$background_color imagecolorallocate($img155255255);
$text_color imagecolorallocate($img2331491);
imagestring($img255,  $_SESSION['chislo'], $text_color);// вставляем число из сессии
imagepng($img);
imagedestroy($img); 

Последний раз редактировалось Andkorol; 25.09.2010 в 14:19.
Andkorol вне форума Ответить с цитированием
Старый 26.09.2010, 21:09   #5
(Sandr)
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 37
По умолчанию

Спасибо. Подправил всё, теперь работает)))
(Sandr) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск