получение данных из iframe

Discussion in 'PHP' started by DIAgen, 2 Jun 2007.

  1. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    Суть проблемы в том как получить данных из iframe, iframe грузиться с другого подомена, уже все излазил, везде написано что не возможно, но нет таких вещей которые не льзя сделать...
     
  2. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Правильно говорят. Это сделанно из соображения безопасности. Точно также, как и нельзя Value у <input type="File"> поменять и засабмитить его :)
     
  3. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    На серваке отключены сокеты, мне нужно взять с друго сайта страницу и сохранить ее у себя, точнее просто прочитать данные с того сайта, и обработать их...
     
  4. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Имхо, для file_get_contents библиотека php_sockets не нужна, хотя могу ошибаться
     
  5. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    например необходимо во фрейм загрузить данные с яндекс погоды, потом при помощи явы считать его как текст, а потом уже распоряжаться им на мое усмотрение
     
  6. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Юзай Ajax
     
  7. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    Приведи конкретный пример, а то я в яве не силен :)




    *** да, все делается в браузере, но прокси не получается использовать, т.к. отрублены сокеты - safe mode мать его
     
  8. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Code:
    <html>
    <head>
    </head>
    <body>
    
    <script>
    function GetXmlHttpObject()
      { 
      var objXMLHttp=null;
      if (window.XMLHttpRequest)
        {
        objXMLHttp=new XMLHttpRequest();
        }
      else 
        if (window.ActiveXObject)
          {
          objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
      return objXMLHttp;
      }
      
     function stateChanged() 
        { 
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
          { 
    	    alert(xmlHttp.responseText);
          } 
        }
    	
    xmlHttp=GetXmlHttpObject();
    var url="http://ya.ru";
    xmlHttp.onreadystatechange = stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);  
    </script>
    
    </body>
    </html>
    Получаем исходник ya.ru... В ИЕ работает в Опере нет.
     
    1 person likes this.
  9. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Как ты думаешь, я прежде чем запостить проверил или нет?
     
  10. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    И так полная инфа...
    У меня загружается определеный адрес в ифрайм, мне нужно при помощи явы, считать полностью весь текс который загрузился в ифрайм со сторонего сайта, и передать содержимое скрипту для обработки полученых данных с ифрайма.
    Можно было бы проще открыть адрес через сокеты и считать страницу, только сервак работает в SAFE_MODE и сокеты отрублены.

    P.S. Блин получается как масло масленое...)))
     
  11. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Я говорю, проверь file_get_contents, потому что она, возможно, будет работать .
     
  12. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Когда скипт загружает ya.ru, вызывается alert(xmlHttp.responseText). Но это, честно говоря, извращение...
     
  13. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    Еще будут какие нибудь мысли по этому вопросу?!
     
  14. nEsJs

    nEsJs New Member

    Joined:
    3 Feb 2006
    Messages:
    18
    Likes Received:
    4
    Reputations:
    0
    PHP:
    <?php
    $i
    =0;
    $f=file("URI");
    while(
    $f[$i]){
     echo(
    $f[$i]);
     ++
    $i;
    }
    ?>
    работает в safe_mode
    а если с фреймами хочешь то window.frames[0].body.innerHTML
     
  15. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Напиши скрипт, который будет делать что надо и выводить ответ в виде js, попроси кого-нибудь с хостингом, который держит сокеты повесить у себя и инклудь его...
     
  16. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    У AJAX'sa тоже так же как и у iframe такое же ограничение, и по этому тоже не катит. Буду еще думать еще может быть что нибудь придумаю...
     
  17. -=Ru=-

    -=Ru=- New Member

    Joined:
    3 Mar 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <title>Untitled Page</title>
    <script>
    function swapIFrame()
    {
    // ...
    document.getElementById("elmentIFrame").src = "http://yandex.ru/";
    // ...
    }

    function parseHTML()
    {
    // ...
    var parseString = document.frames("elmentIFrame").document.body.document.activeElement.innerHTML;
    // ...
    }

    </script>
    </head>
    <body>
    <!- ... -->
    <iframe id="elmentIFrame" onload="parseHTML()" />
    <!- ... -->
    </body>
    </html>
    ...
    После этого следует обыкновенное парсирование HTML кода
     
  18. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    -=Ru=-, так не получится, потому что нельзя так просто читать данные с других доменов, иначе всё бы уже похекали.
    Code:
    ...document.body.document.activeElement...
    Загадочные круги по DOM'у...
     
  19. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    Проверено не в лисе, не в ишаке, и не в опере не канает:(
    Отсюды вывод не возможно выполнить такое:)
     
  20. -=Ru=-

    -=Ru=- New Member

    Joined:
    3 Mar 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Побробуйте .hta
    У меня работает.
    в .htm можно получить "Access is denied".

    Запустите следующий код с помощью .hta файла:
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <title>Untitled Page</title>
    <script>
    function swapIFrame()
    {
    // ...
    document.getElementById("elmentIFrame").src = "http://www.google.ru/";
    // ...
    }

    function parseHTML()
    {
    // ...
    var parseString = document.frames("elmentIFrame").document.body.document.activeElement.outerHTML;
    alert(parseString);
    //debugger;
    // ...
    }

    </script>
    </head>
    <body onload="swapIFrame()">
    <!- ... -->
    <iframe id="elmentIFrame" onload="parseHTML()" />
    <!- ... -->
    </body>
    </html>