2015-07-21 21 views
0

我正在考慮將網站從Adobe轉換爲Yii。在Adobe代碼,我有一個使用像這樣的形式POST數據變量的包括頁:此{POST.data}構造是否會在Yii電子郵件中工作?

$firstContact = "This is an email I sent to {POST.userFirstName}"; 

當我提交的數據後通過可變拾取並很好地發送。

但是,當我開始將這些頁面轉換爲Yii時,我想知道是否這個{POST.userFirstName} 是Yii會識別爲php並在電子郵件中正確部署POST數據的東西。

有人可以告訴我在Yii文檔中哪些地方可以看到,實際上 會回答這個問題,或者,如果您已經知道它確實有效,那麼也告訴我這一點。

感謝

+0

我懷疑它,雖然你可以在PHP中創建這樣的事情。或者使用許多模板系統中的一個來實現類似的效果等等。 – ArtisticPhoenix

+0

@ArtisticPhoenix 謝謝,我會留下一個更明確的迴應。 – AllThisOnAnACER

+0

對不起,我不知道Yii提供了什麼,但是這樣的語法不是php它的模板系統。在PHP中,它會像這樣「words {$ _POST ['userFirstName']}更多的單詞」或「單詞」。 $ _POST ['userFirstName']。「more words」 – ArtisticPhoenix

回答

1

語法在PHP會是這樣

$firstContact = "words ".$_POST['userFirstName']." more words "; 

或者

$firstContact = "words {$_POST['userFirstName']} more words "; 

但我個人有這個

$userFirstName = isset($_POST['userFirstName']) ? $_POST['userFirstName'] : ''; 
$firstContact = "words $userFirstName more words "; 

在電子郵件中使用的情況下,發佈數據遭離棄到他們,我會強烈建議增加ヶ輛

$userFirstName = isset($_POST['userFirstName']) ? htmlentities($_POST['userFirstName'], ENT_QUOTES, "UTF-8"); : ''; 
$firstContact = "words $userFirstName more words "; 

但請注意,這將會使HTML無用如<p>html<\p>例如,所以它在很大程度上取決於你需要什麼,如果你能100%信任的內容,誰正在發送電子郵件以及發送給誰。原因是用戶可以添加包含Javascript代碼的HTML,這些代碼可以劫持用戶數據會話等各種最好避免的惡事。

有幾種方法可以將變量放在字符串中(插值),Yii可能會提供類似的方式,但這不是在原生php中完成的。很多模板系統都使用類似的語法,但我不喜歡使用POST,我需要_{_POST.var}之前,但這只是我。

php中的.是類似於Javascript中的+的連接運算符。很多模板系統使用它作爲訪問操作符,這正是Javascript所做的,這與PHP中的->或數組中的[ ]類似。一般來說,模板設計人員會更熟悉Javascript,這就是爲什麼他們使用.的原因。

+0

謝謝,這正是我期待聽到的。今晚我感謝你的幫助。 – AllThisOnAnACER

+0

當然我會建議使用http://php.net/manual/en/function.htmlentities。php圍繞任何$ _POST數據,這些數據被注入到html中,作爲一種安全措施,以這種形式的'htmlentities($ str,ENT_QUOTES,「UTF-8」);'使用這將阻止用戶將Javascript代碼注入到您的電子郵件中。 – ArtisticPhoenix

相關問題