Php 跨站点获取html,显示它并获取元素值

Php 跨站点获取html,显示它并获取元素值,php,javascript,ajax,cross-domain,Php,Javascript,Ajax,Cross Domain,我需要从aspx站点获得完整的输出。当用户离开时,我会将某些特定元素中的内容保存在cookie中。问题是aspx位于我无权访问的域上。我希望输出像在iframe中一样,因此链接需要可以单击,但它不会离开我的页面 我想到了使用PHP代理的AJAX或者可以修改内容的iframe。 这可能吗? 如果可能,并且涉及服务器端代码,我想知道是否有任何免费的web主机支持完整的代码(例如,几乎每个免费的web主机都为PHP启用了safe_模式) 编辑:我想显示此页面:。URL不需要更改,它只向服务器发送请求(

我需要从aspx站点获得完整的输出。当用户离开时,我会将某些特定元素中的内容保存在cookie中。问题是aspx位于我无权访问的域上。我希望输出像在iframe中一样,因此链接需要可以单击,但它不会离开我的页面

我想到了使用PHP代理的AJAX或者可以修改内容的iframe。 这可能吗? 如果可能,并且涉及服务器端代码,我想知道是否有任何免费的web主机支持完整的代码(例如,几乎每个免费的web主机都为PHP启用了safe_模式)

编辑:我想显示此页面:。URL不需要更改,它只向服务器发送请求(考虑通过JavaScript)。当用户离开时,我将看到选择框id=“TypeDropDownList”中的内容以及选择框id=“ScheduleIDDropDownList”中的内容

当用户返回到我的页面时,我将通过URL将这些值打印到页面上,如下所示
”http://www.novasoftware.se/webviewer/(S(lv1isca2txx1bu45c3kvic45))/design1.aspx?schoolid=27500&code=82820&type=“+type+”&id=“+id+”

在发布本文之前,我在000webhost上尝试了几个php代理脚本。 例如:

<?php
ob_start();

function logf($message) {
  $fd = fopen('proxy.log', "a");
  fwrite($fd, $message . "\n");
  fclose($fd);
}

?>
<?
$url = $_REQUEST['url'];
logf($url);
$curl_handle = curl_init($url);
curl_setopt($curl_handle, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, "Owen's AJAX Proxy");

$content = curl_exec($curl_handle);
$content_type = curl_getinfo($curl_handle, CURLINFO_CONTENT_TYPE);
curl_close($curl_handle);
header("Content-Type: $content_type");
echo $content;
ob_flush();
?>


您需要使用PHP,因为Javascript不允许跨域请求。您的PHP代码将从字面上抓取客户端想要的页面,并对其进行处理(使用原始href链接到的页面的get变量将链接的href更改为您的页面)。当他们单击链接时,他们将被发送到当前所在的页面,但该页面将抓取新页面并返回该页面(也处理该页面),依此类推


000webhost是一个很好的免费webhost,它允许您执行大部分PHP功能,并且不在您的站点上放置广告。

您需要使用PHP,因为Javascript不允许跨域请求。您的PHP代码将直接抓取客户想要的页面,并对其进行处理(使用原始href链接到的页面的get变量将链接的href更改为您的页面)。当他们单击链接时,他们将被发送到当前所在的同一页面,但该页面将抓取新页面并返回该页面(也处理该页面),依此类推


000webhost是一个很好的免费webhost,它允许您执行大多数PHP功能,并且不在站点上放置广告。

要将整个aspx输出作为字符串进行操作,您可以使用
file\u get\u contents(http://yoursite.com/yourpage.aspx);

为了获得最佳结果,请通过http打开一个流作为上下文

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>

要将整个aspx输出作为字符串进行操作,可以使用
文件\u get\u内容(http://yoursite.com/yourpage.aspx);

为了获得最佳结果,请通过http打开一个流作为上下文

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>

多亏了greg,我可以创建这个脚本来获取页面

<html>
<head>
</head>
<body>
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);
$host = 'http://www.novasoftware.se/webviewer/(S(bkjwdqntqzife4251x4sdx45))/';
$url = '/design1.aspx?schoolid=27500&code=82820&type=3&id={7294F285-A5CB-47D6-B268-E950CA205560}';
$changetothis='src="'.$host;
// Open the file using the HTTP headers set above
$file = file_get_contents($host.$url, false, $context);
$changed = str_replace('src="', $changetothis,$file);
echo $changed;

?>
</body>
</html>

多亏了greg,我可以创建这个脚本来获取页面

<html>
<head>
</head>
<body>
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);
$host = 'http://www.novasoftware.se/webviewer/(S(bkjwdqntqzife4251x4sdx45))/';
$url = '/design1.aspx?schoolid=27500&code=82820&type=3&id={7294F285-A5CB-47D6-B268-E950CA205560}';
$changetothis='src="'.$host;
// Open the file using the HTTP headers set above
$file = file_get_contents($host.$url, false, $context);
$changed = str_replace('src="', $changetothis,$file);
echo $changed;

?>
</body>
</html>


必须有一个更简单的方法。你的最终目标是什么?你到底想做什么?我同意斯蒂芬的观点…我以前做过类似的事情,但并不漂亮。必须有一个更简单的方法。你的最终目标是什么?你到底想做什么?我同意斯蒂芬的观点…我以前做过类似的事情,但不漂亮。我哈哈我在这里发布之前尝试过000webhost,我尝试过使用cURL,但不幸的是它不起作用。他们也打开了安全模式,我也不能在那里使用fopen。我在这里发布之前尝试过000webhost,我尝试过使用cURL,不幸的是它不起作用。他们也打开了安全模式,我也不能在那里使用fopen。谢谢,我我稍后会尝试,并告诉您我是否能正常工作。首先,我需要找到一个支持它的免费web主机。如果我找到了,我当然会写下它是哪一个。我在WampServer中尝试了您的脚本,但当我尝试查看aspx页面时,我收到以下错误:找不到请求的URL/MZDesign1.aspx在此服务器上找不到。我输入了{7294F285-A5CB-47D6-B268-E950CA205560}在文件\u get\u content中,我想我需要更改所有URL,看看之后会发生什么。谢谢,我稍后会尝试,并告诉你我是否能正常工作。首先,我需要找到一个支持它的免费web主机。如果我找到一个,我当然会写下它是哪一个。我在WampServer中尝试了你的脚本,但当我尝试查看aspx页面时,我发现这个错误r:找不到请求的URL/MZDesign1.aspx在此服务器上找不到。我在文件_get_content中输入了{7294F285-A5CB-47D6-B268-E950CA205560}。我想我需要更改所有URL,看看之后会发生什么