1

我想在 div 元素中加载一个域url

我有两个问题:

  • 如果使用 http 协议加载域,例如“google.com”,则无法正确加载地址图像,而是加载页面!
  • 如果使用 https 协议加载谷歌地图会发出警告并且永远不会工作!

这是我的代码:

加载.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']);
?>

它加载谷歌地图没有任何错误。

编辑

作为对评论的回应,以下是可能的最佳解决方案。

您正在寻找的设置是allow_url_fopen.

allow_url_fopen = On 在 php.ini 文件中设置。

您有两种方法可以在不更改 php.ini 的情况下绕过它,其中一种是使用fsockopen,另一种是使用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 回答