如何在HTML <a> tag?</a>中插入PHP变量

时间:2011-05-17 22:23:08

标签: php html

这是我的源代码:

<html>
<body>
<?php

$query = $_REQUEST["search"];

Print "<iframe src="http://www.en.wikipedia.org/wiki/$query"></iframe>';

?>

</body>
</html>

我想把它放在用户输入术语的地方,然后自动将它们带到查询的维基百科页面。我当然知道我在这里做错了什么,但我无法弄清楚是什么。谢谢你的帮助!

3 个答案:

答案 0 :(得分:5)

将您的陈述更改为:

print "<iframe src=\"http://www.en.wikipedia.org/wiki/$query\"></iframe>";

你需要逃避引号。

答案 1 :(得分:3)

  1. 使用htmlspecialchars()将任何变量输出到HTML文本内容或属性值的方式相同。如果每次将用户数据删除到HTML时都不这样做,那么就会出现导致跨站点脚本(XSS)攻击的HTML注入漏洞。

  2. 在您的情况下,您要将变量插入到网址组件中,因此在进行HTML编码之前,您需要使用rawurlencode()进行网址编码。

  3. 好的......所以,如果您正在进行网址编码,您可以实际跳过HTML编码,因为HTML特有的所有字符也会变为安全%序列通过URL编码。

  4. PHP是一种模板语言。使用它,不要打它。每当你从PHP块中echoprint插入一个字符串时,你可能会为自己带来不必要的生活。

  5. 逐字包含文字内容,不要担心字符串文字中反斜杠转义的引号字符:

    <?php
        $query= $_REQUEST['search'];
    ?>
    <iframe src="http://en.wikipedia.org/wiki/<?php echo rawurlencode($query); ?>">
    </iframe>
    

答案 2 :(得分:1)

尽量不要在print / echo语句中包含巨大的html字符串,这样可以很容易地引用引用错误,并且很难跟踪代码的运行情况。

相反,你可以在html中包含变量作为许多模板语言的标记,但是使用简写回显功能<?= $variable; ?>

<html>
  <body>
    <iframe src="http://www.en.wikipedia.org/wiki/<?= $_REQUEST["search"]; ?>"></iframe>
  </body>
</html>