Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: регистрация и регулярные выражения
 
 автор: Bvz   (30.03.2009 в 18:39)   письмо автору
 
 

Регистрация, вопросы:
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'] > or $_SESSION['email_error'] > 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 (
"Попытка некорректного ввода данных.");
    };
?>

  Ответить  
 
 автор: STEVER   (30.03.2009 в 21:36)   письмо автору
 
   для: Bvz   (30.03.2009 в 18:39)
 

-

  Ответить  
 
 автор: Bvz   (30.03.2009 в 21:50)   письмо автору
 
   для: 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'] > or $_SESSION['email_error'] > 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 (
"Попытка некорректного ввода даных.");
    };
?>

  Ответить  
 
 автор: nikita2206   (30.03.2009 в 22:38)   письмо автору
 
   для: Bvz   (30.03.2009 в 18:39)
 

1. if(2 < strlen($login) < 12){....}

2. preg_match('/[\.\+\(\)!@#$%\^&*=]/', $login); - чтото такое - учите регулярные выр-я

3. switch - вообще тут непричем....

4. Вполне

  Ответить  
 
 автор: Bvz   (30.03.2009 в 23:16)   письмо автору
 
   для: 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'] > or $_SESSION['email_error'] > 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 (
"Попытка некорректного ввода даных.");
    };
?>


можно ли еще как то улучшить код, добавить еще проверки?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования