За последние 24 часа нас посетили 18325 программистов и 1637 роботов. Сейчас ищут 1704 программиста ...

Проверьте скрипт авторизации

Тема в разделе "Решения, алгоритмы", создана пользователем Lands, 25 фев 2012.

  1. Lands

    Lands Активный пользователь

    С нами с:
    25 фев 2012
    Сообщения:
    1
    Симпатии:
    0
    Проверьте пожалуйста нормально ли написан код.

    Код (Text):
    1. <?php
    2. include ("db.php");
    3. session_start();
    4.  
    5. if(!empty($_SESSION['uid']) and !empty($_SESSION['name'])) {
    6.     $check = true;
    7. }elseif(!empty($_COOKIE['hash']) and !empty($_COOKIE['uid'])){
    8.     $ip = $_SERVER['REMOTE_ADDR'];
    9.     $sql = mysql_query("SELECT s.*, u.* FROM `sess` s INNER JOIN `users` u on s.uid = u.id WHERE `uid` = '".mysql_real_escape_string($_COOKIE['uid'])."' and `hash` = '".mysql_real_escape_string($_COOKIE['hash'])."' and `ip` = '$ip'",$db);
    10.     if(mysql_num_rows($sql) > 0) {
    11.         $row = mysql_fetch_assoc($sql);
    12.         $_SESSION['uid'] = $row['uid'];
    13.         $_SESSION['name'] = $row['name'];
    14.         $check = true;
    15.     }else{
    16.         SetCookie("hash",'');
    17.         SetCookie("uid",'');
    18.         $check = false;
    19.     }
    20. }elseif(isset($_POST['ok'])) {
    21.     $name = !empty($_POST['name']) ? trim($_POST['name']) : FALSE;
    22.     $pass = !empty($_POST['pass']) ? sha1(trim($_POST['pass'])) : FALSE;
    23.  
    24.     if($name and $pass) {
    25.         $ip = $_SERVER['REMOTE_ADDR'];
    26.         $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    27.         $code = "";
    28.         $clen = strlen($chars) - 1;  
    29.         while (strlen($code) < 10) {
    30.             $code .= $chars[mt_rand(0,$clen)];  
    31.         }
    32.         $hash = md5($code);
    33.  
    34.         $sql = mysql_query("SELECT * FROM `users` WHERE `name` = '".mysql_real_escape_string($name)."' and `pass` = '".mysql_real_escape_string($pass)."'",$db);
    35.         if(mysql_num_rows($sql) > 0) {
    36.             $row = mysql_fetch_assoc($sql);
    37.             $uid = $row['id'];
    38.             SetCookie("hash",$hash,time()+60*60*24*30);
    39.             SetCookie("uid",$uid,time()+60*60*24*30);
    40.             $sql = mysql_query("INSERT INTO `sess`(uid,hash,ip) VALUES('$uid','$hash','$ip')",$db);
    41.             $_SESSION['uid'] = $uid;
    42.             $_SESSION['name'] = $row['name'];
    43.             header("Location: /login.php");
    44.         }else{
    45.             echo'Неправильное имя или пароль';
    46.         }
    47.     }else{
    48.         echo'Заполните все поля';
    49.     }
    50. }else{
    51.     $check = false;
    52. }
    53.  
    54. if($check == true) {
    55.     echo 'Привет, '.$_SESSION['name'];
    56. }else{
    57.     ?>
    58.     <form action='' method='post'>
    59.     <input type='text' name='name'><br>
    60.     <input type='password' name='pass'><br>
    61.     <input type='submit' name='ok'>
    62.     </form>
    63.     <?
    64. }
    65. ?>