Хочу написать авторитизацию для сайта с использованием jQuery. Проверку такую хочу использовать. $r=mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$passmd5."'"); if(mysql_num_rows($r)!=1){ Пробовал при помощи XMLHttpRequest сделать проверку посылая запрос в engine.php Код (Text): <div id="output">AJAX-ответ от сервера заменит этот текст. <form id="myForm" action="engine.php" method="post"> <input type="hidden" name="do" value="login" /><br /> <input name="email" type="text" value="Моё имя" /><br /> <input name="password" type="password" /><br /> <input id="submit1" type="submit" name="submitButton" value="Submit1" /> </form></div> т.е. чтоб в результате либо выдавалась ошибка и снова форма или "Приветствуем вас, $name" Подскажите как лучше это лучше реализовать или может уже готовые варианты есть?
Во первых обязательно проверять входные данные на стороне сервера. Можно в принципе возвращать строку от сервера и ее обрабатывать, либо JSON и работать с ним. Потом просто выводить ответ пользователю или любое другое действие.
Вот решение вопроса Код (Text): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <title>на основе библиотеки jQuery</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.form.js"></script> <script type="text/javascript"> $(document).ready(function(){ // ---- Форма ----- var options = { // элемент, который будет обновлен по ответу сервера target: "#output", success: showResponse, // функция, вызываемая при получении ответа timeout: 3000 // тайм-аут }; // привязываем событие submit к форме $('#form').submit(function() { $(this).ajaxSubmit(options); // !!! Важно !!! // всегда возвращаем false, чтобы предупредить стандартные // действия браузера (переход на страницу form.php) return false; }); // ---- Форма ----- }); // вызов после получения ответа function showResponse(responseText, statusText) { if(responseText) { $('#response').html('OK'); $('#form').fadeOut(); } else { } } </script> </head> <body> <div id="response">res</div> <div id="output">AJAX-ответ от сервера заменит этот текст.</div> <form id="form" action="engine.php" method="post"> <input type="hidden" name="do" value="login" /><br /> <label for="Name">Имя:</label> <input name="email" type="text" value="Моё имя" /><br /> <label for="Password">Пароль:</label> <input name="password" type="password" /><br /> <input id="submit1" type="submit" name="submitButton" value="Submit1" /> </form> </body> </html> и PHP Код (Text): if($do=='login') { $email = iconv("UTF-8", "windows-1251",$email); $passmd5 = md5($password); $r=mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$passmd5."'"); if(mysql_num_rows($r)!=1){ } else { echo $email.' '.$password; } }
Ну вобще планировал усложнить жизнь взломщикам.... Логично же, что если клиент отправляет пароль на сервер, то защитить и передавать его хешем лучше с самой начальной точки отправки, а не хешировать его на конечной точке (сервере), даже если пароль будет перехвачен злоумышленниками между этими точками в случае с хешем, шансы на его применение резко сокращаются.
А в чем разница? Ну, как злоумышленник, буду передавать хеш вместо нешифрованного пароля. Что изменится?