503服务在PHP中的URL中传递句点时不可用

时间:2018-08-12 15:22:54

标签: php url-encoding http-status-code-503

我正在一个网站上,您可以在其中提供联系方式并将其提交到PHP页面。这些联系方式将使用本机PHP mail()函数发送到电子邮件地址。但是,一切似乎都很好,并且可以使用以下代码:

<?php

$salutation = $_GET["salutation"];
$name = $_GET["name"];
$plan = $_GET["plan"];
$desc = $_GET["desc"];

$to = "example@email.com";
$subject = $desc;

$msg = "

<html>
<body>
    <p>Test body</p>
</body>
</html>

";

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

mail($to, $subject, $msg, $headers);

?>

提交表单时,URL栏的末尾更改为:

page.php?salutation=dhr&name=Kees+van+Voorthuizen&plan=basic&desc=Test+Description

正如我所说,这正常工作并且没有引发任何错误。 但是,当我在<input name="email" id="email" type="email">标签内的联系人详细信息页面中添加<form>并使用自己的电子邮件地址提交表单时,服务器将返回HTTP错误503。PHP代码使用电子邮件输入字段

<?php

$salutation = $_GET["salutation"];
$name = $_GET["name"];
$email = $_GET["email"];  // <--- The only thing that has changed
$plan = $_GET["plan"];
$desc = $_GET["desc"];

$to = "example@email.com";
$subject = $desc;

$msg = "

<html>
<body>
    <p>Test body</p>
</body>
</html>

";

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

mail($to, $subject, $msg, $headers);

?>

URL现在结束于:

page.php?salutation=dhr&name=Kees+van+Voorthuizen&email=my%40email.com&plan=basic&desc=Test+Description

我怀疑在电子邮件字段中包含句点('。')时会引发错误。我尝试使用my%40emailcom而不是my%40email.com手动更改URL栏,并且它起作用了。请注意,我删除了emailcom之间的时间段。

有什么想法吗?

0 个答案:

没有答案