如何在iframe中显示表单输出?

时间:2013-12-20 23:35:21

标签: forms iframe google-search xhtml-1.0-strict

我想在我的网站上显示一个搜索框,显示我在我网站上的iframe(XHTML 1.0 Strict)中搜索我自己网站的结果。

我无法弄清楚如何使用Google CSE,所以我正试图自己动手。

我有这个测试代码:

<iframe name='test' id='test'></iframe>

<form action='http://cnn.com' target='test'> 
  <input type="text" name="q" size="20" maxlength="255" /> 
  <input type='submit' value="Search" /> 
</form> 

<form action="http://www.google.com/search">
  <input type="text" name="q" size="20" maxlength="255" /> 
  <input type="hidden" name="sitesearch" value="mysite.com" />
  <input type="submit" value="Search" />
</form>

<form action="http://www.google.com/search" target='test'>
  <input type="text" name="q" size="20" maxlength="255" /> 
  <input type="hidden" name="sitesearch" value="mysite.com" />
  <input type="submit" value="Search" />
</form>

正如预期的那样,上面的第一个表单将CNN页面加载到iframe“test”中。

第二种形式可以正常工作,只不过它会在新页面中显示结果(而不是在iframe中)。

第三种形式(与第二种形式相同,除了“目标”属性)在按下提交按钮时根本不做任何事情。

我做错了什么?我怎样才能让W3C Validator对此感到满意?


编辑:我想我差不多了:

<iframe name='test' id='test'></iframe>

<form method='post' action="test.php" target='test'>
  <input type="text" name="q" size="20" maxlength="255" /> 
  <input type="submit" value="Search" />
</form>

然后在test.php:

<?php 
  $query = $_POST["q"];
  print file_get_contents("http://www.google.com/search?q=$query&sitesearch=mysite.com");
?>

我认为这在语法上是正确的 - 唯一的问题是Google回复了503错误(我认为它不希望在没有付费的情况下执行此操作)。

1 个答案:

答案 0 :(得分:1)

<?php
    $useragent = "Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/870; U; id) Presto/2.4.15";
    $ch = curl_init ("");
    curl_setopt ($ch, CURLOPT_URL, "http://www.google.com/search?q=".urlencode($_GET["q"])."&btnG=Search");
    curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);   
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    echo $output = curl_exec ($ch);
    curl_close($ch);    
?>

这是可以在test.php文件中使用的PHP代码,但

请记住,这是针对Google TOS请不要滥用