[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: срипт PHP
mihai
господа и снова проблема

итак вот скрипт
PHP
<?
session_start();

echo 
"<form форма
      </form>"
;

if (isset(
$_SESSION["captcha"]) && $_SESSION["captcha"]===$_POST["captcha"]) 
{
если форм заполнена правильно выполняем это
}

else

{
если форма не заполнена или пуста 
то

echo "Не верное контрольное число.";
}

и получается так что
echo "Не верное контрольное число.";

высвечивется всё время
подскажите что тут ещё надо вставить
чтобы "Не верное контрольное число."
появлялось только когда действительно не верно
вводили число




Спустя 9 минут, 49 секунд (25.03.2009 - 15:21) waldicom написал(а):
1. Заменить === на ==
2. Вывести $_SESSION["captcha"] и $_POST["captcha"], чтобы визуально из сравнить

Спустя 1 минута, 14 секунд (25.03.2009 - 15:23) FatCat написал(а):
Добавьте условие
PHP
if($_POST["captcha"] == "")
означающее, что поле каптчи не заполнено.

Спустя 4 часа, 28 минут, 18 секунд (25.03.2009 - 19:51) Kuliev написал(а):
Я же тебе уже писал пример в теме про каптчу

PHP
<?
// Запускаем сессию
session_start();

$form ="<form action=index.php method=POST>
<img src=captcha.php alt=Картинка /><br />
Текст на картинке: <input type=text name=captcha /><br />
<input type=submit name=submit value=Проверить />
</form>"
;

echo 
$form;

if (isset (
$_POST['submit']))
{

       if (isset(
$_SESSION['captcha']) )

           {
               
$_SESSION['captcha'] == $_POST['captcha']);
               echo 
"Текс введен верно";
            
            }else {
                        echo 
"Текст введен не верно";
                         unset(
$_SESSION["captcha"]);
                      }
}


Спустя 2 часа, 58 минут, 52 секунды (25.03.2009 - 22:50) apc написал(а):
Проверка по нажатию кнопки.. я обычно это делаю по скрытому полю

Спустя 8 часов, 45 минут, 6 секунд (26.03.2009 - 07:35) Kuliev написал(а):
Цитата (apc @ 25.03.2009 - 19:50)
Проверка по нажатию кнопки.. я обычно это делаю по скрытому полю

А какая разница, скрытое поле или нет

Спустя 2 часа, 18 минут, 12 секунд (26.03.2009 - 09:53) apc написал(а):
Скрытому поля можно передать логическое название, а самое главное логическое значение.

Спустя 3 часа, 5 минут, 48 секунд (26.03.2009 - 12:59) Kuliev написал(а):
Цитата (apc @ 26.03.2009 - 06:53)
Скрытому поля можно передать логическое название, а самое главное логическое значение.

Я имел проверку по нажатию кнопки а не про поля конкретно!

Спустя 1 час, 31 минута, 30 секунд (26.03.2009 - 14:30) mihai написал(а):
блин вообще ничего не работает mad.gif
PHP
<?php
session_start
();

echo 
"<table align='center'><tr><td>";
echo 
"<form action=forma.php method=POST>
<b>ваше имя:&nbsp;&nbsp;&nbsp;</b><input type=text size=25 name=imja><br>
<b>ваш e-mail:&nbsp;&nbsp;</b><input type=text size=25 name=email><br>
<b>ваш сайт:&nbsp;&nbsp;&nbsp;&nbsp;</b><input type=text size=25 name=url><br>
<b>текст вашего сообщения</b><br>
<textarea name=text rows=6 cols=70></textarea><br><br>
<img src='captcha.php' alt='Картинка'>
Введите текст с картинки: <input type='text' name='captcha'>
<br><br>

<input type=submit name=add value='добавить'>
<input type=reset name=reset value='отменить'>
</form>"
;


if (isset (
$_POST['submit']))
{


if (isset(
$_SESSION["captcha"]) && $_SESSION["captcha"]==$_POST["captcha"]) 
{


$csv="CSVfile.txt";

if(!
$_POST['imja']){exit ("нет имени<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['email']){exit ("нет email<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['text']){exit ("нет текста<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['url']){exit ("нет сайта<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}

$control=$_POST['control'];

$imja=$_POST['imja'];
$email=$_POST['email'];
$url=$_POST['url'];
$text=$_POST['text'];
$data=date("d.m.Y H:i:s");
$strok="|::".strip_tags($imja)."|".$data."|".strip_tags($email)."|".strip_tags($url)."|".
strip_tags($text)."|";
$strok=$strok.chr(13).chr(10);

$open=fopen($csv,"a");
fwrite($open,$strok);
fclose($open);


echo 
"Ваше сообщение добавленно.<br><a href='gostevo.php'>Вернуться на главную.";

}
else {
                        echo 
"Текст введен не верно";
                         unset(
$_SESSION["captcha"]);
                      }
}

?>

Спустя 29 минут, 33 секунды (26.03.2009 - 15:00) LRCenter написал(а):
Зачем вам вообще использовать сессии для теста Тьюринга?
Намного проще использовать сравнение с md5-отпечатком.

Спустя 18 минут, 52 секунды (26.03.2009 - 15:19) Kuliev написал(а):
LRCenter
В сессии он каптчу хранит вот и использует ее!!!

Спустя 6 минут, 22 секунды (26.03.2009 - 15:25) LRCenter написал(а):
Значение каптчи проще передавать в виде мд5-хэша в скрытом поле формы, При вводе хешировать значение введенное пользователем с каптчи и сравнивать с исходным хешем (который в скрытом поле).

Такой код написать менее геморойно, он будет более компактным, и самое главное: не нужно память сессиями занимать )))

Спустя 6 минут, 39 секунд (26.03.2009 - 15:32) Kuliev написал(а):
mihai
Вот этот кусок кода я бы сделал по другому так как у тебя в случае одной ошибки сразу останавливается скрипт!
PHP
<?
if(!
$_POST['imja']){exit ("нет имени<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['email']){exit ("нет email<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['text']){exit ("нет текста<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['url']){exit ("нет сайта<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}


Сделал бы примерно так... лови смысл!!!
PHP
<?
$err "";

//Проверяем на пустоту
if (trim(empty($_POST['emji'])) && trim(empty($_POST['email'])) && trim(empty($_POST['text'])) && trim(empty($_POST['url'])))
{
         
$err .= "Введены не все данные или Не заполнены обязательные поля";
}

// Проверяем есть ли ошибки для вывода на экран

if ($err != "")
{
  
// посылаем заголовок серверу для перехода на страницу
  
header ("Location: gostevo.php");
  exit();   

}else{

 
// Если все ОК то записываем данные или еще что нибудь
}






Как то так, хотя не факт

А вот передавать переменную $err это дело хозяйское, можешь Гетом можешь через сессии или еще как!!

Спустя 1 час, 18 минут (26.03.2009 - 16:50) mihai написал(а):
это всё надо заново переделвать я не справлюсь
sad.gif
так гостевая работает нормально,
но без капчи гостевая нафиг не нужна
а с капчой работает плохо

дело в том что вся проблема в срипте капчи
который работает с применением session_start();
это скрипт я взял из интернета, сам я токое ещё не умею делать

в общем проблема в том
как вписать капчу в скрипт гостевой книги

Спустя 2 минуты, 12 секунд (26.03.2009 - 16:52) Kuliev написал(а):
Цитата (mihai @ 26.03.2009 - 13:50)
это всё надо заново переделвать я не справлюсь
sad.gif
так гостевая работает нормально,
но без капчи гостевая нафиг не нужна
а с капчой работает плохо

дело в том что вся проблема в срипте капчи
который работает с применением session_start();
это скрипт я взял из интернета, сам я токое ещё не умею делать

в общем проблема в том
как вписать капчу в скрипт гостевой книги

HTML
<img src="captcha.php">


Спустя 34 секунды (26.03.2009 - 16:53) Kuliev написал(а):
Скорей всего у тебя проблема с заголовками!

Спустя 9 минут, 10 секунд (26.03.2009 - 17:02) Kuliev написал(а):
Вот тебе простой пример каптчи, там ничего сложного нет!
Попробуй разобраться как она работает
PHP
<?php
 
#****************************************
 #     Сaptcha :: Autor Kuliev Aleksey
 #***************************************
// Запускаем сессию
 
session_start();

// Сколько символов будем выводить на картинке
$numbers 4;

// Массив цифр, можно и буквы добать
$number = array (0,1,2,3,4,5,6,7,8,9);

// Прогоняем цикл 4 раза
for ($i 0$i $numbers$i++)
{

// Шафлим массив и берем из него 0 элемент
shuffle($number);

// создаем другой масив с выбранными элементами (цифрами)
$capt[] = $number[0];
}
// Переводим массив в строку
$capt_key_str implode('',$capt); 

// Записываем каптчу в сессию
$_SESSION['captcha'] = $capt_key_str;

// Открываем директорию с шрифтами
$fonts_dir opendir('font'); 

// Просматриваем директорию
while(false !== ($module readdir($fonts_dir))) 
{ if(
$module != '.' and $module != '..')
{

// Получаем список шрифтов
$fonts_array[] = $module
}
}

// Создаем картинку (холст) размером 150 * 50
 
$im imagecreate(150,50);

 
// Создаем фон, у меня он динамический
 
$black imagecolorallocate$imrand(100,255),rand(100,255),rand(100,255));

 
// Цвет текста
 
$red imagecolorallocate($im255,0,0);


 
// Выводим число на рисунок (холст)ж
 
imagettftext($im,24,0,20,50$red$fonts_array[0] ,$capt_key_str);

 
// Посылаем заголовок серверу о том что у нас картинка в формате png
 
header("Content-type: image/png");
 
imagepng($im);

 
//Освобождаем
 
imagedestroy($im);



Спустя 50 минут, 41 секунда (26.03.2009 - 17:53) mihai написал(а):
да тут три сосны -
почему не работает ?

если кнопку нажали есть переменая submit

if (isset ($_POST['submit']))
{
то идёт проверка
дальше ля ля
и делаем запись в файл
}
else
{
Текст введен не верно;
}

вот else работает
echo "Текст введен не верно";
не выводится

а первые скобки не работают
записи в файл непроизводится
НО
если убрать

if (isset ($_POST['submit']))

то запись в файл происходит
где тут может быть ошибка

PHP
if (isset ($_POST['submit']))
{


if (isset(
$_SESSION["captcha"]) && $_SESSION["captcha"]==$_POST["captcha"]) 
{
$csv="CSVfile.txt";

if(!
$_POST['imja']){exit ("нет имени<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['email']){exit ("нет email<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['text']){exit ("нет текста<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}
if(!
$_POST['url']){exit ("нет сайта<br> <a href='gostevo.php'>Вернуться на главную.</a><br>");}

$control=$_POST['control'];

$imja=$_POST['imja'];
$email=$_POST['email'];
$url=$_POST['url'];
$text=$_POST['text'];
$data=date("d.m.Y H:i:s");
$strok="|::".strip_tags($imja)."|".$data."|".strip_tags($email)."|".strip_tags($url)."|".
strip_tags($text)."|";
$strok=$strok.chr(13).chr(10);

$open=fopen($csv,"a");
fwrite($open,$strok);
fclose($open);

echo 
"Ваше сообщение добавленно.<br><a href='gostevo.php'>Вернуться на главную.";
}
else {
                        echo 
"Текст введен не верно";
                         unset(
$_SESSION["captcha"]);
                      }
}



Спустя 57 минут, 18 секунд (26.03.2009 - 18:50) Kuliev написал(а):
mihai
Только что проверял твой скрипт, ВСЕ РАБОТАЕТ!!!

ОШИБКА В ПОЛЕ <INPUT TYPE=SUBMIT NAME=ADD VALUE=Добавить>
Вернее не ошибка а имя кнопки ADD а не Submit

PHP
<?
if(isset(
$_POST['submit']))

// ЗАМЕНИ 

if(isset($_POST['add']))



Спустя 18 часов, 20 минут, 43 секунды (27.03.2009 - 13:11) mihai написал(а):
Kuliev
большое спасибо что не оставляешь и помогаешь
но
переменную Submit я написал в этом скрипте для ясности на скрипте у меня такой ошибки нет

а вот как ты умудрился проверить скрипт, для работы скрипта нужна капча, для работы капчи надо ещё два файла - они у тебя есть smile.gif

Спустя 42 минуты, 55 секунд (27.03.2009 - 13:53) Kuliev написал(а):
Цитата (mihai @ 27.03.2009 - 10:11)
Kuliev
большое спасибо что не оставляешь и помогаешь
но
переменную Submit я написал в этом скрипте для ясности на скрипте у меня такой ошибки нет

а вот как ты умудрился проверить скрипт, для работы скрипта нужна капча,  для работы капчи надо ещё два файла - они у тебя есть smile.gif

Ты выложи скрипт полностью с формой заполнения.

Каптча моя, та которую я здесь выкладывал двумя постами выше.
Для каптчи требуется шрифты, ты можешь их взять из винды и положить в папку которая указана в скрипте!


Спустя 22 часа, 35 минут, 5 секунд (28.03.2009 - 12:29) mihai написал(а):
блин точно
СПАСИБО
Kuliev
laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif
щас посмотрел действительно
не та переменная стоит

if(isset($_POST['add']))

вот баран столько времени парился
спасибо Kuliev

всё заработло
biggrin.gif biggrin.gif biggrin.gif biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.