Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 24.12.2013, 09:57   #1
gaintbiz
Пользователь
 
Регистрация: 14.11.2013
Сообщений: 11
По умолчанию Как заполнить форму кроссдоменно

Приветствую ребята!

Осталось совсем чуть чуть, но не могу понять как это сделать.

Задача:

- Заполнить инпуты на стороннем сайте динамически, так, чтобы я видел результат заполнения (типа Roboform).

Имеется js:
Код HTML:
<html>
<script type="text/javascript">
  /* Данная функция создаёт кроссбраузерный объект XMLHTTP */
  function getXmlHttp() {
    var xmlhttp;
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
      xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
  }
  function send() {
    
    var xmlhttp = getXmlHttp(); // Создаём объект XMLHTTP
	
    xmlhttp.open('POST', 'SendData.php', true); // Открываем асинхронное соединение
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Отправляем кодировку
    xmlhttp.send("site=" + encodeURIComponent("http://site.com")); // Отправляем POST-запрос
		
    xmlhttp.onreadystatechange = function() { // Ждём ответа от сервера
      if (xmlhttp.readyState == 4) { // Ответ пришёл
        if(xmlhttp.status == 200) { // Сервер вернул код 200 (что хорошо)
			
	
          document.getElementById("yandex").innerHTML = xmlhttp.responseText; // Выводим ответ сервера
 	       		 
	}

}
		  
			  
        }
      }
   
</script>
<div>
  <input type="button" value="Отправить" onclick="send()" />
  <div id="yandex"></div>
</div>


</html>


Код Php:

PHP код:
<?php
  
echo file_get_contents($_POST["site"]); // Отправляем запрос и выводим ответ
?>
Вроде работает, страницу получаю, но данные не могу обновить.

Например есть <input name="name" type="text" id="nameid" >

Последний раз редактировалось Stilet; 25.12.2013 в 11:27. Причина: Правка
gaintbiz вне форума Ответить с цитированием
Старый 24.12.2013, 10:31   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Консоль ошибок пуста?
Выведите xmlhttp.responseText - есть ли в нём что-нибудь?
^-.-^ Клавогонки.ру - набирай скорость!
Fenex вне форума Ответить с цитированием
Старый 24.12.2013, 11:37   #3
gaintbiz
Пользователь
 
Регистрация: 14.11.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Консоль ошибок пуста?
Выведите xmlhttp.responseText - есть ли в нём что-нибудь?
Спасибо, этот вопрос я уже сам решил.

Теперь следующая проблема:

При попытке отправки заполненных полей и эмуляции кнопки "Отправить" мне выводится сообщение, что страницы не существует, т.е. я получается работал с копией страницы сайта, а как же заполнить форму конкретно на сайте? Курлом?
gaintbiz вне форума Ответить с цитированием
Старый 24.12.2013, 12:59   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

у вас не копия а просто выводиться инфо текстом, с чужого сервера через ваш, и всё, просто текст
далее вы должны не только поля заполнить но и сам запрос переделать, а вот как зависит от того чего вам в итоге получить надо, а про это вы уже 2 тему ни слова.
может получиться и так что все это вам не надо делать... вощем тз надо
eval вне форума Ответить с цитированием
Старый 25.12.2013, 06:56   #5
gaintbiz
Пользователь
 
Регистрация: 14.11.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
у вас не копия а просто выводиться инфо текстом, с чужого сервера через ваш, и всё, просто текст
далее вы должны не только поля заполнить но и сам запрос переделать, а вот как зависит от того чего вам в итоге получить надо, а про это вы уже 2 тему ни слова.
может получиться и так что все это вам не надо делать... вощем тз надо
Я понял вас. Просто в таком случае там проблем много, а именно:
- страница на aspx))
- viewstate и другая лабуда там, которую надо включать в Post-запрос
Пробовал парсить viewstate, но в итоге он не совпадает, подозреваю, что нужно сессию или сокет применять, в этом мало опыта.

Поэтому ищу варианты просто хорошей эмуляции браузера, так, чтоб заполнить поля и нажать кнопку. Вот например как работает Humen Emulator. Мне такое нужно.
gaintbiz вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается заполнить форму Andrey85 Работа с сетью в Delphi 7 13.11.2010 18:08
Как заполнить таблицу БД через форму в Delphi nikta БД в Delphi 10 06.05.2010 17:30
Одну и ту же форму использовать как MDI-child форму и как модальную форму? PrimaryPro Общие вопросы Delphi 2 10.03.2010 21:52
Как заполнить форму данными из таблицы применяя макет dgadavin Microsoft Office Excel 5 11.09.2009 14:45
Как заполнить форму 6-иугольными объектами DeKot Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 26.08.2008 21:59