|
|
|
| Регистрация, вопросы:
1. Как организовать проверку логина, чтоб был не мееньше допустим 2 символов и не больше 12
2. Как проверить наличие недопустимых символов в логине с помощью ф-ии preg_match
3. Возможно ли через оператор switch организовать проверку на дулирующей записи в БД, если да, то как
4. Правильный ли я составил шаблон проверки электронной почты
5. Что еще можно включить в код?
<?php
//включаем сессию
session_start();
//подключаем БД
include 'include/configuration.php';
//проверка переходa со страницы регистрации
if(isset($_POST['submit']))
{
//проверка введенных данных
//ошибки:
//0 - ошибок нет
//1 - не заполнено поле
//2 - поле заполнено некорректно
//3 - не совпадают пароли
//4 - такая запись уже существует
//проверка логина
switch ($_POST['login'])
{
case (!isset($_POST['login'])):
$_SESSION['login_error'] = 1;
echo $_SESSION['login_error'];
break;
//сделать проверку на уникальнсоть записи
default:
$_SESSION['login_error'] = 0;
echo $_SESSION['login_error'];
}
//проверка e-mail
switch ($_POST['email'])
{
case (!isset($_POST['email'])):
$_SESSION['email_error'] = 1;
echo $_SESSION['email_error'];
break;
case (!preg_match("|^[-0-9a-z_^\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])):
$_SESSION['email_error'] = 2;
echo $_SESSION['email_error'];
break;
default:
$_SESSION['email_error'] = 0;
echo $_SESSION['email_error'];
}
//проверка пароля
switch ($_POST['password'])
{
case (!isset($_POST['password'])):
$_SESSION['password_error'] = 1;
echo $_SESSION['password_error'];
break;
case ($_POST['password'] != $_POST['password2']):
$_SESSION['password_error'] = 3;
echo $_SESSION['password_error'];
break;
//сделать проверку на уникальнсоть записи
default:
$_SESSION['password_error'] = 0;
echo $_SESSION['password_error'];
}
if ($_SESSION['login_error'] > 0 or $_SESSION['email_error'] > 0 or $_SESSION['password_error'] > 0)
{
echo"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>";
exit();
}
else
{
echo"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'>";
exit();
}
}
else
{
exit ("Попытка некорректного ввода данных.");
};
?>
|
| |
|
|
|
|
|
|
|
для: Bvz
(30.03.2009 в 18:39)
| | - | |
|
|
|
|
|
|
|
для: STEVER
(30.03.2009 в 21:36)
| | ?
1. решен
2. решен
3. Возможно ли через оператор switch организовать проверку на дулирующей записи в БД, если да, то как
4. решен
5. Что еще можно включить в код?
пока получилось вот так
<?php
//включаем сессию
session_start();
//подключаем БД
include 'include/configuration.php';
//проверка переходa со страницы регистрации
if(isset($_POST['submit']))
{
//проверка введенных данных
//ошибки:
//0 - ошибок нет
//1 - не заполнено поле
//2 - поле заполнено некорректно
//3 - не совпадают пароли
//4 - такая запись уже существует
//5 - недопустимое количество символов
//проверка логина
switch ($_POST['login'])
{
case (!isset($_POST['login'])):
$_SESSION['login_error'] = 1;
echo $_SESSION['login_error'];
break;
case (!preg_match("|^[-0-9a-z_\.]+$|i", $_POST['login'])):
$_SESSION['login_error'] = 2;
echo $_SESSION['login_error'];
break;
case (!preg_match("|^[-0-9a-z_\.]{2,12}$|i", $_POST['login'])):
$_SESSION['login_error'] = 5;
echo $_SESSION['login_error'];
break;
//сделать проверку на уникальнсоть записи
default:
$_SESSION['login_error'] = 0;
echo $_SESSION['login_error'];
}
//проверка e-mail
switch ($_POST['email'])
{
case (!isset($_POST['email'])):
$_SESSION['email_error'] = 1;
echo $_SESSION['email_error'];
break;
case (!preg_match("|^[-0-9a-z_^\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])):
$_SESSION['email_error'] = 2;
echo $_SESSION['email_error'];
break;
default:
$_SESSION['email_error'] = 0;
echo $_SESSION['email_error'];
}
//проверка пароля
switch ($_POST['password'])
{
case (!isset($_POST['password'])):
$_SESSION['password_error'] = 1;
echo $_SESSION['password_error'];
break;
case ($_POST['password'] != $_POST['password2']):
$_SESSION['password_error'] = 3;
echo $_SESSION['password_error'];
break;
//сделать проверку на уникальнсоть записи
default:
$_SESSION['password_error'] = 0;
echo $_SESSION['password_error'];
}
if ($_SESSION['login_error'] > 0 or $_SESSION['email_error'] > 0 or $_SESSION['password_error'] > 0)
{
echo"<META HTTP-EQUIV='Refresh' CONTENT='3; URL=index.php'>";
exit();
}
else
{
echo"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'>";
exit();
}
}
else
{
exit ("Попытка некорректного ввода даных.");
};
?>
|
| |
|
|
|
|
|
|
|
для: Bvz
(30.03.2009 в 18:39)
| | 1. if(2 < strlen($login) < 12){....}
2. preg_match('/[\.\+\(\)!@#$%\^&*=]/', $login); - чтото такое - учите регулярные выр-я
3. switch - вообще тут непричем....
4. Вполне | |
|
|
|
|
|
|
|
для: nikita2206
(30.03.2009 в 22:38)
| | в общем разобрался вот что получилось:
<?php
//включаем сессию
session_start();
//подключаем БД
include 'include/configuration.php';
//сохраняем введеные данные
$_SESSION['login'] = $_POST['login'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['password'] = $_POST['password'];
$_SESSION['submit'] = $_POST['submit'];
//проверка переходa со страницы регистрации
if(isset($_POST['submit']))
{
$login_query =mysql_fetch_assoc(mysql_query("SELECT login FROM user WHERE login='$_POST[login]' "));
$email_query =mysql_fetch_assoc(mysql_query("SELECT email FROM user WHERE email='$_POST[email]' "));
//проверка введенных данных
//ошибки:
//0 - ошибок нет
//1 - не заполнено поле
//2 - поле заполнено некорректно
//3 - не совпадают пароли
//4 - такая запись уже существует
//5 - недопустимое количество символов
//проверка логина
switch ($_POST['login'])
{
case (!isset($_POST['login'])):
$_SESSION['login_error'] = 1;
break;
case (!preg_match("|^[-0-9a-z_\.]+$|i", $_POST['login'])):
$_SESSION['login_error'] = 2;
break;
case (!preg_match("|^[-0-9a-z_\.]{2,22}$|i", $_POST['login'])):
$_SESSION['login_error'] = 5;
break;
case (isset($login_query['login'])):
$_SESSION['login_error'] = 4;
break;
//сделать проверку на уникальнсоть записи
default:
$_SESSION['login_error'] = 0;
}
//проверка e-mail
switch ($_POST['email'])
{
case (!isset($_POST['email'])):
$_SESSION['email_error'] = 1;
break;
case (!preg_match("|^[-0-9a-z_^\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])):
$_SESSION['email_error'] = 2;
break;
case (isset($email_query['email'])):
$_SESSION['email_error'] = 4;
break;
default:
$_SESSION['email_error'] = 0;
}
//проверка пароля
switch ($_POST['password'])
{
case (!isset($_POST['password'])):
$_SESSION['password_error'] = 1;
break;
case ($_POST['password'] != $_POST['password2']):
$_SESSION['password_error'] = 3;
break;
default:
$_SESSION['password_error'] = 0;
}
//возращаем на страницу регистрации в случае неправильно введеных данных
if ($_SESSION['login_error'] > 0 or $_SESSION['email_error'] > 0 or $_SESSION['password_error'] > 0)
{
echo"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>";
exit();
}
//регестрируем нового пользователя и перадресовываем на страницу авторизации
else
{
echo"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'>";
exit();
}
}
else
{
exit ("Попытка некорректного ввода даных.");
};
?>
|
можно ли еще как то улучшить код, добавить еще проверки? | |
|
|
|