Здравствуйте, скачал капчу с сайта капча.ру как я понял код Код (Text): <?php session_start(); ?> <form action="" method="post"> <p>Enter text shown below:</p> <p><img src="./?<?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']); ?> нужно вставлять в свой например индекс файл Как я понял каптча должна быть распакована в папку с моим файлом, с тем, в который я и собираюсь вставлять этот код А что мне делать с индекс файлом который был в папке? Он нужен вообще? Можете дать пару советов как это прицепить к моему индексу, вот мой index.php например, потом у меня данные будут идти в мой обработчик index.php Код (Text): <html> <form action = "handler.php" method="POST"> Enter your name *: <input type="text" name="name" maxlength="30" size="25"><br> Enter your email *: <input type="text" name="email" maxlength="30" size="30"><br> Homepage:<input type="text" name="homepage" maxlength="30" size="30"><br> Enter your msg *(не более 100 символов)<br> <textarea name="msg" cols="40" rows=10 maxlength="100" ></textarea><br><br> <input type="submit" name="submit" value="Отправить" <br> </form> </html> <?php include ("mysql_connect.php"); $select = mysql_query(" SELECT * FROM `gb` ") or die ("Could not select from table".mysql_error()); while ($s= mysql_fetch_assoc($select)) { //тело цикла, тут например: echo "Запись №: ".$s['ID']."<br>"; echo "Имя: ".$s['name']."<br>"; echo "Email адрес: ".$s['email']."<br>"; echo "Homapage: <a href=http://".$s['homepage']." target=blank>".$s['homepage']."</a><br>"; echo "Сообщение: ".$s['text']."<br>"; echo "Сообщение добавлено: ".$s['time']."<br><hr>"; } ?> Может я что то неправильно делаю? :cry: Спасибо
Вставляешь в свою форму где-нибудь внизу чуть выше сабмита PHP: <p>Enter text shown below:</p> <p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" name="keystring"></p> и перед обработкой формы в handler.php делаешь проверку на PHP: if(count($_POST)>0){ if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){а вот тут сама обработка} else {echo ("[b]Боты Атакуют!!![/b]")} Ну и после этого PHP: unset($_SESSION['captcha_keystring']); А вот что делать с index.php который был в папке... ну откуда мне знать. Есть несколько вариантов. 1. Почитай его что ли и посмотри как там каптча подключается. 2. Не читай. Сотри сразу. 3. Распечатай и повесь на стенку в рамочке. ...
Как бы всё сделал примерно как подсказал karakh , всё равно выкидывает меня на страницу ту которая else, то есть код постоянно введён неверный, хотя я вводил много раз всё правильно. может я что то неправильно подключил? вот мой index.php PHP: [i]<?php Error_reporting(E_ALL); session_start(); ?>[/i]<html> <body> <form action = "handler.php" method="POST"> <p><center><h2>Поля отмеченные <b>*</b> обязательны для заполнения</h2></center></p> Enter your name *: <input type="text" name="name" maxlength="30" size="25"><br> Enter your email *: <input type="text" name="email" maxlength="30" size="30"><br> Homepage:<input type="text" name="homepage" maxlength="30" size="30"><br> Enter your msg *(не более 100 символов)<br> <textarea name="msg" cols="40" rows=10 maxlength="100" ></textarea><br><br> <!--kcaptcha--> <p>Введите код подтверждения:</p> <p><img src="./kcaptcha?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" name="keystring"></p> <!--//////kcaptcha--> <p><input type="submit" name="submit" value="Отправить"> <input type="reset" value="Очистить форму"></p> <br> </form> </body> </html> а вот обработчик: PHP: <?php Error_reporting(E_ALL); session_start(); if(count($_POST)>0){ if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){ // handler начинается от сюда //Redirect_404 $relative_url="index.php"; $relative_404="404.php"; $redir_404=header("Location: [url=http://]http://[/url]".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']) ."/".$relative_404); include ("mysql_connect.php"); $create_table= mysql_query(" CREATE TABLE IF NOT EXISTS `gb` ( `ID` int(11) NOT NULL auto_increment, `name` text NOT NULL, `email` text NOT NULL, `homepage` text NOT NULL, `text` text NOT NULL, `time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`ID`) ); ") or die ("Can not create table".mysql_error()); if ($_POST['name'] == "") { header("Location: [url=http://]http://[/url]".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']) ."/".$relative_url); die(""); } if ( $_POST['email'] == "" ){ $redir_404; die(""); } if ( $_POST['msg'] == "" ){ header("Location: [url=http://]http://[/url]".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']) ."/".$relative_url); die(""); } if (IsSet($_REQUEST['submit']) & !empty($_REQUEST['submit'])){ $name=$_POST['name']; $email=$_POST['email']; $homepage=$_POST['homepage']; $msg=$_POST['msg']; $name=htmlspecialchars($name); if(strlen($name) >= 30 ) { $name=substr($name,0,30); } $email=trim($email); if(strlen($email) >= 30 ) { $email=substr($email,0,30); } $preg_match=preg_match ('/^[A-Z0-9]+@[A-Z0-9]+\.[A-Z]{2,6}$/i',$email); if(strlen($msg) >= 100 ) { $email=substr($msg,0,100); } $msg=htmlspecialchars($msg); } if ($preg_match == "1"){ $insert = mysql_query (" INSERT INTO `guest_book`.`gb` ( `ID` , `name` , `email` , `homepage` , `text` , `time` ) VALUES ( NULL , '$name' , '$email' ,'$homepage', '$msg' , CURRENT_TIMESTAMP ); ") or die ("Can't insert into table".mysql_error()); header("Location: [url=http://]http://[/url]".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']) ."/".$relative_url); } // Тут заканчивается handler } else { echo "<center><h3>Вы неверно ввели код подтверждения!</h3></center>"; echo "<center><h3><a href=\"index.php\">Перейти в гостевую книгу </a></h3></center>"; } } unset($_SESSION['captcha_keystring']); ?> Помогите пожалуйста найти проблему, благодарю
1. Сделай простенький скриптик, где вместо всего твоего обработчика стоит if (все в впорядке) {echo "ok"}else {echo "not ok"} 2. выведи на экран $_SESSION['captcha_keystring'] и $_POST['keystring'] и посмотри чему они до проверки равны. 3. где у тебя инициализируется $_SESSION['captcha_keystring']? Если isset() выдает false, то медицина бессильна. 4. отформатируй код отступами, читать невозможно. и в следующий раз пость этот самый маленький скриптик, подробности обработчика формы мне лично ни к чему.
Хорошо, я понял, буду тестить, только вот самое главное что я немогу понять Например: у меня есть index.php где записано это: Код (Text): <!--kcaptcha--> <p>Введите код подтверждения:</p> <p><img src="./kcaptcha?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" name="keystring"></p> <!--//////kcaptcha--> и есть эта проверка в обработчике handler.php: Код (Text): if(count($_POST)>0){ if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){а вот тут сама обработка} else {echo ("Боты Атакуют!!!")} Какой то код...... unset($_SESSION['captcha_keystring']); В каком из этих двух файлов , или в обеих в самом начале я должен вписывать Код (Text): session_start(); Попросту сказать в каком файле мне писать Код (Text): session_start(); ?
Я в шоке, что может случиться? Скачал архив ещё раз с сайта, распаковал в корневой каталог, пробывал даже не в корневой, в упор не работает каптча, чтобы не вводил всё время "wrong" .Даже чистил кукисы, нечего, слов просто нет :cry:
и никаких ошибок самое главное, как будто так и должно всё быть Всё работает, по крайней мере в mozilla firefox 3.0 работает, эксплоуер отказывается, что делать?