1

div要素にドメインURLをロードしたい

私は2つの問題があります:

  • ドメインをロードする場合、たとえば「google.com」とhttpプロトコルを使用すると、アドレス画像が正しくロードされませんが、ページがロードされます。
  • httpsプロトコルでグーグルマップをロードする場合は警告を発し、決して動作しません!

これが私のコードです:

load.php

<html>
<head>
    <title></title>
    <script type="text/javascript" src='jquery.js'></script>
</head>
<body>
    <div></div>
    <script type="text/javascript">
        $(function(){
            $('div').load('/x-request.php?url=googleMapAdress');
        });
    </script>
</body>
</html>

x-request.php

<?php
    echo file_get_contents('https://' . $_GET['url']);
?>

注:iframeタグは使用したくないので、コードにはajaxコードが必要です。

解決策は何ですか?

//詳細説明

外部ページを取得してdiv要素に完全にロードするにはどうすればよいですか?これは、=> href、srcおよびすべてのリンクが実際に機能することを意味します。

4

1 に答える 1

1

以下のコードを試してみましたが、期待どおりに動作しています。

<html>
<head>
    <title></title>
    <script type="text/javascript" src='js/jquery.js'></script>
</head>
<body>
    <div></div>
    <script type="text/javascript">
        $(function(){
            $('div').load('x-request.php?url=maps.google.com');
        });
    </script>
</body>
</html>

phpコード

<?php
    echo file_get_contents('https://' . $_GET['url']);
?>

エラーなしで Google マップを読み込んでいます。

編集

コメントに応じて、可能な最善の解決策を以下に示します。

お探しの設定は ですallow_url_fopen

allow_url_fopen = On php.ini ファイルで設定します。

php.ini を変更せずに回避するには 2 つの方法があります。1 つはfsockopenを使用する方法で、もう 1 つはcURLを使用する方法です。

カールの例

function get_content($URL)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $URL);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

echo get_content('http://example.com');

curl のクイック リファレンス リンクは次のとおりです。

http://www.kanersan.com/blog.php?blogId=45

http://www.tomjepson.co.uk/enabling-curl-in-php-php-ini-wamp-xamp-ubuntu/

<php
$ch = curl_init();// set url
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
//return the as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_BINARYTRANSFER, true);
// echo output string
$output = curl_exec($ch);
$url = $_GET['url'];


$path = 'http://'.$url.'/';
$search = '#url\((?!\s*[\'"]?(?:https?:)?//)\s*([\'"])?#';
$replace = "url($1{$path}";
$output = preg_replace($search, $replace, $output);

echo $output;

// close curl resource to free up system resources
curl_close($ch);
于 2013-01-18T07:48:10.107 に答える