Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2009, 00:31   #1
sasha14486
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 23
По умолчанию ошибка в двох проверках

Столкнулся с проблемой в регистрации.Таким способом все работает,если токо будет проверятся логин на ошибки.
Так все работает
PHP код:
<?
mysql_connect
("localhost""bloguser""12345");
mysql_select_db("phpblog");


if(isset(
$_POST['submit']))
{
$err = array();

# проверям логин
if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
{
$err[] = "Логин может состоять только из букв английского алфавита и цифр";
}

if(
strlen($_POST['login']) < or strlen($_POST['login']) > 30)
{
$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
}

# проверяем, не сущестует ли пользователя с таким именем
$query mysql_query("SELECT COUNT(id) FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."'");
if(
mysql_result($query0) > 0)
{
$err[] = "Пользователь с таким логином уже существует в базе данных";
}

# Если нет ошибок, то добавляем в БД нового пользователя
if(count($err) == 0)
{
$login $_POST['login'];


# Убераем лишние пробелы и делаем двойное шифрование
$password md5(md5(trim($_POST['password'])));


mysql_query("INSERT INTO users (login, password, email) VALUES ('".$login."', '".$password."', '".$email."')");
echo 
"<meta http-equiv='Refresh' content='5; url=".$_SERVER['HTTP_REFERER']."'>";
}
else
{
print 
"<b>При регистрации произошли следующие ошибки:</b><br>";
foreach(
$err AS $error)
{
print 
$error."<br>";
}
}
}


?>
так баг
PHP код:
# проверям email
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i"$_POST['email']))
{
$err[] = "Email должен быть вида: test@test.ru";
}

if(
strlen($_POST['email']) < or strlen($_POST['email']) > 30)
{
$err[] = "email должен быть не меньше 3-х символов и не больше 20";
}
# проверяем, не сущестует ли пользователя с таким Email
$query mysql_query("SELECT COUNT(id) FROM users WHERE email='".mysql_real_escape_string($_POST['email'])."'");
if(
mysql_result($query0) > 0)
{
$err[] = "Пользователь с таким email уже существует в базе данных";
}

# Если нет ошибок, то добавляем в БД нового пользователя с емеилом
if(count($err) == 0)
{

$email $_POST['email']; 
А если еще проверять поле емеил на ошибке так как и логин то глючет.Получается так если в форму вписывать неправильный логин меньше там 3 символов то шибки идут на логин,и емеил неправильно ввести то ошибке токо пойдут на логин.А нада чтобы и там и там писалося.И как прописать для повторов чтобы не были повторные поля:email,icq,comanda.И если поля не введены то писать Вы не ввели такоето поле.Спасибо

Последний раз редактировалось sasha14486; 02.11.2009 в 14:23.
sasha14486 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Ошибка в статье = ошибка в рограмме. Alex Cones Общие вопросы Delphi 14 29.07.2009 18:17
Ошибка в Аfor i:=1 to SI do. Пишит что ошибка в SI Алексей_xXx Помощь студентам 2 29.05.2009 00:09
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44