[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация
DeeKeiD
Ещё раз написал скрипт регистрации...
Оцените,скажите что можно улучшить\заменить\оптимизировать.
Также хочу услышать замечания по поводу безопасности smile.gif
Свернутый текст

PHP
<?
if(
$_POST['action']=="register") {
# Приём данных из формы
    
$login    =    $_POST['login'];
    
$passw    =    $_POST['password'];
    
$passw2    =    $_POST['password2'];
    
$nick    =    $_POST['nickname'];
    
$ip        =    $_POST['ip'];
# Проверка на заполнение полей
    
if(empty($login)) {
        echo 
$reg_empty_login.'<br>';
    }
    elseif(empty(
$passw)) {
        echo 
$reg_empty_passw.'<br>';
    }
    elseif(empty(
$passw2)) {
        echo 
$reg_empty_passw2.'<br>';
    }
    elseif(empty(
$nick)) {
        echo 
$reg_empty_nick.'<br>';
    }
# Проверка на количество символов
    
elseif(strlen($login) < 4) {
        echo 
$reg_strlen_login.'<br>';
    }
    elseif(
strlen($passw) < 4) {
        echo 
$reg_strlen_passw.'<br>';
    }
# Проверка на совпадание введенных паролей
    
elseif($passw    !=    $passw2) {
        echo 
$reg_passw_mismatch.'<br>';
    }
# Проверка на вводимые символы
    
elseif(!preg_match("/^[A-Za-z0-9]+$/",$login)) {
        echo 
$reg_symb_login.'<br>';
    }
    elseif(!
preg_match("/^[A-Za-z0-9]+$/",$passw)) {
        echo 
$reg_symb_passw.'<br>';
    }
# Проверка существует ли пользователь
    
$check_query    =    mysql_query("SELECT `login` FROM `users` WHERE `login` = '$login'");
    
$check_result    =    mysql_num_rows($check_query);
    if (
$check_result 0) {
        echo 
$reg_login_exists.'<br>';
    }
# Проверка существует ли IP
    
$check_query2    =    mysql_query("SELECT `userip` FROM `users` WHERE `userip` = '$ip'");
    
$check_result2    =    mysql_num_rows($check_query2);
    if (
$check_result2 0) {
        echo 
$reg_ip_exists.'<br>';
    }
# Запись информации в базу
    
else {
# Шифрование пароля
    
$password    =    md5($passw);
# Запрос к базе
        
mysql_query("INSERT INTO `users` (login,password,nickname,userip) VALUES ('$login','$password','$nick','$ip')") or die(mysql_error());
        echo 
'<center>'.$reg_success.'</center>';
        echo 
'<meta http-equiv="refresh" content="5; URL=/crl/">';
    }
}
else {
?>
<div align="center">
<form ACTION="" METHOD="POST">
    <table border="0" width="50%" class="blockhead2">
        <tr>
            <td align="center"><? echo $register?></td>
        </tr>
    </table>
    <table border="0" width="50%" class="blocktable">
        <tr>
            <td width="40%" bgcolor="white"><? echo $login?></td>
            <td width="60%" bgcolor="white"><input type="login" name="login" size="36"></td>
        </tr>
        <tr>
            <td width="40%" bgcolor="white"><? echo $password?></td>
            <td width="60%" bgcolor="white"><input type="password" name="password" size="36"></td>
        </tr>
        <tr>
            <td width="40%" bgcolor="white"><? echo $password2?></td>
            <td width="60%" bgcolor="white"><input type="password" name="password2" size="36"></td>
        </tr>
        <tr>
            <td width="40%" bgcolor="white"><? echo $nickname?></td>
            <td width="60%" bgcolor="white"><input type="text" name="nickname" size="36"></td>
        </tr>
        <tr>
            <td colspan="2" bgcolor="white" align="center"><input type="submit" value="<? echo $reg?>"></td>
        </tr>
    </table>
<input type="hidden" name="ip" value="<? echo $_SERVER['REMOTE_ADDR']; ?>">
<input type="hidden" name="action" value="register">
</form>
</div>
<?
}


Интересует:
1. как можно вывести все ошибки(например ошибку длинны пароля и запрещенных символов в логине) ввиде списка <li></li>
2. можно ли сделать так чтоб при использовании die(),exit() неломался дизайн сайта, а именно :
имеются 3 блока "L" "C" "R" , При использовании die() в блоке "C" неотображается блок R



Спустя 1 час, 7 минут, 42 секунды (18.09.2009 - 04:57) Gabriel написал(а):
PHP
$array_error[] = "Error";

выводиш
PHP
<ul>
<?
php echo implode('<li>', $array_error) .'</li>';
</
ul>

ты ето имел в виду?

Спустя 42 минуты, 26 секунд (18.09.2009 - 05:39) DeeKeiD написал(а):
Цитата (Gabriel @ 18.09.2009 - 01:57)
PHP
$array_error[] = "Error";

выводиш
PHP
<ul>
<?
php echo implode('<li>', $array_error) .'</li>';
</
ul>

ты ето имел в виду?

Чтото типо этого, только у меня несколько языков (ru.php,en.php и т.д.) и в них прописанно
PHP
$reg_error_1 "Error 1";
$reg_error_2 "Error 2";

Поэтому array тут неподходит =(

Спустя 1 час, 46 минут, 32 секунды (18.09.2009 - 07:26) twin написал(а):
Тут посмотри, чтоб не повторять в сотый раз прописные истины.

Спустя 2 часа, 37 минут, 35 секунд (18.09.2009 - 10:04) Gram написал(а):
нигде перед запросом не вижу mysql_real_escape_string, возможна sql инъекция,
пароль качественный не введешь, придется довольствоваться простым,
при неудачной попытке регистрации, данные в полях сбрасываются.

>можно ли сделать так чтоб, не ломался дизайн сайта?

Воспользуйтесь для этого сессионными переменными, вместо $array_error[] = "Error";

Спустя 2 часа, 7 минут, 15 секунд (18.09.2009 - 12:11) Gabriel написал(а):
twin
laugh.gif знаешже откудо скопипастил


_____________
Бесполезно просить пощады у цезаря
Фатальная ошибка : Звонок в неопределенную функцию ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.