gpt4 book ai didi

条件语句中带有行间距的 PHP 变量

转载 作者:行者123 更新时间:2023-12-04 05:03:49 25 4
gpt4 key购买 nike

* 注意
我发现问题是试图在用于“发件人” header 值(废话)的电子邮件变量中输入空格/换行符。这当然行不通。因此,我将值附加到消息正文中。请参阅下面的正确代码。

<?php

$send_to = "[MY@EMAIL.COM]";
$send_subject = "contact form from website";

$f_name = cleanupentries($_POST["namn"]);
$f_message = cleanupentries($_POST["meddelande"]);
$from_ip = $_SERVER['REMOTE_ADDR'];
$from_browser = $_SERVER['HTTP_USER_AGENT'];

function cleanupentries($entry) {
$entry = trim($entry);
$entry = stripslashes($entry);
$entry = htmlspecialchars($entry);

return $entry;
}

$message = $f_message . "\n\n" . $f_name . "can be reached on:\n";

if(($_POST["epost"]) == "epost" || ($_POST["epost"]) == ""){
$f_email = $send_to;
$f_email_check = "";

}else{
$f_email_check = cleanupentries($_POST["epost"]);
$f_email = $f_email_check;
$message .= $f_email_check;
$message .= "\n";
}

if(($_POST["telefon"]) == "telefon" || ($_POST["telefon"]) == ""){
$f_phone_check = "";

}else{
$f_phone_check = cleanupentries($_POST["telefon"]);
$message .= $f_phone_check;
$message .= "\n";
}

$message .= "\nTechnical info:\n" . $from_ip . "," . $from_browser;

$headers = "From: " . $f_email . "\r\n" .
"Reply-To: " . $f_email . "\r\n" .
"X-Mailer: PHP/" . phpversion();

if (!$f_email) {
echo '<p>No email.</p><br /><p>< <a style="text-decoration: none; color: blue;" href="/" target="_self">Pleas try again</a></p>';
exit;
}else if (!$f_name){
echo '<p>No name.</p><br /><p>< <a style="text-decoration: none; color: blue;" href="/" target="_self">Pleas try again</a></p>';
exit;
}else{
if (filter_var($f_email, FILTER_VALIDATE_EMAIL)) {
mail($send_to, $send_subject, $message, $headers);
echo "true";
}else{
echo '<p>Invalid email.</p><br /><p>< <a style="text-decoration: none; color: blue;" href="/" target="_self">Pleas try again</a></p>';
exit;
}
}
?>

-------------- 原帖 --------------

我一直在来回尝试让它发挥作用,但无论我做什么,我都无法让它发挥作用。我在这里做错了什么(见下面的代码)?

如果 else 为真,我想要做的是添加一个行空间 (\n),否则它不应该显示任何内容。不显示任何部分工作得很好,它添加了一个我无法工作的行空间。
如果我添加 $f_email_check .= "\n";电子邮件未发送。

我也试过 $f_email_check = cleanupentries($_POST["epost"]."\n");同样的问题。

$f_email_check = cleanupentries($_POST["epost"])."\n"; 一样.

如果我完全删除了\n 部分,邮件发送就好了。但是,由于电子邮件和电话(在电子邮件之后)在同一行上,消息正文中没有空格,因此电子邮件和电话作为一个长字符串。我知道我可以在邮件正文中输入\n 或空格,但是即使邮件正文中的电子邮件为空,也会有一个行空间。

我想要实现的是,如果没有提供电子邮件,则不提供任何内容(关于电子邮件),如果同时提供电话和电子邮件,则将电子邮件放在一行上,然后在下一行显示电话...

这是我正在使用的完整代码
<?php

$send_to = "[MY@EMAIL.COM]";
$send_subject = "webpage contactform";

$f_name = cleanupentries($_POST["namn"]);

if(($_POST["epost"]) == "epost" || ($_POST["epost"]) == ""){
$f_email = $send_to;
$f_email_check = "";

}else{
$f_email_check = cleanupentries($_POST["epost"]."\n");
$f_email_check .= "";
$f_email = $f_email_check;
}

if(($_POST["telefon"]) == "telefon" || ($_POST["telefon"]) == ""){
$f_phone_check = "";

}else{
$f_phone_check = cleanupentries($_POST["telefon"]);
}

$f_message = cleanupentries($_POST["meddelande"]);
$from_ip = $_SERVER['REMOTE_ADDR'];
$from_browser = $_SERVER['HTTP_USER_AGENT'];

function cleanupentries($entry) {
$entry = trim($entry);
$entry = stripslashes($entry);
$entry = htmlspecialchars($entry);

return $entry;
}

$message = $f_message . "\n\n" . $f_name . "can be reached on\n" . $f_email_check . "" . $f_phone_check . "\n\nTechnical info:\n" . $from_ip . "," . $from_browser;

$headers = "From: " . $f_email . "\r\n" .
"Reply-To: " . $f_email . "\r\n" .
"X-Mailer: PHP/" . phpversion();

if (!$f_email) {
echo '<p>No email.</p><br /><p>< <a style="text-decoration: none; color: blue;" href="/" target="_self">Please try again</a></p>';
exit;
}else if (!$f_name){
echo '<p>No name.</p><br /><p>< <a style="text-decoration: none; color: blue;" href="/" target="_self">Please try again</a></p>';
exit;
}else{
if (filter_var($f_email, FILTER_VALIDATE_EMAIL)) {
mail($send_to, $send_subject, $message, $headers);
echo "true";
}else{
echo '<p>Invalid email.</p><br /><p>< <a style="text-decoration: none; color: blue;" href="/" target="_self">Please try again</a></p>';
exit;
}
}
?>

最佳答案

您似乎正在发送 HTML 格式的电子邮件。 HTML 忽略空格。

使用 <br>换行。你也可以把nl2br()在您的 cleanupentries功能,但这可能不是您想要的。

关于条件语句中带有行间距的 PHP 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15769824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com