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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: регистрация и авторизация

Сообщения:  [1-3] 

 
 автор: 45345   (26.05.2009 в 23:47)
 
   для: tAleks   (26.05.2009 в 23:40)
 

аналог записи $login_error_set = $login_error_set | LOGIN_TooSmal; (точно также, как .=, +=, -= и т.д.).
Побитовое ИЛИ. В данном случае просто установка флага

  Ответить  
 
 автор: tAleks   (26.05.2009 в 23:40)   письмо автору
 
   для: Bvz   (26.05.2009 в 12:00)
 


if($llen < 2 ) 
        $login_error_set |= LOGIN_TooSmal; 




А вот это, что за оператор такой? - |=

  Ответить  
 
 автор: Bvz   (26.05.2009 в 12:00)   письмо автору
 
 

вот сделал простую авторизацию с регистрацией, прошу указать на недочеты и слабости скрипта.

регистрация
форма

<?php
//включаем сессию
session_start();
//подключаем БД
include 'include/configuration.php';
$_SESSION['id'] = session_id();

if (
$_SESSION['error']==2)
{
    echo 
"<div id=\"error\"><img src=\"media/attention.gif\" width=\"24\" height=\"24\" alt=\"ошибка ввода\"/> Ошибка ввода!<br /><br />";
    
$login_error_set $_SESSION['login_error_set'];
    
$email_error_set $_SESSION['email_error_set'];
    
$password_error_set $_SESSION['password_error_set'];

    
//сообщения об ошибках

    //ошибки ввода логина
    
switch ($login_error_set)
        {
            case(
1):
            echo 
ERROR_LOGIN_1;
            break;
            case(
2):
            echo 
ERROR_LOGIN_2;
            break;
            case(
4):
            echo 
ERROR_LOGIN_4;
            break;
            case(
5):
            echo 
ERROR_LOGIN_5;
            break;
            case(
6):
            echo 
ERROR_LOGIN_6;
            break;
            case(
8):
            echo 
ERROR_LOGIN_8;
            break;
        }

    
//ошибки ввода e-mail
    
switch ($email_error_set)
        {
            case(
1):
            echo 
ERROR_EMAIL_1;
            break;
            case(
2):
            echo 
ERROR_EMAIL_2;
            break;
            case(
3):
            echo 
ERROR_EMAIL_3;
            break;
            case(
4):
            echo 
ERROR_EMAIL_4;
            break;
        }

    
//ошибки ввода пароля
    
switch ($password_error_set)
        {
            case(
1):
            echo 
ERROR_PASSWORD_1;
            break;
            case(
2):
            echo 
ERROR_PASSWORD_2;
            break;
            case(
3):
            echo 
ERROR_PASSWORD_3;
            break;
        }
}
else
{
    echo 
"<div>";
}
echo 
"<br /><br /></div>";
?>

<!--форма регистрации-->
<form action="registration.php" method="POST">
<table border="0">

        <tr>
            <td>Имя пользователя(логин): </td>
            <td><input type="text" name="login" value="<?php if(isset($_SESSION['login'])) echo $_SESSION['login']; ?>" size="25" /></td>
        </tr>
        <tr>
            <td>E-mail: </td>
            <td><input type="text" name="email" value="<?php if(isset($_SESSION['email'])) echo $_SESSION['email']; ?>" size="25" /></td>
        </tr>
        <tr>
            <td>Пароль: </td>
            <td><input type="password" name="password" value="" size="25" /></td>
        </tr>
        <tr>
            <td>Пароль еще раз: </td>
            <td><input type="password" name="password2" value="" size="25" /></td>
        </tr>
        <tr>
            <td colspan="2" align="right"><input type="submit" value="зарегестрировать" name="submit" /></td>
        </tr>

</table>   
</form>


проверка формы

<?php
//включаем сессию
session_start();

//подключаем БД
include 'include/configuration.php';

//Проверка переходa со страницы авторизации
if(isset($_POST['login']))
{

    
//Сравниваем переданный идентификатор из формы с текущим идентификатором сессии
    
if($_SESSION['id'] != session_id())
        {
            exit(
"$error");
        }

    
//проверяем логин
    
$login $_POST['login'];
    
$login_error_set 0;

    
$llen strlen($login);
    if(
$llen )
        
$login_error_set |= LOGIN_TooSmal;

    if(
$llen 22)
        
$login_error_set |= LOGIN_TooBig;

    if(!
preg_match("|^[-0-9a-z_\.]+$|i",  $login))
        
$login_error_set |= LOGIN_InvalidChars;

    
$e_login mysql_escape_string($login);
    if(
mysql_result(mysql_query("SELECT COUNT(*)  FROM user WHERE login='$e_login' "), 0) !== '0')
        
$login_error_set |= LOGIN_AlreadyRegistered;

    
$_SESSION['login_error_set'] = $login_error_set;

    unset(
$_SESSION['login']);
    if (
$login_error_set == 0$_SESSION['login']=$login;
    
    
//проверяем e-mail
    
$email $_POST['email'];
    
$email_error_set 0;

    
$elen strlen($email);
    if(
$elen )
        
$email_error_set |= EMAIL_TooNo;

    if(!
preg_match("|^[-0-9a-z_\.]+@[-0-9a-z\.]+\.[a-z]{2,6}$|i",  $email))
        
$email_error_set |= EMAIL_InvalidChars;

    
$e_email mysql_escape_string($email);
    if(
mysql_result(mysql_query("SELECT COUNT(*)  FROM user WHERE email='$e_email' "), 0) !== '0')
        
$email_error_set |= EMAIL_AlreadyRegistered;

    
$_SESSION['email_error_set'] = $email_error_set;

    unset(
$_SESSION['email']);
    if (
$email_error_set == 0$_SESSION['email']=$email;

    
//проверяем пароль
    
$password $_POST['password'];
    
$password_error_set 0;

    
$plen strlen($password);
    if(
$plen )
        
$password_error_set |= PASSWORD_TooNo;

    if(
$password != $_POST['password2'])
        
$password_error_set |= PASSWORD_NotEqual;

    
$_SESSION['password_error_set'] = $password_error_set;

    if(
$login_error_set!=|| $email_error_set!=|| $password_error_set!=0)
        {
            
$_SESSION['error']=2;
            echo
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>";
        }
    else
        {
            
session_unset();
            
$_SESSION['error']=1;
            
$_SESSION['login']=$login;
            
$password md5(md5($password));
            
$save_user "INSERT INTO user VALUES('', '".$login."', '".$email."', '".$password."')";

    if (
mysql_query($save_user))
        {
            echo 
"Данные успешно добавлены!<br />";
            echo
"<META HTTP-EQUIV='Refresh' CONTENT='1; URL=login.php'>";
        }
        }
}
else
    {
        exit (
"$error");
    }
?>


авторизация

<?php
//включаем сессию
session_start();
//подключаем БД
include 'include/configuration.php';
$_SESSION['id'] = session_id();
$url=$_SERVER['PHP_SELF'];
$filename basename($url);
$_SESSION['url'] = "$filename";
if (
$_SESSION['error']==1)
    {
        echo 
"<div id=\"congratulate\"><img src=\"media/congratulate.gif\" width=\"24\" height=\"24\" alt=\"поздравляем!\"/> Поздравляем, теперь Вы можете авторизоваться!<br /><br /></div>";
    }
?>

<!--форма регистрации-->
<form action="authorization.php" method="POST">
<table border="0">

        <tr>
            <td>Имя пользователя(логин): </td>
            <td><input type="text" name="login" value="<?php if($_SESSION['login'] == 0) echo $_SESSION['login']; ?>" size="25" /></td>
        </tr>
        <tr>
            <td>Пароль: </td>
            <td><input type="password" name="password" value="" size="25" /></td>
        </tr>
        <tr>
            <td colspan="2" align="right"><input type="submit" value="войти" name="submit" /></td>
        </tr>

</table>
</form>


проверка формы
<?php
//включаем сессию
session_start();
$filename $_SESSION['url'];
echo 
$filename;
//подключаем БД
include 'include/configuration.php';

//Проверка переходa со страницы авторизации
if(isset($_POST['submit']))
{

    
//Сравниваем переданный идентификатор из формы с текущим идентификатором сессии
    
if($_SESSION['id'] != session_id())
        {
            exit(
"$error");
        }

            
//Авторизация
        
$login mysql_escape_string($_POST['login']);
        
$email_query "SELECT password FROM user WHERE login='".$login."'";
        
$name mysql_query($email_query);
        if(!
$name)
        {
        echo 
mysql_error();
        echo 
"Ошибка выполнения запроса!<br />";
        echo 
"<a href='".$filename."'>Попробовать еще!</a>";
        exit();
        }

        if(
mysql_num_rows($name) > 0)
        {
        
$password mysql_result($name0);
            if (
md5(md5($_POST['password'])) == $password)
            {
                if(
session_start())
                {
                
$_SESSION['ok'] = 1;
                echo 
"<meta http-equiv='refresh' content='0; url=".$filename."'>";
                echo 
"<a href='".$filename."'>Нажмите ссылку, если Ваш браузер не поддерживает автоматическую переадресацию!</a>";
                }
            }
            else
            {
            echo 
"Неправильный пароль!<br />";
            echo 
"<a href='".$filename."'>Попробовать еще!</a>";
            exit();
            }
        }

        else
        {
        echo 
"Такой пользователь не зарегистрирован!<br />";
        echo 
"<a href='".$filename."'>Попробовать еще!</a>";
        exit();
        }
}
else
    {
        exit (
"$error");
    }
?>


конфигурационный файл

<?php

  
// Имя сервера базы данных
  
$dblocation "localhost";

  
// Имя базы данных
  
$dbname "user";

  
// Имя пользователя
  
$dbuser "root";

  
// Пароль
  
$dbpasswd "";


  
// Соединяемся с сервером базы данных
  
$dbconnect = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbconnect)
  {
    echo( 
"<P>Сервер базы данных не доступен, зайдите позже!</P>" );
    exit();
  }

  
// Выбираем базу данных
  
if (! @mysql_select_db($dbname,$dbconnect) )
  {
    echo( 
"<P>База данных не доступна, зайдите позже!</P>" );
    exit();
  }
  
// ошибки при заполнени логина
define('ERROR_LOGIN_1'"имя пользователя меньше 2 символов <br />");
define('ERROR_LOGIN_2'"имя пользователя больше 22 символов <br />");
define('ERROR_LOGIN_4'"имя пользователя должно состоять из символов <b>a-z A-Z 0-9 .- _</b> <br />");
define('ERROR_LOGIN_5'"имя пользователя меньше 2 символов<br />имя пользователя должно состоять из символов <b>a-z A-Z 0-9 .- _</b> <br />");
define('ERROR_LOGIN_6'"имя пользователя больше 22 символов<br />имя пользователя должно состоять из символов <b>a-z A-Z 0-9 .- _</b> <br />");
define('ERROR_LOGIN_8'"такой пользователь уже существует <br />");

define('LOGIN_TooSmal'1);
define('LOGIN_TooBig'2);
define('LOGIN_InvalidChars'4);
define('LOGIN_AlreadyRegistered'8);


// ошибки при заполнени email
define('ERROR_EMAIL_1'"не введен e-mail <br />");
define('ERROR_EMAIL_2'"e-mail не соответствует формату <b>sc2r2bey@netsurfing.ru</b> <br />");
define('ERROR_EMAIL_3'"не введен e-mail <br />e-mail не соответствует формату <b>sc2r2bey@netsurfing.ru</b> <br />");
define('ERROR_EMAIL_4'"такой e-mail уже существует <br />");

define('EMAIL_TooNo'1);
define('EMAIL_InvalidChars'2);
define('EMAIL_AlreadyRegistered'4);


// ошибки при заполнени пароля
define('ERROR_PASSWORD_1'"не введен пароль <br />");
define('ERROR_PASSWORD_2'"пароли не совпадают <br />");
define('ERROR_PASSWORD_3'"не введен пароль<br />пароли не совпадают <br />");

define('PASSWORD_TooNo'1);
define('PASSWORD_NotEqual'2);

$error "<div align=\"center\"><b>Ошибка 404</b>, страница не найдена!</div>";

?>

  Ответить  

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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