我想在我的网站上显示一个搜索框,显示我在我网站上的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错误(我认为它不希望在没有付费的情况下执行此操作)。
答案 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请不要滥用