[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оцените скрипт
DeeKeiD
Написал скрипт регистрации, хочу услышать здравую критику wink.gif

Свернутый текст

PHP
<?
if(
$_POST['action']=="register") {
# Определение данных
    
$login    =    $_POST['login'];
    
$nick    =    $_POST['nickname'];
    
$pass    =    $_POST['password'];
    
$password    =    md5($pass);
    
$country    =    $_POST['country'];
    
$rules        =    $_POST['rules'];
# Проверка на заполнение полей
    
if(empty($login)) {
        echo 
'
        <table class="help-hint">
            <tr>
                <td class="middle" width="60"><img src="/v2/images/warning.png" align="absmiddle"></td>
                <td class="middle" align="left">&nbsp;Ошибка! '
.$lang[m_register_err_empty_login].'</td>
            </tr>
        </table>'
;
    }
    elseif(empty(
$nick)) {
        echo 
'
        <table class="help-hint">
            <tr>
                <td class="middle" width="60"><img src="/v2/images/warning.png" align="absmiddle"></td>
                <td class="middle" align="left">&nbsp;Ошибка! '
.$lang[m_register_err_empty_nickname].'</td>
            </tr>
        </table>'
;
    }
    elseif(empty(
$pass)) {
        echo 
'
        <table class="help-hint">
            <tr>
                <td class="middle" width="60"><img src="/v2/images/warning.png" align="absmiddle"></td>
                <td class="middle" align="left">&nbsp;Ошибка! '
.$lang[m_register_err_empty_pass].'</td>
            </tr>
        </table>'
;
    }
    else {
        
$res    =    mysql_query("SELECT `login` FROM `users` WHERE `login` = '$login' OR `password` = '$pass'");
        
$check    =    mysql_num_rows($res);
        
$res2    =    mysql_query("SELECT `userip` FROM `users` WHERE `userip` = '$ip'");
        
$check2    =    mysql_num_rows($res2);
# Проверка на существование пользователя
        
if($check 0) {
        echo 
'
        <table class="help-hint">
            <tr>
                <td class="middle" width="60"><img src="/v2/images/warning.png" align="absmiddle"></td>
                <td class="middle" align="left">&nbsp;Ошибка! '
.$lang[m_register_err_user_already_exists].'</td>
            </tr>
        </table>'
;
        }
# Проверка на существование ip
        
if($check2 0) {
        echo 
'
            <table class="help-hint">
                <tr>
                    <td class="middle" width="60"><img src="/v2/images/warning.png" align="absmiddle"></td>
                    <td class="middle" align="left">&nbsp;Ошибка! '
.$lang[m_register_err_ip_already_exists].'</td>
                </tr>
            </table>'
;
        }
# Проверка на согласие с правилами
    
if($rules != 1) {
        echo 
'
        <table class="help-hint">
            <tr>
                <td class="middle" width="60"><img src="/v2/images/warning.png" align="absmiddle"></td>
                <td class="middle" align="left">&nbsp;Ошибка! '
.$lang[m_register_err_rules].'</td>
            </tr>
        </table>'
;
    }
        else {
            
mysql_query("INSERT INTO `users` (login, password, nickname, country, userip, timestamp) VALUES ('$login','$password','$nick','$country','$ip',NOW())") or die(mysql_error());
            echo 
'<center>Welcome <b>'.$login.'</b></center>';
        }
    }
}
else {
    echo 
'
<div align="center">
<form action="" METHOD="POST">
    <table border="0" width="50%" class="blockhead2">
        <tr>
            <td align="center">'
.$lang[m_register].'</td>
        </tr>
    </table>
    <table border="0" width="50%" class="blocktable">
        <tr>
            <td width="30%">'
.$lang[m_register_login].'</td>
            <td width="70%"><input type="text" name="login" size="43"></td>
        </tr>
        <tr>
            <td width="30%">'
.$lang[m_register_nickname].'</td>
            <td width="70%"><input type="text" name="nickname" size="43"></td>
        </tr>
        <tr>
            <td width="30%">'
.$lang[m_register_password].'</td>
            <td width="70%"><input type="password" name="password" size="43"></td>
        </tr>
        <tr>
            <td width="30%">'
.$lang[m_register_country].'</td>
            <td width="70%">'
.countries().'</td>
        </tr>
        <tr>
            <td width="30%">'
.$lang[m_register_rules].'</td>
            <td width="70%"><input type="checkbox" name="rules" value="1"> '
.$lang[m_register_rules2].'</td>
        </tr>
        <tr>
            <td width="30%"><input type="hidden" name="action" value="register"></td>
            <td width="70%"><input type="submit" value="'
.$lang[m_register_regbutton].'"></td>
        </tr>
    </table>
</form>
</div>'
;
}




Спустя 10 минут, 15 секунд (30.08.2009 - 15:06) stepan написал(а):
Цитата (DeeKeiD @ 30.08.2009 - 11:55)
WHERE `login` = '$login'

Может я и ошибаюсь, но это разве не опасно для здоровья?

Спустя 1 час, 27 минут, 42 секунды (30.08.2009 - 16:33) Gradus написал(а):
Ошибок в запросе очень много:
1)обращаетесь по несколько раз к одной и той же базе,
2)Вы сами понимаете условие ? `login` = '$login' OR `password` = '$pass',
3)Данные никак не обрабатываються
4)Пароль регистрируються в md5,а проверяеться без него
5)Экранировки в запросах нету
Код можно сократить раза в 3
Из плюсов только что есть коментарии и код ровномерный smile.gif

Спустя 30 минут, 25 секунд (30.08.2009 - 17:04) <?php написал(а):
оценил

Спустя 2 часа, 42 минуты, 17 секунд (30.08.2009 - 19:46) Raito-kun написал(а):
да, еще логины нужно при проверках делать в strrolower/upper, иначе под логинами Hello, HellO, HEllo и прочими будут сидеть совершенно разые люди.

Спустя 38 минут, 50 секунд (30.08.2009 - 20:25) ApuktaChehov написал(а):
Сырой код. Видно, что только что написан. Самое опасно это - куча SQL иъекций

Спустя 5 минут, 55 секунд (30.08.2009 - 20:31) twin написал(а):
Цитата
иначе под логинами Hello, HellO, HEllo и прочими будут сидеть совершенно разые люди.
А разве они одинаковые?

Спустя 2 минуты, 43 секунды (30.08.2009 - 20:34) twin написал(а):
DeeKeiD, почитай это. Там много интересного для тебя.

Спустя 31 минута, 21 секунда (30.08.2009 - 21:05) Krevedko написал(а):
Цитата (Gradus @ 30.08.2009 - 13:33)
Ошибок в запросе очень много:
1)обращаетесь по несколько раз к одной и той же базе,
2)Вы сами понимаете условие ? `login` = '$login' OR `password` = '$pass',
3)Данные никак не обрабатываються
4)Пароль регистрируються в md5,а проверяеться без него
5)Экранировки в запросах нету
Код можно сократить раза в 3
Из плюсов только что есть коментарии и код ровномерный smile.gif

угу. сократить можно хотя бы вынеся
HTML
<table class="help-hint">
<tr>
<td class="middle" width="60"><img src="/v2/images/warning.png" align="absmiddle"></td>
<td class="middle" align="left">&nbsp;Ошибка! '.$lang[m_register_err_rules].'</td>
</tr>
</table>';


в отдельную функцию или лучше файл...тут же только массив меняется.

Спустя 1 час, 59 минут, 10 секунд (30.08.2009 - 23:04) DeeKeiD написал(а):
хм все настолько плохо biggrin.gif

Спустя 1 час, 10 минут, 3 секунды (31.08.2009 - 00:14) web-dev написал(а):
Цитата (twin @ 30.08.2009 - 21:34)
DeeKeiD, почитай это. Там много интересного для тебя.

Кстати я начал делать свою CMS, потом прочитал твой труд и понял что всё надо заново делать. ph34r.gif

Спустя 56 минут, 13 секунд (31.08.2009 - 01:10) Raito-kun написал(а):
Цитата
А разве они одинаковые?


а разве нет? вообще я привык вводить свой логин в нижнем регистре при входе на любой сайт/форум/в любую игру и вообще гдебы-то нибыло. и этот форум не исключение. я воожу raito-kun при входе. и вхожу как Raito-kun. а в его скрипте, меня бы послали. и можно было бы создать 2 пользователя Raito-kun и raito-kun за которыми были бы совершенно разные люди.

Спустя 3 минуты, 51 секунда (31.08.2009 - 01:14) Soldier Ghost написал(а):
Цитата (web-dev @ 30.08.2009 - 21:14)
Цитата (twin @ 30.08.2009 - 21:34)
DeeKeiD, почитай это. Там много интересного для тебя.

Кстати я начал делать свою CMS, потом прочитал твой труд и понял что всё надо заново делать. ph34r.gif

Это даже к лучшему smile.gif
Лучше запомниш и освоиш.

DeeKeiD
В твоём скрипте защиты 0 ph34r.gif

Спустя 6 часов, 20 минут, 55 секунд (31.08.2009 - 07:35) glock18 написал(а):
Цитата
а разве нет? вообще я привык вводить свой логин в нижнем регистре при входе на любой сайт/форум/в любую игру и вообще гдебы-то нибыло. и этот форум не исключение. я воожу raito-kun при входе. и вхожу как Raito-kun. а в его скрипте, меня бы послали. и можно было бы создать 2 пользователя Raito-kun и raito-kun за которыми были бы совершенно разные люди.


Не понимаю откуда такое видение. Сейчас уже далеко не редкость увидеть требование к паролю:

Цитата
Пароль должен быть не меньше 6 символов. Должен включать в себя английские буквы верхнего и нижнего регистра и цифры. ла-ла-ла три рубля


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

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