2014-08-27 111 views
0

因此,在我的PHP文件中,我有多組開啓和關閉php標籤。基本上,它看起來是這樣的:標籤之間的PHP全局變量

<input id="myID" type="text" value="<?php 
$value="x"; 
echo $value; 
?>"> 
<input id="yourID" type="text" value="<?php echo $someValue; ?>" 

反正是有參考$value在第二組PHP括號?我嘗試使用GLOBAL['index']來引用$value,但我得到一個未定義的索引錯誤。

任何幫助或指導表示讚賞。

+0

您可以再次使用'$ value'。 – showdev 2014-08-27 21:31:39

+0

'$ value'應該在整個文檔的範圍內(考慮函數範圍) – 2014-08-27 21:31:44

+1

另外:因爲你是從PHP向HTML注入值,你應該總是**使用'htmlspecialchars'。閱讀關於它的文檔,重要的是你得到的參數是正確的,「正確」取決於你注入的上下文(例如在雙引號屬性值內)。 – Jon 2014-08-27 21:33:18

回答

3

只需使用echo $value

變量上下文不會因爲您已重新打開PHP標記而發生更改。 <?php?>只是解析器的標誌,並且與你的代碼在裏面做什麼沒有關係。

既然你剛剛開始,我還建議尋找一個模板引擎,如Smarty。這將幫助您將應用程序邏輯從輸出中分離出來。此外,請確保在HTML上下文中使用的任意數據周圍使用htmlspecialchars(),以確保保留的字符已轉義,並且您沒有創建任何XSS攻擊點。

+0

我原本是這樣做的,但這是問題出現在第一位。我得到一個未定義的錯誤。 – Wold 2014-08-27 21:33:03

+1

@Wold它絕對有效。如果您向我們展示您的代碼無效,我們可能會提出建議。 – Brad 2014-08-27 21:33:41

+0

我想我的問題必須在其他地方,我會回顧一下我的代碼。 – Wold 2014-08-27 21:40:53

2

PHP的變量範圍是功能級別。關閉<?php ... ?>代碼塊不會更改您的範圍級別。

例如

<html> 

<?php $x = 'foo'; ?> 

<body> 

<?php echo $x; ?> 

將按預期輸出foo。如果您使用的功能,那麼這將會是一個不同的問題:

function foo() { 
    $x = 'foo'; 
} 
foo(); 
echo $x; // undefined variable 

而且不會不管你是多少/幾<?php ... ?>代碼塊使用改變。