2012-07-24 54 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>";