下面的代码给出了错误。
<?php
echo "<a href='prefs.php?username=$PHP_USER'>$lang_menu["prefs"]</a>";
?>
我很确定这与我请求2个php变量有关,不知道如何解决。
替换为
<?php
echo "<a href='prefs.php?username=".$PHP_USER."'>".$lang_menu['prefs']."</a>";
?>
显然,您不能在双引号字符串中写入无标题的双引号。我建议不要将无标题的文本写入HTML和URL。试试这个:
<?php
echo '<a href="prefs.php?username=' . rawurlencode($PHP_USER) . '">' . htmlspecialchars($lang_menu["prefs"]) . '</a>';
?>
编辑:一些澄清。。。
这些是有效的字符串:
$foo = "Hello, World!"; $foo = "Hello, 'World!'"; $foo = "Hello, '"World!'"";
这是而不是:
$foo = "Hello, "World!"";
SQL注入,顾名思义,是指称为SQL的数据库查询语言。此代码不包含SQL,并且根本不与任何数据库交互。
所以这与点或SQL注入无关。它是关于在某些语义上下文中具有特殊含义的某些字符。这是关于文本中的文本。
$variables
用引号"
:拆分
echo "<a href='prefs.php?username=".$PHP_USER."'>".$lang_menu['prefs']."</a>";
使用此:
<?php
echo "<a href='"prefs.php?username=".$PHP_USER."'" >".$lang_menu["prefs"]."</a>";
?>
试试这个
<?php
echo "<a href='prefs.php?username=".$PHP_USER."'>".$lang_menu['prefs']."</a>";
?>