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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 10:33   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
Вопрос Графика в PHP

На данном этапе изучения PHP я учусь работать с графикой. Столкнулся со следующей задачей.

Нужно сгенерировать случайный набор символов, и вывести его в виде изображения. Есть поле, в которе необходимо ввести указанные на изображении символы и проверить, верно ли были они введены.

Код генерации случайной строки (из пяти символов) и вывод изобрражения:

PHP код:
<?php

$string 
"abcdefghijklmnopqrstuvwxyz1234567890";

$text "";

for (
$i=0$i<5$i++)
{
   
$text .= $string{rand(135)};
}

?>

<img src="picture.php">
А вот, собственно, само изображение (picture.php):

PHP код:
<?php

$img 
imagecreatetruecolor(20040);
imagefill($img000x000000);
imagettftext($img18550300xFFFFFF"consola.ttf"$text);

header("content-type:image/png");

imagepng($img);
imagedestroy($img);

?>
Возникли 2 проблемы.

1) Второй код не читает переменную $text
2) Я ума не приложу, как можно создать форму типа: Ввёл правильно - деаем это. Ввёл неправилно - делаем другое.

Помогите, пожалуйста, советом, кто имел дело с чем то похожем. Да и вообще, на правильном ли я пути?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 28.05.2009, 15:52   #2
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
По умолчанию

Цитата:
1) Второй код не читает переменную $text
Код:
$text = "";
нет значения
Цитата:
2) Я ума не приложу, как можно создать форму типа: Ввёл правильно - деаем это. Ввёл неправилно - делаем другое.
if-else или switch-case найти можно в гугле
Jensi вне форума Ответить с цитированием
Старый 28.05.2009, 16:17   #3
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Цитата:
$text = "";
for ($i=0; $i<5; $i++)
{
$text .= $string{rand(1, 35)};
}

Переменная содержит значение. Оно прекрасно выводится оператором echo. А в изображении не отображается.

Цитата:
if-else или switch-case найти можно в гугле
Я правильно ли вас понял, нужно создать отдельный файл для проверки? Перенести с помощью сессии значение $text и с помощью GET/POST то, что ввёл пользователь? Просто хотелось бы обойтись бе сессий. Это реально?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 29.05.2009, 15:12   #4
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Цитата:
Сообщение от Linel Посмотреть сообщение
1) Второй код не читает переменную $text
2) Я ума не приложу, как можно создать форму типа: Ввёл правильно - деаем это. Ввёл неправилно - делаем другое.

Помогите, пожалуйста, советом, кто имел дело с чем то похожем. Да и вообще, на правильном ли я пути?
Путь верный, но до конца ещё далеко

1. Ваш первый код и второй код — это два разных скрипта, которые браузер запрашивает отдельно. Разумеется, второй скрипт (picture.php) ничего не знает про переменные, объявленные в первом. Делать нужно так:

В первом скрипте
PHP код:
<?php 

$text 
"";
// генерим $text...
?>

<img src="picture.php?text=<?php echo $text ?>" />
Во втором:

PHP код:
<?php

$text 
$_GET['text'];

// генерим картинку..

?>
2. Вам нужно разобраться, как работают формы и как из формы параметры передаются в php. А потом уже написать скрипт, который будет проверять корректность данных, пришедших из формы, и будет либо выводить форму ещё раз, либо говорить, что всё хорошо.

После того, как про формы почитаете, если что-нибудь будет непонятно — пишите, подскажем.

p.s. А, да, по поводу сессий. Можно обойтись без сессий, и все данные передавать через GET. но если это капча, то пользователь не должен по тому, что в ссылке написано, догадаться о том, какие буквы надо вводить. Нужно либо зашифровать загаданные буквы, либо хранить загаданные буквы в базе, а через GET передавать ID'шник из базы, а не сам текст.
SPRINTHOST.RU — вот, что я люблю ;-)

Последний раз редактировалось cronfy; 29.05.2009 в 15:16.
cronfy вне форума Ответить с цитированием
Старый 29.05.2009, 15:23   #5
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Благодарю, а с формами я попытаюсь сам разобраться
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 31.05.2009, 23:13   #6
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Цитата:
<img src="picture.php?text=<?php echo $text ?>" />
Э, крайне не советовал бы ведь код который нужно ввести уже содержится в адресе картинки - боты раскусят.
Юзайте сессии. Первый "пэйдж":
PHP код:
<img src="picture.php" /> 
ну а второй:
PHP код:
<?php session_start();
$text "";
// генерим $text...
$_SESSION['thetext']=$text;
$img imagecreatetruecolor(20040); 
imagefill($img000x000000); 
imagettftext($img18550300xFFFFFF"consola.ttf"$text); 
header("content-type:image/png"); 
imagepng($img); 
imagedestroy($img); 
?>
А потом можно в любом участке любых скриптов в течении 15-ти минут узнать код, введенный юзером:
PHP код:
<?php session_start();
echo 
$_SESSION['thetext'];
?>
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в С++ Grizzzli Помощь студентам 7 14.03.2012 23:16
php и графика kondrnastya PHP 7 12.05.2009 17:03
графика jenja Общие вопросы Delphi 0 07.05.2009 13:56
Графика Exact Паскаль, Turbo Pascal, PascalABC.NET 3 14.03.2008 18:37
Графика С++ kommunist Общие вопросы C/C++ 6 14.01.2008 15:21