[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: некорректно работает скипт
Rapuha
Помогите пожалуйста у меня никак неполучаеться, что бы скрипт заработал корректно.

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


<?
session_start (); //ВНИМАНИЕ!!!! СТРОКА session_start (); ДОЛЖНА ИДТИ В САМОМ НАЧАЛЕ ИСПОЛНЯЕМОГО ФАЙЛА
error_reporting(0);
$_SESSION['code'] = rand(1000, 9999); // Генерируюет случаейные числа от 1000 до 9999 для каптчи
?>


<html>
<HEAD>
<META
http-equiv=content-type content="text/html; charset=windows-1251">
<style>

.t{ FONT-SIZE: 14px; color: red; FONT-FAMILY: Verdana, Helvetica, Arial; }
</style>
</HEAD>
<body >

<?php

if($_POST["confirm"])
{
$error="ошибка:";
$name=$_POST["name"];
$email=$_POST["email"];
$question=$_POST["question"];
if(strlen($name)==0)
{$error.="вы не ввели ваше имя<br>";
}
if(strlen($email)==0)
{$error.="вы не ввели ваш e-mail<br>";
}
if(strlen($question)==0)
{$error.="вы не ввели вопрос<br>";
}
if (empty($_POST['code']) or empty($_SESSION['code']))
{$error.="вы не ввели код подтверждения<br>";
}
elseif ($_POST['code'] != $_SESSION['code'])
{$error.="код подтверждения несовпал";
}
if($error!="ошибка:")
{print "<center class=\"t\">$error</center> ";
}
}


?>

<form
action="index.php" method="post" name="frt" >
<table
align="center" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
Ваше имя:<br />
<input
type="text" name="name" size="40" /><br /></td>
</tr>
<tr>
<td>
Ваш e-mail:<br />
<input
type="text" name="email" size="40" /><br /></td>
</tr>
<tr>
<td>
Ваш вопрос:<br />
<textarea
name="question" cols="40" rows="10"></textarea><br /></td>
</tr>
<tr>
<td>
Код подтверждения:<br />
<input
type="text" id="code" name="code" size="4" maxlength="4">
<img
align="absmiddle" src="captcha.php"><br /></td>
</tr>
<tr>
<td><input
type="hidden" name="confirm" id="confirm" value="12345"></td>
</tr>
<tr>
<td><input
type="submit" name="submit" value="Отправить" /></td>
</tr>
</table>
</form>


<?php

if($_POST["confirm"] && $error=="ошибка:")
{print "<br><br><table align=\"center\"><td> $name $email задал вопрос:</td>";
print "<td>$question</td></table>";
}

?>



</body>
</html>




Спустя 22 минуты, 28 секунд (25.01.2012 - 15:50) inpost написал(а):
Rapuha
А ты логику посмотри?
Сгенерировали код, вывели форму. Человек нажал, страница пошла заново =>
Сгенерировался НОВЫЙ КОД, проверили на совпадение... ошибка логики.

Спустя 9 минут, 5 секунд (25.01.2012 - 15:59) bob marley написал(а):
На мое мнение,лучше error_reporting(0); заменить на error_reporting(E_ALL);
Или по вашему лучше не видеть ошибки,чем ваш код будет идеален?
Извини,что не по теме,просто как увидел сразу накипело biggrin.gif
Сейчас посмотрим по теме..

Спустя 1 минута, 37 секунд (25.01.2012 - 16:01) bob marley написал(а):
В логике ошибка!

Спустя 56 секунд (25.01.2012 - 16:02) Rapuha написал(а):
я новичёк неочень дружу ещё
подскажите как правильно раскидать код надо...

Спустя 52 секунды (25.01.2012 - 16:03) bob marley написал(а):
Сделай обработчик в отдельном файле!

Спустя 1 минута, 7 секунд (25.01.2012 - 16:04) bob marley написал(а):
Все то что генерируется отправляй по url или post тоже в обработчик.Чтобы не было такой же ошибки!

Спустя 37 секунд (25.01.2012 - 16:04) bob marley написал(а):
А можно в принципе и в сессию..а потом удалять её!

Спустя 7 минут, 38 секунд (25.01.2012 - 16:12) Rapuha написал(а):
имееться в виду вот этот скрипт в отдельный файл?? получиться же как-то неудобно что-ли..
<?php
if($_POST["confirm"])
{
$error="ошибка:";
$name=$_POST["name"];
$email=$_POST["email"];
$question=$_POST["question"];
if(strlen($name)==0)
{$error.="вы не ввели ваше имя<br>";
}
if(strlen($email)==0)
{$error.="вы не ввели ваш e-mail<br>";
}
if(strlen($question)==0)
{$error.="вы не ввели вопрос<br>";
}
if (empty($_POST['code']) or empty($_SESSION['code']))
{$error.="вы не ввели код подтверждения<br>";
}
elseif ($_POST['code'] != $_SESSION['code'])
{$error.="код подтверждения несовпал";
}
if($error!="ошибка:")
{print "<center class=\"t\">$error</center> ";
}
}


?>

Спустя 4 минуты, 4 секунды (25.01.2012 - 16:16) bob marley написал(а):
В смысле не удобно?Вообще-то положено обработчик отдельно создавать!
а вот здесь указывается на название файла обработчика:
<form action="index.php" method="post" name="frt" >
Если ты имеешь в виду не удобно тем,что переходов со страницы на страницу много придется совершать пользователям,то делай редирект(переадресацию) обратно на файл регистрации и плюс к разным видам ошибок делай определенную ссылку.например :
index.php - файл с формой регистрации
reg.php - файл обработчик
и в нем например если не ввели поле логин то делать редирект на index.php?error=nologin и прописать если $_GET['error'] равен nologin то echo введи логин!и т.д.
Понял?

Спустя 9 минут, 9 секунд (25.01.2012 - 16:25) Rapuha написал(а):
туговато
а какой командой надо делать переадресацию? а тогда ведь пользователям опять всё наново вводить придёться в случае ошибки

Спустя 3 минуты, 20 секунд (25.01.2012 - 16:29) bob marley написал(а):
можно все что они вводят(повторюсь) сохранять в сессию.
редирект делается с пмомщью функции header();
заносишь в переменную куда тебе нужна переадресация

$url = "index.php?error=nologin";


потом вызываешь header()

header("Location:$url");


до header() нельзя вызывать echo, printr и тд !

Спустя 2 минуты, 9 секунд (25.01.2012 - 16:31) bob marley написал(а):
Ты думал так легко делать регистрацию,авторизацию и тд!И то у тебя проверка поверхностная.Нужно проверять ввели ли е-майл или херню какую-то и тд!

Спустя 18 минут, 11 секунд (25.01.2012 - 16:49) bob marley написал(а):
ех я ему тут помогал,а он даже +1 в карму не добавил..ну ладно!

Спустя 5 минут, 14 секунд (25.01.2012 - 16:54) Winston написал(а):
Цитата (bob marley @ 25.01.2012 - 15:49)
а он даже +1 в карму не добавил..ну ладно!

Изменять карму может только юзер с количеством постов > 10

Спустя 4 минуты, 57 секунд (25.01.2012 - 16:59) bob marley написал(а):

Winston
Да и не важно smile.gif
Поставь ты! laugh.gif
Шучу wink.gif

Спустя 18 часов, 11 минут, 20 секунд (26.01.2012 - 11:10) Rapuha написал(а):
Цитата (bob marley @ 25.01.2012 - 13:49)
ех я ему тут помогал,а он даже +1 в карму не добавил..ну ладно!

как только десять наберу сразу +1)))
только вот ещё вопрос, если поле email необязательное, как в скрипте сделать что если ничего не введено пропускать, а проверять если введено что-то на верность ящика. Я попробовал таким способом, но мне пишет всё время о неверности ввода мыла
<?php	//Проверка подлинности заполненных полей.
if($_POST["confirm"])
{
$error="ошибка:";
$name=$_POST["name"];
//$email=$_POST["email"];
$question=$_POST["question"];
if(strlen($name)==0)
{$error.="Вы не ввели ваше имя<br>";
}
if(!preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email']))
{$error.="Вы ввели неправильный email<br>";
}
if(strlen($question)==0)
{$error.="вы не ввели вопрос<br>";
}
if (empty($_POST['code']) or empty($_SESSION['code']))
{$error.="вы не ввели код подтверждения<br>";
}
elseif ($_POST['code'] != $_SESSION['code'])
{$error.="код подтверждения несовпал";
}
if($error!="ошибка:")
{print "<center class=\"t\">$error</center> ";
}
}

?>

Спустя 2 часа, 6 минут, 31 секунда (26.01.2012 - 13:17) bob marley написал(а):
Rapuha
preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])
здесь ошибка.сейчас напишу как верно будет!




Спустя 4 минуты, 28 секунд bob marley написал(а):
preg_match("/^[A-Za-z0-9!#$%&\"*+-/=?^_"{|}~]+@[A-Za-z0-9-]+(.[A-Za-z0-9-]+)+[A-Za-z]$/", $_POST['email'])
Попробуй так!

Спустя 9 минут, 35 секунд (26.01.2012 - 13:26) Winston написал(а):
Цитата (bob marley @ 26.01.2012 - 12:21)
preg_match("/^[A-Za-z0-9!#$%&\"*+-/=?^_"{|}~]+@[A-Za-z0-9-]+(.[A-Za-z0-9-]+)+[A-Za-z]$/", $_POST['email'])

wacko.gif

Спустя 4 минуты, 1 секунда (26.01.2012 - 13:30) bob marley написал(а):
<?php
$email = "admin@rahabr.ru";
if(! preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $email))
{
echo "Не верно";
}
else
{
echo "Верно";
}

Работает,проверенно мною!



Спустя 43 секунды bob marley написал(а):
Winston
что нашел в инете,то и кинул biggrin.gif



Спустя 1 минута, 49 секунд bob marley написал(а):
Winston
Ты не в курсе кстати,раз зашла об этом речь,как вот делаются такие конструкции типа:
|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i
или может есть ссылочка где это описано!

Спустя 4 минуты, 38 секунд (26.01.2012 - 13:35) Winston написал(а):
Цитата (bob marley @ 26.01.2012 - 12:32)
Ты не в курсе кстати,раз зашла об этом речь,как вот делаются такие конструкции типа:

Спустя 16 секунд (26.01.2012 - 13:35) bob marley написал(а):
Rapuha
Некорректно - вот так правильно пишется,будь грамотным!Исправь в названии темы!




Спустя 42 секунды bob marley написал(а):
Winston
Благодарю.Интересная штука,надо покурить её!

Спустя 1 минута, 26 секунд (26.01.2012 - 13:37) Winston написал(а):
var_dump(filter_var("admin@rahabr.ru", FILTER_VALIDATE_EMAIL));

Спустя 1 минута, 55 секунд (26.01.2012 - 13:39) bob marley написал(а):
Я не знал вообще ничего про регулярные выражения=D
Вот что значит учиться самому на примерах.. dry.gif
Надо книжечку купить!

Спустя 1 минута, 34 секунды (26.01.2012 - 13:40) Winston написал(а):
Цитата (bob marley @ 26.01.2012 - 12:39)
Надо книжечку купить

А скачать религия не позволяет? http://lphp.ru/article/158.html biggrin.gif

Спустя 2 минуты, 20 секунд (26.01.2012 - 13:43) bob marley написал(а):
Цитата (Winston @ 26.01.2012 - 10:40)

Цитата (bob marley @ 26.01.2012 - 12:39)
Надо книжечку купить

А скачать религия не позволяет? http://lphp.ru/article/158.html

Позволяет,но я не люблю читать за компом..Я люблю лечь на диван,налить кофе и читать..А потом если найду интересный код,то реско подорвусь к компу,вылью кофе на диван,а кружкой кошку прибить! biggrin.gif

Спустя 1 час, 17 минут, 58 секунд (26.01.2012 - 15:01) Rapuha написал(а):
ээ ну как мне поступить с необязательным полем для ввода email, но что бы была проверка на корректность....

Спустя 1 минута, 33 секунды (26.01.2012 - 15:02) Winston написал(а):
 if(!empty($_POST['email']) && !preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email']))
{$error.="Вы ввели неправильный email<br>";
}

Спустя 11 дней, 23 часа, 22 минуты, 34 секунды (8.02.2012 - 14:25) Rapuha написал(а):
Всем спасибо всё работает
Быстрый ответ:

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