2011-06-09 31 views
0

什麼我是這樣的:如何在回聲函數中逃避PHP?

function add_email_form() { 

echo "<form class=\"email-me-form\" id=\"initialize\" action=\"<?php echo $_SERVER[PHP_SELF] ?>\" method=\"post\" name=\"contact_me\">\n"; 

} 

如何使這個語法正確的?

回答

6

除非需要,否則不要使用雙引號。使用單引號,'。這樣,除了像\ n這樣的控制字符外,您不必轉義任何內容,並且在這種情況下,請刪除雙引號。所以,上面的是:(加換行符我不會導致水平滾動條)

echo '<form class="email-me-form" id="intialize" action="'.$_SERVER['PHP_SELF'].'" 
     method="post" name="contact_me">'."\n"; 

你不需要做用htmlspecialchars()看起來像你想要什麼。

您不需要(並且實際上不能)在PHP語句中調用「<?php echo?>」。只有當你在PHP之外時,它才能工作。在這種情況下,只需與.連接即可。如註釋中所述,您應該在數組鍵時引用數組鍵,否則PHP會發出警告並可能會造成混淆。

+0

沒有報價PHP_SELF將導致一個警告,如果他們打開。 – Erik 2011-06-09 20:56:12

+0

出於某種原因,我認爲這是一個常數,但你是對的,這是一個字符串鍵,需要引用。編輯。 – Andrew 2011-06-09 20:58:44

+0

這是你應該這樣做的方式。我總是發現引用混淆。但是,如果您需要替換變量或特殊字符,例如真正使用單引號,並且只使用雙引號。 「\ n」 – Jan 2011-06-09 21:06:29

1

事情是這樣:

echo "<form class=\"email-me-form\" id=\"initialize\" action=\"", 
    htmlspecialchars($_SERVER['PHP_SELF']), 
    "\" method=\"post\" name=\"contact_me\">\n"; 
+0

如果用戶完成了define('PHP_SELF','something')',那麼這將失敗。 PHP會很禮貌,並且假設你的意思是'$ _SERVER ['PHP_SELF']',但是如果你已經啓用了它們,就會吐出警告。 – 2011-06-09 21:06:07

0
function add_email_form() { 
    echo "<form class=\"email-me-form\" id=\"initialize\" action=\"" . $_SERVER[PHP_SELF] . "\" method=\"post\" name=\"contact_me\">\n"; 
}