[php]<h4>Регистрация</h4><br>
<form action="" method="post">
<h4>Логин:</h4>
<input type="text" name="name" value=""><br>
<h4>Пароль:</h4>
<input type="password" name="pass"><br>
<h4>Повторите пароль</h4>
<input type="password" name="repass"><br>
<h4>Email:</h4>
<input type="text" name="email" value=""><br>
<input type="submit" name=‘reg’ value="Зарегистрироваться">
</form>
<?php
if ($_POST)
{
$name = trim($_POST['name']);
$pass = trim($_POST['pass']);
$repass = trim($_POST['rerpass']);
$email = trim($_POST['email']);
$pass=md5($pass);
//Проверка логина на ошибки
$error=false;
if (empty($name))
{
$error=true;
$errortext = "Логин не введен";
}
else
{
if (strlen($name)<5 || strlen($name)>15) //проверка на длину
$error=true;
$errortext='Длина логина должна быть от 5 до 15 символов';
}
if (empty($pass))
{
$error=true;
$errortext = "Pass не введен";
}
else
{
if (strlen($pass)<5 || strlen($pass)>15) //проверка на длину
$error=true;
$errortext='Длина Pass должна быть от 5 до 15 символов';
}
if ($error)
{
echo($errortext);//Выводим текст ошибок.
}
else
{
require_once("connect.php");
$sql="INSERT INTO USERS SET name='".$name."', pass='".$pass."', email='".$email."'";
$result = mysql_query ($sql);
if (!$result) echo "Не удалось выполнить запрос по причине: ".mysql_error();
else
{
echo "Всё верно";
}
}
}
?>[/php]
Проблема в данном участке
[php]f (strlen($name)<5 || strlen($name)>15) //проверка на длину
$error=true;
$errortext='Длина логина должна быть от 5 до 15 символов';
}
if (empty($pass))
{
$error=true;
$errortext = "Pass не введен";
}
else
{
if (strlen($pass)<5 || strlen($pass)>15) //проверка на длину
$error=true;
$errortext='Длина Pass должна быть от 5 до 15 символов';
}
if ($error)
{
echo($errortext);//Выводим текст ошибок.
}[/php]
В данном случае если я жму на кнопку регистрация (поля все пустые) то выводится сообщение на экран о том что "только пароль состоит не из 5-15 символов" логин не затрагивается. Если прописываем пароль нормальный (по условию), а логин оставляем пустой - ошибка так-же не выводится. Но как только убираем вот этот кусок
if (empty($pass))
{
$error=true;
$errortext = "Pass не введен";
}
else
{
if (strlen($pass)<5 || strlen($pass)>15) //проверка на длину
$error=true;
$errortext='Длина Pass должна быть от 5 до 15 символов';
}
То выводятся все ошибки которые связаны с логином. Где и что я напутал?
Спустя 5 минут, 13 секунд (5.07.2011 - 14:33) Renden написал(а):
$name = trim($_POST['name']);
$pass = trim($_POST['pass']);
$repass = trim($_POST['rerpass']);
$email = trim($_POST['email']);
$pass = md5($pass);
//Проверка логина на ошибки
$error = false;
$errortext = '';
if (empty($name))
{
$error = true;
$errortext .= "Логин не введен";
}
if (strlen($name)<5 || strlen($name)>15)
{
$error = true;
$errortext .= 'Длина логина должна быть от 5 до 15 символов';
}
if (empty($pass))
{
$error=true;
$errortext .= "Pass не введен";
}
if (strlen($pass)<5 || strlen($pass)>15)
{
$error=true;
$errortext .='Длина Pass должна быть от 5 до 15 символов';
}
if ($error)
{
echo($errortext);//Выводим текст ошибок.
}
...
Спустя 2 минуты, 22 секунды (5.07.2011 - 14:35) Druids написал(а):
А почему в данном случае else не применим? с чем это можно свзяать?
Спустя 1 минута, 30 секунд (5.07.2011 - 14:37) Krevedko написал(а):
Цитата |
о том что "только пароль состоит не из 5-15 символов" логин не затрагивается |
ты каждый раз перетираешь предыдущую ошибку. используй конкатенацию или складывай ошибки в массив
Спустя 1 минута, 41 секунда (5.07.2011 - 14:39) Krevedko написал(а):
Цитата (Druids @ 5.07.2011 - 11:35) |
А почему в данном случае else не применим? с чем это можно свзяать? |
применим. почему нет. в коде рендена вывалит обе ошибки, относящиеся к логину, только имхо незачем это. юзай иф-елсе
Спустя 2 минуты, 33 секунды (5.07.2011 - 14:41) Renden написал(а):
Druids
Можно, креведко прав мне лень просто было:)
И я думаю лучше elseif использовать
Можно, креведко прав мне лень просто было:)
И я думаю лучше elseif использовать
Спустя 1 минута, 14 секунд (5.07.2011 - 14:42) Druids написал(а):
Цитата (Krevedko @ 5.07.2011 - 11:37) | ||
ты каждый раз перетираешь предыдущую ошибку. используй конкатенацию или складывай ошибки в массив |
Предлагаешь использовать так? я просто новичек =)
if (strlen($pass)<5 || strlen($pass)>15) and (strlen($name)<5 || strlen($name)>15) //проверка на длину
$error=true;
$errortext='Длина Pass'а и Логина должна быть от 5 до 15 символов';
Спустя 3 минуты, 26 секунд (5.07.2011 - 14:46) Renden написал(а):
Druids
он имелл виду что ты точку не используешь перед равно, или переменная с ошибками не массив.
он имелл виду что ты точку не используешь перед равно, или переменная с ошибками не массив.
Спустя 30 секунд (5.07.2011 - 14:46) Krevedko написал(а):
$errortext .= '<br>текст ошибки';
и забыл фигурные скобки. иф затронет только $error=true;
и забыл фигурные скобки. иф затронет только $error=true;
Спустя 1 минута, 17 секунд (5.07.2011 - 14:48) Krevedko написал(а):
я лично складываю в массив и использую implode, если надо выести скопом, либо элементы массива раскидываю между полями, если надо например вывести ошибку для логина возле логина, ошибку для пароля возле пароля итд
Спустя 2 минуты, 21 секунда (5.07.2011 - 14:50) Druids написал(а):
т.е. мой код с if else будет таким?
и полная копия будет и для пароля.
if (empty($name))
{
$error = true;
$errortext .= "Логин не введен";
}
else
{
(strlen($name)<5 || strlen($name)>15)
$error = true;
$errortext .= 'Длина логина должна быть от 5 до 15 символов';
}
и полная копия будет и для пароля.
Цитата |
я лично складываю в массив и использую implode, если надо выести скопом, либо элементы массива раскидываю между полями, если надо например вывести ошибку для логина возле логина, ошибку для пароля возле пароля итд |
Можно показать пример? на моём коде?
Спустя 7 минут, 55 секунд (5.07.2011 - 14:58) Krevedko написал(а):
Цитата |
т.е. мой код с if else будет таким? |
можно даже проще. вверху где-нить
$errortext = '';
это чтобы нотиса не было. и потом:
if (empty($name))
$errortext .= "Логин не введен";
elseif(strlen($name)<5 || strlen($name)>15)
$errortext .= 'Длина логина должна быть от 5 до 15 символов';}
и собсно проверка
if(!empty($errortext ))
выводим ошибки
Спустя 6 минут, 3 секунды (5.07.2011 - 15:04) Krevedko написал(а):
Цитата |
Можно показать пример? на моём коде? |
тоже самое, только выше вместо $errortext = '';
пишешь
$errortext = array();
и вместо $errortext .= ... пишешь $errortext[] = ...
проверка вместо
if(!empty($errortext ))
echo $errortext;
будет
if(count($errortext))
echo '<br>' . implode('<br>', $errortext);
Спустя 4 минуты, 39 секунд (5.07.2011 - 15:09) Druids написал(а):
Цитата (Renden @ 5.07.2011 - 11:33) |
|
Почему-то не срабатывает участок
if (empty($pass))
{
$error=true;
$errortext .= "Pass не введен";
}
т.е. 3 проверки разом срабатывают, а данная отмалчивается =(
Спустя 6 минут, 41 секунда (5.07.2011 - 15:15) Krevedko написал(а):
из-за этого
$pass = md5($pass);
$pass = md5($pass);
Спустя 6 минут, 33 секунды (5.07.2011 - 15:22) Druids написал(а):
Цитата (Krevedko @ 5.07.2011 - 12:15) |
из-за этого $pass = md5($pass); |
я знаю, что можно, как-то при отправке запроса в md5 шифровать, только не знаю как =) как это будет на моём запросе выглядеть?
$pass = md5($pass); - я так понимаю придётся удалить =)
Спустя 8 минут, 35 секунд (5.07.2011 - 15:30) Druids написал(а):
Извиняюсь, опустил просто $pass= md5($pass) в низ =)
Спустя 3 минуты, 38 секунд (5.07.2011 - 15:34) Krevedko написал(а):
ты пустоту просто шифровал ) она видимо тоже шифруется. поэтому переменная перестала быть пустотой )