ТО что имеем: 1)Есть Java код, который отправляет строку в файл php и получает md5 код посредствами AJAx Code: <script type="text/javascript" language="JavaScript" src="lib/JsHttpRequest.js"></script> <script type="text/javascript" language="JavaScript"> function doLoad(value) { // Create new JsHttpRequest object. var req = new JsHttpRequest(); // Code automatically called on load finishing. req.onreadystatechange = function() { if (req.readyState == 4) { // Write result to page element ($_RESULT become responseJS). document.getElementById('result').innerHTML = '<b>MD5("'+req.responseJS.q+'")</b> = ' + '"' + req.responseJS.md5 + '"<br> '; // Write debug information too (output become responseText). document.getElementById('debug').innerHTML = req.responseText; } } // Prepare request object (automatically choose GET or POST). req.open(null, 'handler.php', true); // Send data to backend. req.send( { q: value } ); } </script> <form> Text: <input type="text" name="text"> <input type="button" value="Calculate MD5" onclick="doLoad(this.form.text.value)"> </form> <div id="result" style="border:1px solid #000; padding:2px"> Structured results </div> <div id="debug" style="border:1px dashed red; padding:2px"> Debug info </div> <hr> 2)Есть php код получающий строку и отправляющий md5 строку Code: <?php require_once "lib/JsHttpRequest.php"; $JsHttpRequest =& new JsHttpRequest("windows-1251"); $_RESULT = array( "q" => @$_REQUEST['q'], "md5" => md5(@$_REQUEST['q']), ); ?> 3)Есть php код, выполняющий авторизацию пользователя из MySQL Code: <?php if (isset($_POST['name'])){ //инклудим файл с настройками бд include('settings.php'); // Соединяемся с сервером базы данных $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); if (!$dbcnx) { echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" ); exit(); } // Выбираем базу данных if (! @mysql_select_db($dbname,$dbcnx) ) { echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" ); exit(); } // Формируем и выполняем SQL-запрос для посетителя с // именем $_POST['name'] $query = "SELECT password FROM users WHERE name='".$_POST['name']."'"; $nme = mysql_query($query); if(!$nme) { echo mysql_error(); echo "Ошибка выполнения запроса"; exit(); } // Если запрос вернул результат - производим дальнейшую обработку if(mysql_num_rows($nme) > 0) { // Получаем пароль $password = mysql_result($nme, 0); // Сравниваем пароль из базы данных и введённый посетителем if ($_POST['password'] == $password) { // Идентификация прошла успешно - осуществляем // "вход" посетителя. Для того, чтобы в течении текущей // сесси посетитель не вводил своё имя пароль повторно - // передаём их через сессию if(session_start()) { $_SESSION['user'] = $_POST['name']; $_SESSION['password'] = $_POST['password']; // Осуществляем автоматический переход на // страницу index.php чтобы убедится, что // посетитель "вошёл" echo "<center><font color='green'>Вход успешно выполнен<br>Переадресация...</font></center> <body onLoad=window.setTimeout(\"location.href='index.php'\",2000)>"; } } else { echo "<center><font color='red'>Ошибка идентификации: неправильный пароль<br>Переадресация...</font></center> <body onLoad=window.setTimeout(\"location.href='index.php'\",2000)>"; exit(); } } // Если в результате запроса не получено ни одной // строки - посетитель с таким именем не зарегистрирован else { echo "<center><font color='red'>Ошибка идентификации: посетитель не зарегистрирован<br>Переадресация...</font></center> <body onLoad=window.setTimeout(\"location.href='index.php'\",2000)>"; exit(); } } ?> То что нужно: Нужно чтобы Java код(пункт1) отправлял введенные логин и пароль в php код(пункт3), чтобы php код принимающий java скрипт(пункт2) обрабатывал введенные логин и пароль и отправлял обратно результат. Моё мнение: 1)Нужно переделать java код(пункт1) отправлял данные в виде loginassword в phph программу(пункт3) 2)Нужно чтобы php код принимал логин и пароль в виде loginassword и разделял логин и пароль на две переменные, например в $login и $password 3)Нужно переписать php функцию(пункт3) выполняющую вход с переменными и чтобы отправлялись данные обратно в java функцию(пукнт1) Уважаемые форумчане! Очень срочно нужна ваша помощь...Буду очень благодарен если поможете...Просто сам не могу все реализовать...
Все как оказывается просто сделать! И так первое что нам нужно, что javascript применял 2 переменые PHP: function doLoad(value1,value2) { и так далее, отсылаем 2 перемыние скрипту PHP: req.send( { q: value1, q: value2 } ); потом уже в во втором скрипте делаешь операции 2 и 3 скрипта PHP: <?php require_once "lib/JsHttpRequest.php"; $JsHttpRequest =& new JsHttpRequest("windows-1251"); $login = @$_REQUEST['value1'], $pass = @$_REQUEST['value2'], if (isset($login) || isset($pass)){ //инклудим файл с настройками бд include('settings.php'); // Соединяемся с сервером базы данных ////////////// ... ////////////// $text='Удача въода or Х'//Текс который будет возращаться пользователю $_RESULT = array( "eval" => $text ); ?> Переписываешь на вот это PHP: document.getElementById('result').innerHTML = req.responseJS.eval; Вот вроде бы в кратце расказал))) ЗЫ.Писать не охото полность код!
Напиши пожалуйста два кода, которые у тебя получились в результате. Буду очень благодарен Кстати пункт2 и пункт3 один и тот же файл
Хотя бы так $name = mysql_real_escape_string($_POST['name']); $query = "SELECT `password` FROM `users` WHERE `name`='".$name."'"; но в идеале не слудует разрешать регистрировать имя содержащее спец символы, а только буквы, 0-9, нижнее подчёркивание и проверять потом это if (!preg_match("/^[A-Za-z0-9_]...
DIAgen же всё написал...Правда кажись нужно просто отправить запрос яваскриптом =) А php файл в за висимости от валидности данных сам сделает редирект. И вот ещё на всякий случай здесь поправить // Prepare request object (automatically choose GET or POST). req.open(null, 'handler.php', true); на req.open('post', 'handler.php', true); т.к. данные гонятся постом
2EXSlim, твой пример это далеко не идеал. Посмотри, статья специально для тебя. https://forum.antichat.ru/thread30641.html
Предложи свой... Я предложил регистрацию имён [A-Za-z0-9_] иначе пинком под зад. Чем неустраивает? Насчёт запроса-> Я ведь незнаю с какими именами он пустил в базу юзеров. Если бы формат имён был таким как я предложил, то перед запросом проверял бы имя как и при регистрации preg_mathch`ем. А так это недочёт первоначального разработчика. Вот тебе маленький квестик по теме =) _http://community.ho.com.ua/antichat/sql-test/ Фильтр: В базе всего 2 юзера: Цель: при правильном пароле админа появится ключевое слово. Его и написать сюда
Ты не понял, я не про mysql_real_escape_string(). А про if (!preg_match("/^[A-Za-z0-9_]... Зачем нужны эти филтры? Нужно только сделать так чтобы база нормально принимала данные. И mysql_real_escape_string() идеальный вариант если поле текстовое.
аааа.... квест ты бы не прошел =) там небыло уязвимости, хотя фильтр был такой =) ты тоже непонял чуток =) if (!preg_match("/^[A-Za-z0-9_] я бы поставил при регистрации, чтобы разрешить юзерам имена только из букв, цыфр и нижнего подчёркивания. Это неимеет отношения к фильтрации запроса в БД =)