Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
条件语句中带行距的PHP变量_Php_Variables_Conditional Statements - Fatal编程技术网

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

条件语句中带行距的PHP变量,php,variables,conditional-statements,Php,Variables,Conditional Statements,*注意 我发现问题是试图在用于“From”标题值(duh)的电子邮件变量中输入空格/换行符。这当然不行。因此,我将这些值附加到消息体。请参阅下面的正确代码 <?php $send_to = "[MY@EMAIL.COM]"; $send_subject = "contact form from website"; $f_name = cleanupentries($_POST["namn"]); $f_message = cleanupentries($_POST["meddeland

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

<?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;
    }
}
?>

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


使用

获取换行符。您也可以将
nl2br()
放在
cleanupentries
函数中,但这可能不是您想要的。

阅读带有filter\u VALIDATE\u电子邮件的filter\u var(注释)手册不是最好的选择()

而不是:

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;
}


不被送怎么办
mail()
返回布尔值false?您的邮件服务器拒绝邮件?邮件在接收端变成垃圾邮件?请为那些无意中发现此问题的人投票编辑代码!(也是一个非常好且明确的问题):-)我应该提到,在我最初的帖子中,我已经尝试了这两种方法:P我什么都做不到:(你能给我举个例子,说明我应该如何将
附加到else语句内容中吗?我已经尝试了nl2br,

,\n…我只是无法让它们中的任何一个正常工作。这让我发疯了哈哈:)我肯定这只是一个空格、引号或某处的点的问题,但我看不出这对我来说有什么意义。也许你的电子邮件客户端很糟糕?要么以纯文本发送邮件,然后
\n
就可以了,

就可以用于HTML。如果一些邮件客户端不喜欢纯文本,他们会退回到纯文本版本HTML,确保您也正确设置了邮件的纯文本部分(用
\n
替换

,并且
条带标签将覆盖大部分)。好的,但是这不应该工作吗?
$f\u email\u check=cleanupentries($\u POST[“epost”]。“
”)
因为其他一切都正常工作。我看不出电子邮件客户端是问题所在。很可能我在编写else语句时遗漏了什么。否:)
cleanupentries
是否会对您的HTML进行htmlencode(您就是这样编写的!)。不要把你想要的HTML放进去<代码>$f_email_check=cleanupentries($_POST[“epost”])。“
可以工作。不,
f\u email\u check=cleanupentries($\u POST[“epost”])。“
也不起作用:(以前试过;)我就是这么说的,有些奇怪。。。我还尝试删除了cleanupentries函数,以查看它是否会导致问题,但这也没有帮助。我认为即使您的问题非常好且清楚,也很难说出实际问题!:-)很难说为什么邮件没有被发送。可能是由于某种原因,邮件没有被验证,也可能是邮件服务器出了问题。我不认为这和邮件服务器有任何关系(我听起来不像),这个答案是基于一个有保留的猜测。根据这里被接受的答案,我离真相并不远:-)
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;
}
try {
    mail($send_to, $send_subject, $message, $headers);
}
catch (Exception $e) {
    throw new Exception($e->__toString();
}
$mail =   mail($send_to, $send_subject, $message, $headers);

//check result of $mail.
//...