ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Php и Ajax
  #1  
Старый 11.01.2007, 16:25
Аватар для skzi
skzi
Познающий
Регистрация: 31.12.2006
Сообщений: 46
Провел на форуме:
84612

Репутация: 7
Отправить сообщение для skzi с помощью ICQ
Post Php и Ajax

ТО что имеем:
1)Есть Java код, который отправляет строку в файл php и получает md5 код посредствами AJAx
Код:
<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 строку
Код:
<?php
require_once "lib/JsHttpRequest.php";
$JsHttpRequest =& new JsHttpRequest("windows-1251");
$_RESULT = array(
  "q"     => @$_REQUEST['q'],
  "md5"   => md5(@$_REQUEST['q']),
); 
?>
3)Есть php код, выполняющий авторизацию пользователя из MySQL
Код:
<?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)

Уважаемые форумчане!
Очень срочно нужна ваша помощь...Буду очень благодарен если поможете...Просто сам не могу все реализовать...
 
Ответить с цитированием

  #2  
Старый 11.01.2007, 21:27
Аватар для DIAgen
DIAgen
Познавший АНТИЧАТ
Регистрация: 02.05.2006
Сообщений: 1,191
Провел на форуме:
7364332

Репутация: 1276


По умолчанию

Все как оказывается просто сделать!
И так первое что нам нужно, что javascript применял 2 переменые
PHP код:
function doLoad(value1,value2) { 
и так далее, отсылаем 2 перемыние скрипту
PHP код:
req.send( { qvalue1qvalue2 } ); 
потом уже в во втором скрипте делаешь операции 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; 
Вот вроде бы в кратце расказал)))

ЗЫ.Писать не охото полность код!

Последний раз редактировалось DIAgen; 11.01.2007 в 21:32..
 
Ответить с цитированием

  #3  
Старый 12.01.2007, 00:27
Аватар для EXSlim
EXSlim
Познающий
Регистрация: 09.10.2006
Сообщений: 92
Провел на форуме:
347686

Репутация: 87
Отправить сообщение для EXSlim с помощью ICQ
По умолчанию

мда...
Цитата:
$query = "SELECT password FROM users WHERE name='".$_POST['name']."'";
Сколько ещё надо статей написать о MySQL-Inj.....?


Сплоит->В name вбиваем:
Цитата:
999999 UNION SELECT concat(name,':',password) FROM users INTO OUTFILE '<путь в веб-дыру>'
 
Ответить с цитированием

  #4  
Старый 12.01.2007, 00:40
Аватар для skzi
skzi
Познающий
Регистрация: 31.12.2006
Сообщений: 46
Провел на форуме:
84612

Репутация: 7
Отправить сообщение для skzi с помощью ICQ
По умолчанию

Напиши пожалуйста два кода, которые у тебя получились в результате.
Буду очень благодарен

Кстати пункт2 и пункт3 один и тот же файл

Последний раз редактировалось skzi; 12.01.2007 в 01:15..
 
Ответить с цитированием

  #5  
Старый 12.01.2007, 00:40
Аватар для skzi
skzi
Познающий
Регистрация: 31.12.2006
Сообщений: 46
Провел на форуме:
84612

Репутация: 7
Отправить сообщение для skzi с помощью ICQ
По умолчанию

EXSlim
Напиши пожалуйста правильный запрос
 
Ответить с цитированием

  #6  
Старый 12.01.2007, 01:01
Аватар для EXSlim
EXSlim
Познающий
Регистрация: 09.10.2006
Сообщений: 92
Провел на форуме:
347686

Репутация: 87
Отправить сообщение для EXSlim с помощью ICQ
По умолчанию

Хотя бы так

$name = mysql_real_escape_string($_POST['name']);

$query = "SELECT `password` FROM `users` WHERE `name`='".$name."'";

но в идеале не слудует разрешать регистрировать имя содержащее спец символы, а только буквы, 0-9, нижнее подчёркивание и проверять потом это

if (!preg_match("/^[A-Za-z0-9_]...
 
Ответить с цитированием

  #7  
Старый 12.01.2007, 01:10
Аватар для skzi
skzi
Познающий
Регистрация: 31.12.2006
Сообщений: 46
Провел на форуме:
84612

Репутация: 7
Отправить сообщение для skzi с помощью ICQ
По умолчанию

Спасибо, а ты можешь посмотреть мой первый пост
 
Ответить с цитированием

  #8  
Старый 12.01.2007, 02:05
Аватар для EXSlim
EXSlim
Познающий
Регистрация: 09.10.2006
Сообщений: 92
Провел на форуме:
347686

Репутация: 87
Отправить сообщение для EXSlim с помощью ICQ
По умолчанию

DIAgen же всё написал...Правда кажись нужно просто отправить запрос яваскриптом =)

А php файл в за висимости от валидности данных сам сделает редирект. И вот ещё на всякий случай здесь поправить

// Prepare request object (automatically choose GET or POST).
req.open(null, 'handler.php', true);

на

req.open('post', 'handler.php', true); т.к. данные гонятся постом
 
Ответить с цитированием

  #9  
Старый 12.01.2007, 03:03
Аватар для skzi
skzi
Познающий
Регистрация: 31.12.2006
Сообщений: 46
Провел на форуме:
84612

Репутация: 7
Отправить сообщение для skzi с помощью ICQ
По умолчанию

Если можно, лучше прикрепите два файла или напишите их сюда... что то не получается у меня...
 
Ответить с цитированием

  #10  
Старый 12.01.2007, 07:29
Аватар для DIAgen
DIAgen
Познавший АНТИЧАТ
Регистрация: 02.05.2006
Сообщений: 1,191
Провел на форуме:
7364332

Репутация: 1276


По умолчанию

Цитата:
Сообщение от EXSlim  
А php файл в за висимости от валидности данных сам сделает редирект. И вот ещё на всякий случай здесь поправить
// Prepare request object (automatically choose GET or POST).
req.open(null, 'handler.php', true);
на
req.open('post', 'handler.php', true); т.к. данные гонятся постом
А какая разница, там автоматически выберается метод отправки данных!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Books PSalm69 Избранное 248 27.10.2009 04:52
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ