Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите вставить капчу,очень срочно нужно


Автор: ZuLLeR 14.5.2009, 17:33
Помогите вставить капчу, очень срочно нужно, есть скрипт гостувухи(давно очень пытался ее еще доделать, а теперь горит):

Код

<!--СОЗДАНИЕ ФОРМЫ-->
<html>
<head>
<title>Гостевая</title>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
     Ваше Имя:<br>
        <input type="text" name="name"><br><br>
        Ваш E-mail:<br>
        <input type="text" name="email"><br><br>
        Ваше сообщение:<br>
        <textarea rows="5" cols="30" name="message"></textarea><br>
        <input type="submit" name="send" value="OK">
</form>
<br><br>
</body>
</html>

<?php

//СОЗДАНИЕ СООБЩЕНИЯ И ОТПРАВКА ИХ В БАЗУ ДАННЫХ
require_once('./config.php');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$message = mysql_real_escape_string($_POST['message']);
$query = "INSERT INTO `guestbook` (name,email,message) VALUES ('$name','$email','$message')";
mysql_query($query, $connection) or trigger_error(mysql_error());
}

//ВЫВОД СООБЩЕНИЯ ИЗ БАЗЫ ДАННЫХ
$query = "SELECT * FROM  guestbook ORDER BY id DESC";
$res = mysql_query($query);
$i=1;
while ($table=mysql_fetch_array($res))
{
echo "<hr>";
echo "Сообщение №" .$table['id']."<br>";
echo "Имя:" .htmlspecialchars($table['name'])."<br>";
echo "E-mail:" .htmlspecialchars($table['email'])."<br>";
echo "Cообщение:" .htmlspecialchars($table['message'])."<br>";
}
?>



и сама капча, это стандартная с сайта captcha.ru,

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

Автор: ZuLLeR 14.5.2009, 17:49
или кто сможет написать простенькую капчу...я буду очень благодарен

Автор: Shark 14.5.2009, 19:44
тебе обязательно капча нужна?
вот что я делал:
Код

<tr><td width=10% class='tableH'>Подтверждение</td>
<td width=35% class='tableH'>";

//Code AntiBot1
$acceptedChars1 = '123456789';
  $max1 = strlen($acceptedChars1)-1;
  $password1 = null;
  for($i=0; $i < 2; $i++) 
  {
   $password1 .= $acceptedChars1{mt_rand(0, $max1)};
  }
$password1;

//Code AntiBot2
$acceptedChars2 = '123456789';
  $max2 = strlen($acceptedChars2)-1;
  $password2 = null;
  for($i=0; $i < 2; $i++) 
  {
   $password2 .= $acceptedChars2{mt_rand(0, $max2)};
  }
$password2;

//Выражение
print_r ("$password1+$password2");
$_SESSION['ps']=$password1 + $password2;


echo " = <input type=text size=35 name=codes><font color=red> *</font></td><td width=10% class='tableH'>
</td></tr>

Автор: ZuLLeR 15.5.2009, 10:43
у меня что то не работает этот скрипт((

Автор: Nigel 15.5.2009, 11:01
Так есть же пример в той же капче. Смотрите внимательней
Код

/* Using:

    <?php
    session_start();
    ?>
    <form action="./" method="post">
    <p>Enter text shown below:</p>
    <p><img src="PATH-TO-THIS-SCRIPT?<?php echo session_name()?>=<?php echo session_id()?>"></p>
    <p><input type="text" name="keystring"></p>
    <p><input type="submit" value="Check"></p>
    </form>
    <?php
    if(count($_POST)>0){
        if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] ==  $_POST['keystring']){
            echo "Correct";
        }else{
            echo "Wrong";
        }
    }
    unset($_SESSION['captcha_keystring']);
    ?>

*/

Автор: ZuLLeR 15.5.2009, 11:14
ладно я ша попробую интегрировать dmtYandexCaptcha_v1.0 если неполучиться помогите

Автор: Shark 15.5.2009, 12:33
Цитата

у меня что то не работает этот скрипт(( 

и что у тебя не работает??? session_start() на странице написан???сам пример отображается?

Автор: ZuLLeR 15.5.2009, 12:35
вроде все написано)))попробуй сам, если есть время, и если получиться скинь исходник

Автор: Shark 15.5.2009, 15:36
Цитата

вроде все написано)))попробуй сам, если есть время, и если получиться скинь исходник 

так это и есть исходник.. у меня он работает!!!
у тебя есть сравнение $_POST['codes'] == $_SESSION['ps'] ???? если они не равны.. то ALSE если равны то TRUE....

Автор: ZuLLeR 16.5.2009, 15:59
я что то запутался и голова не варит(((( впиши что и куда пожайлуста.

вот сам guestbook.php:

Код

<?php
    session_start();
?>
<!--СОЗДАНИЕ ФОРМЫ-->
<html>
<head>
<title>Гостевая</title>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
     Ваше Имя:<br>
        <input type="text" name="name"><br><br>
        Ваш E-mail:<br>
        <input type="text" name="email"><br><br>
        Ваше сообщение:<br>
        <textarea rows="5" cols="30" name="message"></textarea><br>
        <input type="submit" name="send" value="OK">
</form>
<br><br>
</body>
</html>

<?php

//СОЗДАНИЕ СООБЩЕНИЯ И ОТПРАВКА ИХ В БАЗУ ДАННЫХ
require_once('./config.php');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$message = mysql_real_escape_string($_POST['message']);
$query = "INSERT INTO `guestbook` (name,email,message) VALUES ('$name','$email','$message')";
mysql_query($query, $connection) or trigger_error(mysql_error());
}

//ВЫВОД СООБЩЕНИЯ ИЗ БАЗЫ ДАННЫХ
$query = "SELECT * FROM  guestbook ORDER BY id DESC";
$res = mysql_query($query);
while ($table=mysql_fetch_array($res))
{
echo "<hr>";
echo "Сообщение №" .$table['id']."<br>";
echo "Имя:" .htmlspecialchars($table['name'])."<br>";
echo "E-mail:" .htmlspecialchars($table['email'])."<br>";
echo "Cообщение:" .htmlspecialchars($table['message'])."<br>";
}
?>


Автор: Shark 16.5.2009, 18:22
Код

<?php
    session_start();
//Code AntiBot1
$acceptedChars1 = '123456789';
  $max1 = strlen($acceptedChars1)-1;
  $password1 = null;
  for($i=0; $i < 2; $i++) 
  {
   $password1 .= $acceptedChars1{mt_rand(0, $max1)};
  }
$password1;

//Code AntiBot2
$acceptedChars2 = '123456789';
  $max2 = strlen($acceptedChars2)-1;
  $password2 = null;
  for($i=0; $i < 2; $i++) 
  {
   $password2 .= $acceptedChars2{mt_rand(0, $max2)};
  }
$password2;
?>
<!--СОЗДАНИЕ ФОРМЫ-->
<html>
<head>
<title>Гостевая</title>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
     Ваше Имя:<br>
        <input type="text" name="name"><br><br>
        Ваш E-mail:<br>
        <input type="text" name="email"><br><br>
        <?php
//Выражение
print_r ("$password1+$password2");
$_SESSION['ps']=$password1 + $password2;
       echo "= <input type=text size=35 name=codes>";
         ?>
        Ваше сообщение:<br>
        <textarea rows="5" cols="30" name="message"></textarea><br>
        <input type="submit" name="send" value="OK">
</form>
<br><br>
</body>
</html>

<?php

//СОЗДАНИЕ СООБЩЕНИЯ И ОТПРАВКА ИХ В БАЗУ ДАННЫХ
require_once('./config.php');
if($_SESSION['ps'] == $_POST['codes'])
{
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$message = mysql_real_escape_string($_POST['message']);
$query = "INSERT INTO `guestbook` (name,email,message) VALUES ('$name','$email','$message')";
mysql_query($query, $connection) or trigger_error(mysql_error());
}
}
else
{ echo "Неверные ответ"; }
//ВЫВОД СООБЩЕНИЯ ИЗ БАЗЫ ДАННЫХ
$query = "SELECT * FROM  guestbook ORDER BY id DESC";
$res = mysql_query($query);
while ($table=mysql_fetch_array($res))
{
echo "<hr>";
echo "Сообщение №" .$table['id']."<br>";
echo "Имя:" .htmlspecialchars($table['name'])."<br>";
echo "E-mail:" .htmlspecialchars($table['email'])."<br>";
echo "Cообщение:" .htmlspecialchars($table['message'])."<br>";
}
?>

Автор: ZuLLeR 16.5.2009, 18:26
thx большой)

Автор: ZuLLeR 19.5.2009, 18:14
пишет постоянно что неверный ответ)))

Автор: Shark 19.5.2009, 19:56
конечно....неправильный... потому что до проверки создается новая сессия....
Код

<?php
    session_start();
//Code AntiBot1
$acceptedChars1 = '123456789';
  $max1 = strlen($acceptedChars1)-1;
  $password1 = null;
  for($i=0; $i < 2; $i++) 
  {
   $password1 .= $acceptedChars1{mt_rand(0, $max1)};
  }
$password1;

//Code AntiBot2
$acceptedChars2 = '123456789';
  $max2 = strlen($acceptedChars2)-1;
  $password2 = null;
  for($i=0; $i < 2; $i++) 
  {
   $password2 .= $acceptedChars2{mt_rand(0, $max2)};
  }
$password2;
//СОЗДАНИЕ СООБЩЕНИЯ И ОТПРАВКА ИХ В БАЗУ ДАННЫХ
require_once('./config.php');
if($_SESSION['ps'] == $_POST['codes'])
{
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$message = mysql_real_escape_string($_POST['message']);
$query = "INSERT INTO `guestbook` (name,email,message) VALUES ('$name','$email','$message')";
mysql_query($query, $connection) or trigger_error(mysql_error());
}
}
else
{ echo "Неверные ответ"; }
?>
<!--СОЗДАНИЕ ФОРМЫ-->
<html>
<head>
<title>Гостевая</title>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
     Ваше Имя:<br>
        <input type="text" name="name"><br><br>
        Ваш E-mail:<br>
        <input type="text" name="email"><br><br>
        <?php
//Выражение
print_r ("$password1+$password2");
$_SESSION['ps']=$password1 + $password2;
       echo "= <input type=text size=35 name=codes>";
         ?>
        Ваше сообщение:<br>
        <textarea rows="5" cols="30" name="message"></textarea><br>
        <input type="submit" name="send" value="OK">
</form>
<br><br>
</body>
</html>

<?php

//ВЫВОД СООБЩЕНИЯ ИЗ БАЗЫ ДАННЫХ
$query = "SELECT * FROM  guestbook ORDER BY id DESC";
$res = mysql_query($query);
while ($table=mysql_fetch_array($res))
{
echo "<hr>";
echo "Сообщение №" .$table['id']."<br>";
echo "Имя:" .htmlspecialchars($table['name'])."<br>";
echo "E-mail:" .htmlspecialchars($table['email'])."<br>";
echo "Cообщение:" .htmlspecialchars($table['message'])."<br>";
}
?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)