2012-07-24 57 views
1

我会如何得到这个工作?单引号和双引号内的变量

$step = $_SERVER['PHP_SELF']. '?&step='; 
echo "<form action=". $step ."2"><select>"; 

它给了我一个(解析错误:语法错误,意外“<”)在第二行。 HALP?

+0

奖励积分?我将如何获得实际的url.php?step =以符合特定的内容?代码如下所示: 'code' if(empty($ _ GET ['step'])){} elseif($ _GET ['step'] = 2){} – jmalais 2012-07-24 02:46:47

+0

注意语法突出显示。您应该注意到字符串末尾有一个色差。这应该是你的第一个暗示。另外,请注意'PHP_SELF'的安全(XSS)问题:http://markjaquith.wordpress.com/2009/09/21/php-server-vars-not-safe-in-forms-or-links/ – 2012-07-24 02:52:55

回答

4

逃生的字符串里的语录:

echo "<form action=\"${step}2\"><select>"; 

这将解决您的问题,但它很可能是把它在HTML以及之前逃脱的属性值是一个好主意:

echo "<form action=\"" . htmlspecialchars($step) . "2\"><select>"; 
+0

安全问题? – jmalais 2012-07-24 02:50:36

3

了“2结束后的字符串逃逸,或使用单引号

$step = $_SERVER['PHP_SELF']. '?&step='; 
echo "<form action=\"", $step , "2\"><select>"; 
+0

如果您将其转义(而不是删除它),则HTML在参数值的开头缺少引号。 – hakre 2012-07-24 02:47:57

+0

啊!它的工作......谢谢。 – jmalais 2012-07-24 02:48:32

+0

@hakre :)好的。我太专注于语法错误,而不是最终的HTML。 – walrii 2012-07-24 02:54:22

2

尝试逃离双引号,或使用双/烧毛的组合:。

echo "<form action=\"". $step ."2\"><select>"; 

echo '<form action="'. $step .'2"><select>'; 
2

请务必注意颜色编码,或者使用具有颜色编码的编辑器(如果您的颜色不符合)

echo '<form action="'.$step.'2"><select>'; 
+0

我只是不熟悉颜色的含义和校对自己,因为我是新来的PHP。 – jmalais 2012-07-24 02:45:56

1
$step = $_SERVER['PHP_SELF']. '?&step='; 
echo "<form action=". $step .'"2"><select>'; 

$step = $_SERVER['PHP_SELF']. '?&step='; 
echo "<form action=". $step ."\"2\""><select>";