вот сделал простую авторизацию с регистрацией, прошу указать на недочеты и слабости скрипта. регистрация форма Код (Text): <?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> проверка формы Код (Text): <?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 < 2 ) $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 < 1 ) $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 < 1 ) $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!=0 || $email_error_set!=0 || $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"); } ?> авторизация Код (Text): <?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> проверка формы Код (Text): <?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($name, 0); 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"); } ?> конфигурационный файл Код (Text): <?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>"; ?>
что за уебанство? PHP: <?php if ($login_error_set) echo $login_errors[$login_error_set]; Костанты в пхп существуют для галочки, это обьективный факт.