目前正通過這本書:初學PHP:Html在函數中顯示代碼?
http://commons.oreilly.com/wiki/index.php/PHP_Cookbook/Forms
的例子如下:
<?php
if (isset($_POST['stage']) && ('process' == $_POST['stage'])) {
process_form();
} else {
print_form();
}
function print_form() {
echo <<<END
<form action="$_SERVER[PHP_SELF]" method="post">
What is your first name?
<input type="text" name="first_name">
<input type="hidden" name="stage" value="process">
<input type="submit" value="Say Hello">
</form>
END;
}
function process_form() {
echo 'Hello ' . $_POST['first_name'] . '!';
}
?>
但是...當加載頁面吧,形式和按鈕顯示,但它也打印後的所有代碼
因此...加載的頁面正確顯示錶格,但隨後顯示文本:
END; }
function process_form() {
echo 'Hello ' . $_POST['first_name'] . '!';
}
?>
「結束」需要在行首,而不是縮進 - 它不會識別它,如果它縮進... –
我建議**不**使用HEREDOC語法。有幾種情況可以提供幫助,但通常在這些情況下,您正在爲內容或模板加載文件。另外,這不是一本很好的書。通過將任意數據輸入到HTML的上下文中而無需轉義,您已經打開了自己的XSS攻擊。 **總是**使用'htmlspecialchars()'。 (除非你不輸出HTML ...) – Brad
@Brad是的,你說得對,使用模板更受歡迎。在代碼中直接使用POST或GET數據也是不好的做法,可能是某個地方提到的食譜(所有用戶輸入都被污染了)。但至少我們已經得到了他的問題回答;) –