2013-02-10 128 views
1

以下PHP字符串的輸出不正確。它顯示額外的(「>)在結束請幫助那些自己做錯了什麼,我做PHP字符串連接問題

$part2 = HTMLentities('<input type="hidden" name="custom" value="<?php print($_SESSION["muser"]."-".$_SESSION["mpass"]);?>">'); 
print $part2; 

感謝,KRA

回答

3

如果您在PHP模式是已經,您應該只使用字符串連接而不是<?php ?>語法;這個例子分割了HTML創建和逃逸部分

$html = '<input type="hidden" name="custom" value="' . htmlspecialchars($_SESSION["muser"] . "-" . $_SESSION["mpass"]) . '">'; 

$part2 = htmlentities($html); 
print $part2; 
+0

謝謝,它正在工作... – KRA 2013-02-10 16:05:12

0

這是因爲有一個額外>末 試試這個:?

$part2 = HTMLentities('<input type="hidden" name="custom" value="<?php print($_SESSION["muser"]."-".$_SESSION["mpass"]);?>"'); 
print $part2; 
+0

它是輸入標籤結束標記。如果我刪除它,它不起作用。 – KRA 2013-02-10 15:09:28

0

我認爲這更多的是你在找什麼:

$part = '<input type="hidden" name="custom" value="' . htmlentities($_SESSION['user'] . '-' . $_SESSION['mpass']) . '" />'; 

你有很多可憐的PHP語法在你的例子。

  • 我們使用<?php標籤將HTML轉換爲PHP。當你有一個PHP文件時,你可以考慮的一種方法就是你真的有一個HTML文檔 - 但你可以添加<?php標籤來編寫PHP代碼。在你的例子中,你試圖從內部打印HTML PHP,它可以承認複雜。您已經在PHP塊中,因此您不需要使用開頭的<?php標籤。
  • 當串聯字符串存儲在變量中時,不需要使用print函數。 print函數用於將文本寫入屏幕。您可以像我在編寫的示例中那樣使用變量名稱來組合字符串。
  • htmlentities用於將字符串中的任何HTML呈現爲文本。我們使用htmlentities來保留未知(用戶輸入的)數據來修改我們的HTML。像上面所做的那樣,在$ _SESSION變量上使用htmlentities是一個好主意,以確保它們不會破壞帶有無效HTML的input標記。在整個字符串上使用它只會打印您的HTML,就像它是原始文本一樣。

下面是它從一個PHP塊之外編寫方式:

<?php 
    // initial PHP code 
?> 

<input type="hidden" name="custom" value="<?php echo htmlentities($_SESSION['user'] . '-' . $_SESSION['mpass']) ?>" /> 

<?php 
    // continue PHP code 
?>