За последние 24 часа нас посетили 50889 программистов и 1751 робот. Сейчас ищут 846 программистов ...

Авторизация

Тема в разделе "Вопросы от блондинок", создана пользователем Zerox, 23 мар 2010.

  1. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Здаровати. Это снова я страдаю х*йнёй=)) Вот у мя не работает авторизация. Вот всё чо есть..:
    Форма отправки:
    HTML:
    1.  
    2. <form action="login.php" method="post">
    3.  
    4. <table class="tablebg" width="100%" cellspacing="1">
    5. <tr>
    6. <td class="row2">
    7.  
    8. <table align="center" cellspacing="1" cellpadding="4" style="width: 100%;">
    9.  
    10. <tr>
    11. <td align="center">
    12. <p>Авторизация</p>
    13. <input type="text" name="username" size="19" onfocus="focus_username(this)" value="Логин" />
    14.  
    15. <br /><a class="gensmall" href="/reg.php">Регистрация</a>
    16. </td>
    17. </tr>
    18. <tr>
    19.            <td align="center">
    20.                 <input type="password" name="password" onfocus="focus_password(this)" value="------" size="15" tabindex="2" />
    21.                 <br /><a class="gensmall" href="http://forum.joker-main.com/ucp.php?mode=sendpassword">Забыли пароль?</a>
    22.  
    23.             </td>
    24. </tr>
    25. <tr>
    26. <td align="center"><input type="checkbox" class="radio" name="autologin" tabindex="3" /><span>Запомнить?</span></td>
    27. </tr>
    28. </td>
    29. </tr>
    30.  
    31. <tr>
    32.     <td class="cat" colspan="2" align="center"><input type="hidden" name="redirect" value="index.php" />
    33. <input type="submit" name="login" value="Вход" tabindex="5" /></td>
    34.  
    35. </tr>
    36.  
    37. </form>
    38.  
    Обработчик, файл login.php:
    PHP:
    1.  
    2. <?php
    3. include ("$_SERVER[DOCUMENT_ROOT]/lib/config.php");
    4. include ("$_SERVER[DOCUMENT_ROOT]/lib/functions.php");
    5. if(isset($_POST['login'])) //Если был POST-запрос с скрипту
    6. {
    7. //Авторизация
    8. //Проверка формы
    9. if(empty( $_POST['username'] ) || empty( $_POST['password'] ) )
    10.     {
    11.     require ("$_SERVER[DOCUMENT_ROOT]/lib/head.inc");
    12.     echo "<center><p>Не все поля заполнены!</p></center>";
    13.     require ("$_SERVER[DOCUMENT_ROOT]/lib/end.inc");
    14.  
    15. }else{  //Если форма нормальная
    16.  
    17. auth();
    18. require ("$_SERVER[DOCUMENT_ROOT]/lib/head.inc");
    19. echo "<center><p>Ты авторизован!</p></center>";
    20. require ("$_SERVER[DOCUMENT_ROOT]/lib/end.inc");
    21. }
    22. } //Конец скрипта
    23. ?>
    24.  
    Файл functions.php:
    PHP:
    1.  
    2. <?php
    3. include ("$_SERVER[DOCUMENT_ROOT]/lib/config.php");
    4.  
    5. function myhash( $user , $user_agent , $user_ip )
    6. {  return md5( $user ) . md5( $user_agent ) . md5( $user_ip );  }
    7.  
    8. function get_ip()
    9. {
    10.    if ($ip = getenv("HTTP_CLIENT_IP"))
    11.     {  return $ip;  }
    12.  
    13.    if ($ip = getenv("HTTP_X_FORWARDED_FOR"))
    14.     {
    15.      if ($ip == '' || $ip == "unknown")
    16.       {  $ip = getenv("REMOTE_ADDR");  }
    17.  
    18.      return $ip;
    19.     }
    20.    if ( $ip = getenv("REMOTE_ADDR") )
    21.     {  return $ip;  }
    22. }
    23.  
    24. function getmicrotime()
    25.   {
    26.    $mt = explode( " ", microtime() );
    27.    return ( (float)$mt[0] + (float)$mt[1] );
    28.   }
    29.  
    30. function auth()
    31.   {
    32.    $result = mysql_query( "SELECT * FROM members WHERE rlogin = '" . $_POST['username'] . "' AND rpass = '" .  $_POST['password'] . "'" );
    33.  
    34.    if( mysql_num_rows( $result ) == 0 )
    35.     {  echo "Вы не авторизованы!";  }
    36.  
    37.    $user = mysql_fetch_object( $result );
    38.  
    39.    $tm = getmicrotime();
    40.    mysql_query( "INSERT INTO `auth_sessions` VALUES( " . $user -> id . " , " . time() . " , '" . myhash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $tm ) . "' )" );
    41.  
    42.    setcookie( "time" , $tm , time() + 900 , "/" );
    43.    setcookie( "name" , $user -> name , time() + 900 , "/" );
    44.  
    45.  
    46.   }
    47. function check()
    48.   {
    49.    $result = mysql_query( "SELECT * FROM members WHERE rlogin = '" . $_COOKIE['name'] . "' " );
    50.    if( mysql_num_rows( $result ) == 0 )
    51.     {  echo "Вы не авторизованы!";  }
    52.    $user = mysql_fetch_object( $result );
    53.    $minutes = 15;
    54.    $result = mysql_query( "SELECT * FROM auth_sessions WHERE member = " . $user -> id . " AND hash = '" . myhash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "' AND time > " . ( time() - ( $minutes * 60 ) ) . " LIMIT 1 " );
    55.    print mysql_error();
    56.    if( mysql_num_rows( $result ) == 0 )
    57.     {  echo "Вы авторизованы!";  }
    58.    if( isset( $_GET['quit'] ) )
    59.     {
    60.      mysql_query( "DELETE FROM auth_session WHERE Id = " . $user -> id . " AND hash = '" . myhash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );
    61.      setcookie( "time" , "" , 900 , "/" );
    62.      setcookie( "name" , "" , 900 , "/" );
    63.      return FALSE;
    64.     }
    65.    else
    66.     {
    67.      mysql_query( "UPDATE auth_session SET time = " . time() . " WHERE member = " . $user -> id . " AND hash = '" . myhash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );
    68.      setcookie( "time" , $_COOKIE['time'] , time() + ( $minutes * 60 ) , "/" );
    69.      setcookie( "name" , $_COOKIE['id'] , time() + ( $minutes * 60 ) , "/" );
    70.      return TRUE;
    71.     }
    72.   }
    73.  
    74. ?>
    75.  
    Ошибка, постоянно появляется, независимо авторизовывался я или нет:
     
  2. Петр

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

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Переведите сообщение об ошибке на русский язык, возможно, воспользовавшись переводчиком.
    Это поможет Вам понять, в чем заключается проблема.