• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Не могу собрать данные из Xml

  • Автор темы Linel
  • Дата начала
L

Linel

Возникла проблема.
С помощью Ajax'a пытаюсь сделать проверку данных, перед занесением их в БД. Данные проверяются с помощью PHP скрипта. В начале скрипта создаю массив $errors. Если какое либо из полей пользователем было заполнено неправильно, в массив добавляется элемент. Далее, пробегаюсь по массиву и создаю XML документ. Структура такова:

<response>
<error>Ошибка 1</error>
<error>Ошибка 2</error>
<error>Ошибка 3</error>
...
</response>

В FF, Opere, Chrome работает нормально. В IE не работает. Включил Script Debugging, пишет, что xml_root - null.

Собственно коды:
Это скрипт, который генерирует XML структуру:
PHP:
<?php
$errors = array();
$reg_login = $_GET["reg_login"];
$reg_password = $_GET["reg_password"];
$reg_password2 = $_GET["reg_password2"];
$reg_mail = $_GET["reg_mail"];
$reg_sex = $_GET["reg_sex"];
$reg_captcha = $_GET["reg_captcha"];

if (@!$reg_login)
$errors[] = "Incorrect Login!";
if (@!$reg_password)
$errors[] = "Incorrect Password!";
if (@!$reg_password2)
$errors[] = "Incorrect Password2!";
if (@!$reg_mail)
$errors[] = "Incorrect mail!";
if (@!$reg_sex)
$errors[] = "Incorrect Sex!";
if (@!$reg_captcha)
$errors[] = "Incorrect Captcha";

Header("Content-Type: text/xml");
?>
<?xml version="1.0" encoding="UTF8" standalone="yes" ?>
<response>
<?php
if (count($errors) != 0)
{
foreach ($errors as $error)
{
echo "<error>".$error."</error>";
}
}
?>
</response>

Функция, которая посылает данные скрипту:
Код:
function register_me()
{
if (xml_http)
{
regis_login = document.getElementById("reg_login").value;
regis_password = document.getElementById("reg_password").value;
regis_password2 = document.getElementById("reg_password2").value;
regis_mail = document.getElementById("reg_mail").value;
regis_sex = document.getElementById("sex").value;
regis_captcha = document.getElementById("captcha").value;

xml_http.open("GET", "pages/check_reg.php?reg_login="+regis_login+"&reg_password="+regis_password, true);
xml_http.onreadystatechange = reg_result;
xml_http.send(null);
}
}

И функция, которая пытается работать с XML структурой:
Код:
function reg_result()
{
if (xml_http.readyState == 4 && xml_http.status == 200)
{
xml_response = xml_http.responseXML;
xml_root = xml_response.documentElement;
xml_errors = xml_root.getElementsByTagName("error");
if (xml_errors.length != 0)
{
display = "";
for (i=0; i<xml_errors.length; i++)
{
xml_error = xml_errors.item(i).firstChild.data;
display += "<br>"+xml_error;
}
}
}
}
В этом месте:
xml_errors = xml_root.getElementsByTagName("error");
IE ругается, говорит, что xml_root у меня NULL.

Помогите, пожалуйста, разобраться. Собственно в чем может быть проблема? В других браузерах ведь работает. Я так понимаю, что эта проблема на стороне клиента? Или она может быть на стороне сервера? Как решить?
 
L

Linel

Если создать .xml файл - читает нормально. Если сгенерировать его средствами PHP - не работает.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!