За последние 24 часа нас посетили 16739 программистов и 1598 роботов. Сейчас ищут 1292 программиста ...

Авторитизация на jQuery

Тема в разделе "JavaScript и AJAX", создана пользователем Openru, 17 ноя 2009.

  1. Openru

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

    С нами с:
    6 ноя 2007
    Сообщения:
    12
    Симпатии:
    0
    Хочу написать авторитизацию для сайта с использованием jQuery.
    Проверку такую хочу использовать.
    $r=mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$passmd5."'");
    if(mysql_num_rows($r)!=1){
    Пробовал при помощи XMLHttpRequest сделать проверку посылая запрос в engine.php
    Код (Text):
    1.  
    2. <div id="output">AJAX-ответ от сервера заменит этот текст.
    3. <form id="myForm" action="engine.php" method="post">
    4. <input type="hidden" name="do" value="login" /><br />
    5. <input name="email" type="text" value="Моё имя" /><br />
    6. <input name="password" type="password" /><br />
    7. <input id="submit1" type="submit" name="submitButton" value="Submit1" />
    8. </form></div>
    т.е. чтоб в результате либо выдавалась ошибка и снова форма или "Приветствуем вас, $name"
    Подскажите как лучше это лучше реализовать или может уже готовые варианты есть?
     
  2. ATI

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

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Во первых обязательно проверять входные данные на стороне сервера.
    Можно в принципе возвращать строку от сервера и ее обрабатывать, либо JSON и работать с ним. Потом просто выводить ответ пользователю или любое другое действие.
     
  3. Openru

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

    С нами с:
    6 ноя 2007
    Сообщения:
    12
    Симпатии:
    0
    Вот решение вопроса
    Код (Text):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
    3. <head>
    4. <title>на основе библиотеки jQuery</title>
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    6. <script type="text/javascript" src="js/jquery.js"></script>
    7. <script type="text/javascript" src="js/jquery.form.js"></script>
    8. <script type="text/javascript">
    9. $(document).ready(function(){
    10. // ---- Форма -----
    11.   var options = {
    12.     // элемент, который будет обновлен по ответу сервера
    13.     target: "#output",
    14.     success: showResponse, // функция, вызываемая при получении ответа
    15.     timeout: 3000 // тайм-аут
    16.   };
    17.  
    18.   // привязываем событие submit к форме
    19.   $('#form').submit(function() {
    20.     $(this).ajaxSubmit(options);
    21.     // !!! Важно !!!
    22.     // всегда возвращаем false, чтобы предупредить стандартные
    23.     // действия браузера (переход на страницу form.php)
    24.     return false;
    25.   });
    26. // ---- Форма -----
    27. });
    28.  
    29. // вызов после получения ответа
    30. function showResponse(responseText, statusText)  {
    31.     if(responseText) {
    32.     $('#response').html('OK');
    33.     $('#form').fadeOut();
    34.     } else {
    35.    
    36.     }
    37. }
    38. </script>
    39. </head>
    40. <body>
    41. <div id="response">res</div>
    42. <div id="output">AJAX-ответ от сервера заменит этот текст.</div>
    43.  
    44. <form id="form" action="engine.php" method="post">
    45. <input type="hidden" name="do" value="login" /><br />
    46. <label for="Name">Имя:</label>
    47. <input name="email" type="text" value="Моё имя" /><br />
    48. <label for="Password">Пароль:</label>
    49. <input name="password" type="password" /><br />
    50.  
    51. <input id="submit1" type="submit" name="submitButton" value="Submit1" />
    52. </form>
    53. </body>
    54. </html>
    и PHP
    Код (Text):
    1.  
    2. if($do=='login') {
    3. $email = iconv("UTF-8", "windows-1251",$email);
    4. $passmd5 = md5($password);
    5. $r=mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$passmd5."'");
    6.     if(mysql_num_rows($r)!=1){
    7.        
    8.     } else {
    9.     echo $email.' '.$password;
    10.     }
    11. }
     
  4. ATI

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

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
  5. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    Я бы сразу у клиента пароль хешировал и на сервак md5 передавал....
     
  6. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Зачем?
     
  7. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    Ну вобще планировал усложнить жизнь взломщикам.... Логично же, что если клиент отправляет пароль на сервер, то защитить и передавать его хешем лучше с самой начальной точки отправки, а не хешировать его на конечной точке (сервере), даже если пароль будет перехвачен злоумышленниками между этими точками в случае с хешем, шансы на его применение резко сокращаются.
     
  8. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А в чем разница?

    Ну, как злоумышленник, буду передавать хеш вместо нешифрованного пароля. Что изменится? :)