PHP语法错误,意外'"';,应为T_STRING或T_VARIABLE或T_NUM_STRING


PHP syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING

下面的代码给出了错误。

    <?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>';
?>

编辑:一些澄清。。。

  1. 这些是有效的字符串:

    $foo = "Hello, World!";
    $foo = "Hello, 'World!'";
    $foo = "Hello, '"World!'"";
    

    这是而不是

    $foo = "Hello, "World!"";
    
  2. 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>";
?>