我正在使用使用wp_mail
功能的自定义Wordpress模板。
所以我在下面有这个代码,粗体部分给我带来了问题:
wp_mail($ et_email_to,sprintf('[%s]'。esc_html($ _ POST ['et_contact_subject']),$ et_site_name), esc_html($ _ POST ['et_contact_message']), 'From:''。esc_html($ _ POST ['et_contact_name'])。'“<'。esc_html($ _ POST ['et_contact_email'])。'>');
我想在Message部分中包含额外的东西。 esc_html($_POST['et_contact_message'])
当我尝试在那里添加额外的东西时,它会产生各种PHP错误。
如果我用{12345'这样的普通文本替换esc_html()
部分,它就可以了。
我想在消息末尾添加的是:
"IP Address: ".$_SERVER['REMOTE_ADDR']."
Came From: ".$_SERVER['HTTP_REFERER']."
Browser: ".$_SERVER['HTTP_USER_AGENT']
如果我删除esc_html()
部分,它可以正常工作,但我不能让它们一起工作。
esc_html()
也能正常工作,它会从联系表单打印消息。
我无法让两件事情一起工作。
这些将失败,例如:
esc_html($_POST['et_contact_message']) 12345,
esc_html($_POST['et_contact_message'] $_SERVER['REMOTE_ADDR']),
等...
请帮帮我。 谢谢!
答案 0 :(得分:2)
在PHP中检查字符串连接 - 有很多方法可以做到这一点,我将突出显示http://www.php.net/manual/en/language.types.string.php中的一些
<?php
$foo = 'some';
$bar = 'baz';
$message = '';
$message .= 'Add ' . $foo;
$message .= ' variable to a string';
// You can do this all at once, in one line or many
$mesage = 'Add ' . $foo . ' variable to a string';
// Double-quotes are useful
$message = "Add {$foo} variable to a string";
// And there are other methods, like HEREDOC
$message = <<<TEXT
Add $foo variable to a string...in a HEREDOC
block.
TEXT;
// Some editors, like VIM, support syntax highlighting in HEREDOC
// Useful if you want to write out legeble code from other languages, like
// SQL.
$message = <<<SQL
SELECT
*
FROM
table
WHERE
col = %s
SQL;
$wpdb->prepare($message, $foo);
答案 1 :(得分:0)
我终于找到了让它发挥作用的方法! 这是代码:
$message = $_POST['et_contact_message'];
$message .= '
IP Address: ' . $_SERVER['REMOTE_ADDR'];
$message .= '
Came From: ' . $_SERVER['HTTP_REFERER'];
$message .= '
Browser: ' . $_SERVER['HTTP_USER_AGENT'];
wp_mail($et_email_to, sprintf( '[%s] ' . esc_html($_POST['et_contact_subject']), $et_site_name ), $message,'From: "'. esc_html($_POST['et_contact_name']) .'" <' . esc_html($_POST['et_contact_email']) . '>');