Jump to content
  • 0

Помогите с каптчей


SoFuWa
 Share

Question

вот код

	<form action="/mail.php" method="post">
Ваше имя<br><input type="text" name="name" size="30"><p>
Ваш e-mail<br><input type="text" name="email" size="30"></p>
Текст сообщения:<br>
<textarea name="mess" rows="10" cols="50"></textarea>
<p>Введите код: <input type="text" name="keystring"> <img src="/captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"></p>

<input type="submit" value="Отправить сообщение">
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Correct";
}else{
echo "Не верно введён код";
}
}
unset($_SESSION['captcha_keystring']);
?>

я новичок, как сделать чтоб при верном наборе кода, отправлялось сообщение с помощью mail.php а при неверном была надпись "Не верно введён код"

причём чтоб надпись выводилось в это же окно

Edited by SoFuWa
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Весь код страницы дайте.

if(count($_POST)>0)

Смысл так проверять? Вам в самом начале нужно проверять есть ли переменные $_POST['keystring'] и $_SESSION['captcha_keystring'], если нету - выводить форму, если есть - сравнивать.

if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring'])

Раставте приоритеты, хотя я считаю такую конструкцию сильно громоздкой.

Что вы хотели добиться такой конструкцией?

<img src="/captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>">

Edited by Mot
Link to comment
Share on other sites

  • 0
причём чтоб надпись выводилось в это же окно

В это же окно можно методом ГЕТ передать.

<?php
session_start();
$name = $_GET['name'];
$email = $_GET['email'];
$mess = $_GET['mess'];
?>
<form action="" method="get">
Ваше имя<br><input type="text" name="name" size="30"><p>
Ваш e-mail<br><input type="text" name="email" size="30"></p>
Текст сообщения:<br>
<textarea name="mess" rows="10" cols="50"></textarea>
<p>Введите код: <input type="text" name="keystring"> <img src="/captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"></p>

<input type="submit" value="Отправить сообщение">
</form>
<?php
if(count($_GET)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_GET['keystring']){
echo "Код введен корректно";
}else{
echo "Не верно введён код";
}
}
unset($_SESSION['captcha_keystring']);
?>

Ну и соответственно обработчик mail.php тоже вписать в эту страницу.

Но вообще не советую юзать метод ГЕТ - это не безопасно, хотя тут бд не используется, но все же.

Edited by rus
Link to comment
Share on other sites

  • 0
Есть другие способы защиты от роботов - лучше нестандартные методы, капчи все-равно считывают.

С моей колокольни - этот способ намного уязвимие капчи.

Массив пост не трудно подделать, + значение и имена сессий в статье статические - 1 раз узнают и трындец.

Одно дело защита от спама, другое когда взламывают всю систему.

ЗЫ: нормально зделанную капчу не так легко считать.

wiki

+

"По состоянию на 2009 год ни одна из существующих компьютерных систем не приблизилась к прохождению теста." вот тут

Edited by Mot
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy