Как сохранить предыдущие значение рэндома?

arimanecro

Новичок
Приветствую.

Реально ли это сделать без mysql?

PHP:
$a = rand(1, 900);
echo $a;

if(isset($_POST['submit'])) {
    if($_POST['name'] == $a) {
        echo 'correct';
    } else {
        echo 'incorrect';
    }
}
HTML:
<form method="post">
<input name="name" type="text" id="name">
<input name="submit" type="submit" id="submit">
</form>
думаю и так понятно, что после нажатия кнопки submit число в рэндоме поменяется и оно не совпадет с $_POST['name'] и выдаст incorrect.
Есть какой-то способ запомнить или другая аналогичная рэндомная функция, которая позволяет это сделать?

Спасибо.
 

Kotofey

FloodMaster.
Приветствую.

Реально ли это сделать без mysql?

PHP:
$a = rand(1, 900);
echo $a;

if(isset($_POST['submit'])) {
    if($_POST['name'] == $a) {
        echo 'correct';
    } else {
        echo 'incorrect';
    }
}
HTML:
<form method="post">
<input name="name" type="text" id="name">
<input name="submit" type="submit" id="submit">
</form>
думаю и так понятно, что после нажатия кнопки submit число в рэндоме поменяется и оно не совпадет с $_POST['name'] и выдаст incorrect.
Есть какой-то способ запомнить или другая аналогичная рэндомная функция, которая позволяет это сделать?

Спасибо.
Сохраняй в сессии к примеру число которое сгенерировал
 

arimanecro

Новичок
чтобы было понятно, это задумка для болеее "умной" капчи...

Kotofey,
не прокатит, потому что сессия или куки не будут после отправки формы, совпадать с тем значением, которое введено в поле пользователем.

Капча картинка выводится через сессию, с помощью тэга <img src="generate.php"> а как вывести строку таким образом?
 

Kotofey

FloodMaster.
чтобы было понятно, это задумка для болеее "умной" капчи...

Kotofey,
не прокатит, потому что сессия или куки не будут после отправки формы, совпадать с тем значением, которое введено в поле пользователем.

Капча картинка выводится через сессию, с помощью тэга <img src="generate.php"> а как вывести строку таким образом?
А ты не пробовал если не отправляли форму, Пункт 1 : сгенерировать значение, записать в сессию, и отдать пользователю возможность ввести значение. Пункт 2: когда пользователь отправил свое значение, достать из сессии то что у тебя храниться , сверить если не подходит возвратиться в пункт 1, если подходит идти дальше к пункту 3.
Не понял я в чем трудность...(
 

arimanecro

Новичок
я не понял что подразумевается под словом пункт? )

если ты имеешь в виду, так:

$a = rand(1, 100);
$_SESSION['res'] = $a;
if($_POST['name'] == $_SESSION['res']) {
echo 'correct';
} else { echo 'incorrect';}

а дальше что? в какой пункт 2 идти? если форма она одна на странице? :)
если не сложно объясни подробнее :rolleyes:
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
arimanecro, возьми нормальную капчу, не мучай нас)
 

Kotofey

FloodMaster.
я не понял что подразумевается под словом пункт? )

если ты имеешь в виду, так:

$a = rand(1, 100);
$_SESSION['res'] = $a;
if($_POST['name'] == $_SESSION['res']) {
echo 'correct';
} else { echo 'incorrect';}

а дальше что? в какой пункт 2 идти? если форма она одна на странице? :)
если не сложно объясни подробнее :rolleyes:
Прости, я не знаю как ещё подробнее...
 

arimanecro

Новичок
а я что прошу показать какой-то сверхумный код за который надо платить? у меня довольно элементарная задача для более ли менее опытного программиста, а если тут таковых нет, то я действительно ошибся адресом )
п.с. а для чего тогда форумы?
 

Фанат

oncle terrible
Команда форума
не прокатит, потому что сессия или куки не будут после отправки формы, совпадать с тем значением, которое введено в поле пользователем.
У тебя тепмературы нету? Эта фраза похожа на бред.
звучит как колеса такси не будут совпадать с пассажиром после того, как он выйдет
Капча картинка выводится через сессию, с помощью тэга <img src="generate.php"> а как вывести строку таким образом?
с помощью тэга <div>
 

arimanecro

Новичок
Фанат,
перед тем как говорить что это бред, протестируй свой предлагаемый код у себя на компе и выложи сюда.
Все сессии и куки, которые будут получать рэндомные значения, после отправки формы будут неправильными, так как обработка будет происходить на той же самой странице, и старые значения будут перезаписываться новыми. Поэтому обработка должна происходить на др.странице, естественно с помощью сессии.
И при чем здесь тэг див? он не поддерживает src )))
========
п.с. я уже разобрался, вспомнил про замечательное свойство тэга form -- action="", которое как раз и обрабатывает данные на др.странице.
п.с.с спасибо "программисты", сначала попробуйте обработать рэндомные данные на той же самой странице с помощью сессии и сравнить эти данные с данными пост-формы, посмотрю, что у вас получится )
 

Фанат

oncle terrible
Команда форума
Подробно разбирать этот бред я не буду, но только скажу, что у тысяч программистов миллионы капч прекрасно работают через сессию. И только у тебя - не работает. Но правы, конечно, не они, а ты :)
 

arimanecro

Новичок
правильно, графические капчи работают у всех в том числе и у меня, но задача была поставлена: вывести капчу в виде строки, а не картинки.
Когда я задал этот вопрос на forum.php.su, мне сразу же сказали, что эти значения никогда не совпадут, потому что после отправки формы они затрутся новыми и это так! А тут мне говорят про сессии...которые бесполезны при обработке данных на той же самой странице.
Поэтому все данные должны обрабатываться на другой странице (generate.php), с помощью form -- action="", а выводится через сессию на index.php
 

Фанат

oncle terrible
Команда форума
ыыыыыыы:)
первая мысль была - какие дебилы сидят на forum.php.su
но потом я подумал, что ещё не факт - с таким-то талантом ты мог их неправильно понять.

в общем, это все бред.
текстовая капча работает на том же принципе что и графическая
"затирание" чего бы то ни было - это бред воспаленного воображения
сессии не "бесполезны", а наоборот - единственный способ работать с капчей. любой.
 

arimanecro

Новичок
либо показывай код( для тебя "программиста" состряпать данный код дело 3 минут), либо все твои слова и есть бред ))
 

Фанат

oncle terrible
Команда форума
Ага, ну все правильно я понял - дебил тут только один, и он не с forum.php.su :)
Тебе там правильно написали, что если БЕЗ СЕССИИ - то действительно, не совпадет.
А дальше уже твой собственный бред про то что при использовании сессий почему-то не совпадет.
 

Фанат

oncle terrible
Команда форума
либо показывай код( для тебя "программиста" состряпать данный код дело 3 минут), либо все твои слова и есть бред ))
ахахахаха, какая очаровательная наглость :)
Может, тебе еще ключ от квартиры, где деньги лежат?
 

Фанат

oncle terrible
Команда форума
давай-давай.
делай через сессию и все у тебя получится
 
Сверху