2011-10-29 76 views
1

我上一個用於管理收件人和多個內容的組的應用程序工作送PHP代碼的HTML郵件

我想,所以我在一個表中的一些PHP代碼保存爲使用不同的HTML設計在裏面。

但問題是,我沒有得到使用這些HTML內容發送郵件時執行的PHP代碼。

我使用PHPMailer發送郵件並使用addslashes保存HTML內容並取回stripslashes。

謝謝。

回答

3

使用addslashes保存HTML內容並使用 stripslashes取回。

這很糟糕。我不知道你爲什麼這樣做,但是如果你的意圖是逃避查詢,請使用mysql_real_escape_string()或數據庫驅動程序的analgoue函數(或使用參數化查詢)。
如果您的意圖是,我不知道,清理HTML?好吧,那沒用。因此,無論出於何種原因,都不需要在此添加斜線。

但問題是,我沒有得到執行PHP代碼時發送 郵件使用這些HTML內容。

因爲你的內容是以字符串的形式返回的,所以PHP會像這樣讀取它,包括標籤。

甲最髒溶液,AND強烈建議不要,使用eval()評估PHP代碼並將其執行。但是,這是非常危險的,並可能導致嚴重的安全問題,所以我還沒有要告訴你一些例子:)

最佳解決方案是使用某種模板系統。我不建議使用Smarty的或其它完全成熟的模板引擎,但你可以滾了一個簡單的自定義代碼分析器,可以沿着這些路線工作:

您使用的佔位符保存您的變量,如

{{variable_text}} {{recipient}} {{address}} 

或類似的東西。你只需要替換你所需要的東西,所以在你的PHP腳本中,你可以這樣做,閱讀這個電子郵件:

$change = array('recipient' => 'John Smith', 
       'address' => 'Unknown Avenue, 666', 
       'variable_text' => 'We are glad to invite you to'); 

$text = '<p>To: {{recipient}}.</p> 
     <p>Address: {{address}}.</p> 
     Message: Dear{{recipient}}<br />{{variable_text}}'; 
foreach($change as $k => $v) 
{ 
    $text = str_replace('{{'.$k.'}}', $v, $text); 
}