[英]Php variable not showing up in email
我已經盡我所能,終於想到在這里問:
我有一個復選框,可以在其中檢查多個值,在我的 php 中,我試圖在這樣的變量中獲取這些值:
if(!empty($_POST['procedure'])) {
foreach($_POST['procedure'] as $procedure) {
$proc = implode(",", (array)$procedure);
}
echo $proc;
}
問題 1。它回顯選擇的最后一個值,而不是選擇的多個值。
在我的 html 電子郵件模板中,我有這個:
<strong>Which procedure(s) are you inquiring about?</strong>
<p><?php echo $proc; ?></p>
問題 2。它在這里沒有回應任何值。
為了解決問題 1,我嘗試了以下代碼:
if(!empty($_POST['procedure'])) {
foreach($_POST['procedure'] as $procedure) {
echo $proc;
}
}
打印出值,不帶逗號,但電子郵件中的值仍然為空。
此外,由於我通過電子郵件發送這些值來回應結果沒有意義,我只是為了測試目的而嘗試它。
$proc 根據要求輸出:
Vertical Horizontal Flat
這些是復選框的值,並且 echo $proc 正在正確地捕獲它們..
更新:郵件功能代碼。
$user_email = addslashes($_POST['email']);
$filter_values = 'form, submit-btn';
$errors = '<p class="alert alert-success">Your message has been successfully sent !</p>';
$options = array(
'from_email' => '',
'from_name' => 'form', // optional
'reply_to' => 'test@test.com', // optional
'adress' => 'my@gmail.com',
'subject' => 'contact',
'attachments' => 'img/wallacegromit.jpg', // optional
'filter_values' => 'form, submit-btn',
'html_template' => '../forms/mailer/email-templates/contact-email.html', // optional
'css_template' => '../forms/mailer/email-templates/contact-email.css', // optional
'sent_message' => '<p class="alert alert-success">Your message has been successfully sent !</p>', // optional
'display_errors' => true // optional, default false
);
$sent_message = Form::sendAdvancedMail($options);
<strong>Which procedure(s) are you inquiring about?</strong>
<p>{proc} </p>
在我的情況下如何?
更新:這是替換 html email 的每個發布值的代碼。
$filter = explode(",", $filter_values);
for ($i = 0; $i < count($filter); $i++) {
$filter[$i] = trim(mb_strtolower($filter[$i]));
}
$replacements = array_merge($values, $custom_replacements);
foreach ($replacements as $key => $value) {
if (!in_array(mb_strtolower($key), $filter) && !is_array($value)) {
$html = str_replace('{' . $key . '}', $replacements[$key], $html);
}
}
這句話 $proc = implode(",", (array)$procedure);
看起來每次迭代都沒有累積值。 所以它可能是:
$proc = "";
if(!empty($_POST['procedure'])) {
foreach($_POST['procedure'] as $procedure) {
//accumulate with '.=' operator
$proc .= implode(",", (array)$procedure);
}
echo $proc;
(對不起,我還不能添加評論,只能回復)
echo $proc
將只輸出數組的最后一個元素。 $proc 的值將被替換。
$proc = "";
if(!empty($_POST['procedure'])) {
foreach($_POST['procedure'] as $procedure) {
$proc = implode(",", (array)$procedure);
}
echo $proc;
要解決這個問題,您必須使用 operator'.='
新代碼:
$proc = "";
if(!empty($_POST['procedure'])) {
foreach($_POST['procedure'] as $procedure) {
$proc .= implode(",", (array)$procedure);
}
echo $proc;
要在您的 php 中獲取 $proc,您應該使用占位符。 所以改變
<strong>Which procedure(s) are you inquiring about?</strong>
<p><?php echo $proc; ?></p>
到
<strong>Which procedure(s) are you inquiring about?</strong>
<p>{{proc}}</p>
在您的 PHP 腳本中使用以下代碼
$gethtml = file_get_contents('../forms/mailer/email-templates/contact');
$gethtml = str_replace('{{proc}}', $proc, $gethtml);
//發送郵件使用
'html_template' => $gethtml,
或使用 PHPmailer 的屬性 'body'
body = $gethtml;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.