в скрипте на проверку заполненных полей и капчи всевремя пишет, что Код подтверждения несовпадает даже когда вводиш правильный. В чём сдесь моя ошибка????
<?
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);
Или по вашему лучше не видеть ошибки,чем ваш код будет идеален?
Извини,что не по теме,просто как увидел сразу накипело
Сейчас посмотрим по теме..
Или по вашему лучше не видеть ошибки,чем ваш код будет идеален?
Извини,что не по теме,просто как увидел сразу накипело

Сейчас посмотрим по теме..
Спустя 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 введи логин!и т.д.
Понял?
а вот здесь указывается на название файла обработчика:
<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();
заносишь в переменную куда тебе нужна переадресация
потом вызываешь header()
до header() нельзя вызывать echo, printr и тд !
редирект делается с пмомщью функции 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
Да и не важно

Поставь ты!

Шучу

Спустя 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'])
Попробуй так!
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']) |

Спустя 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
что нашел в инете,то и кинул

Спустя 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
Благодарю.Интересная штука,надо покурить её!
Некорректно - вот так правильно пишется,будь грамотным!Исправь в названии темы!
Спустя 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
Вот что значит учиться самому на примерах..
Надо книжечку купить!
Вот что значит учиться самому на примерах..

Надо книжечку купить!
Спустя 1 минута, 34 секунды (26.01.2012 - 13:40) Winston написал(а):
Цитата (bob marley @ 26.01.2012 - 12:39) |
Надо книжечку купить |
Спустя 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 |
Позволяет,но я не люблю читать за компом..Я люблю лечь на диван,налить кофе и читать..А потом если найду интересный код,то реско подорвусь к компу,вылью кофе на диван,а кружкой кошку прибить!

Спустя 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 написал(а):
Всем спасибо всё работает