- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题:我有一个发送到电子邮件地址的联系表。它通常工作正常,但如果“电子邮件”文本字段中包含空格(发送邮件的人将在其中输入他们的电子邮件),则不会发送表单。如果任何其他表单有空格,该表单仍会发送。
我知道电子邮件地址中不允许有空格,但如果发送邮件时电子邮件字段中有空格,用户仍会被带到另一个页面,说明邮件已发送,而实际上并未发送。因此,如果有人在输入电子邮件时不小心放了一个空格,网站将不会发送该表格,但会提示已发送。
我是这样设置的:在表单上,电子邮件字段会自动填充用户存储为用户帐户电子邮件的内容。然后使用 POST
传递此变量到另一个页面“wl_process.php”,其中字段被发送到电子邮件地址。但是,即使它会自动为用户填写电子邮件字段,他们也可能希望将他们的回复发送回不同的电子邮件。
我想做的和不想做的:我不确定为什么包含空格会阻止邮件发送。即使包含空格,我也希望它发送表格。我正在寻找从文本字段中删除所有空格的 PHP 标记或方法。我不确定那是否存在。我认为另一种解决方案可能是检查电子邮件中的空格,如果有空格,则会弹出一些内容并说“输入的电子邮件无效,请重试。”但理想情况下,我只希望它发送电子邮件。而且,如果有人知道它为什么这样做,那将对 future 的使用非常有益。
附加信息
请记住,在将空格输入电子邮件字段之前,该表单可以正常工作。如果在任何其他字段中输入空格,表单仍会发送!
此外:$var_email 是从 <? include?>
中提取的位于页面顶部。包括一些$_SESSION
信息,还有 MYSQLI
调用从数据库中获取电子邮件并将其转换为 PHP 变量。我怀疑这与问题有什么关系。我的问题是空格会阻止邮件发送。
什么不重要
我的命名规则。不要被甩掉并认为我的变量名为 $email
曾经以任何方式被视为电子邮件地址。它可以重命名为任何东西。这里只是一个变量和文本字段,发布然后通过电子邮件发送。
我的代码
第 1 页(表单所在的位置)
<div class="form_box">
...
<div class="field clearfix">
<label>Email <span>*</span></label>
<input id="element_1_email" name="element_1_email" value="<? echo $var_email;?>" size="30" class="validate[optional]" type="text" onClick="(this).value=''"/>
</div>
第 2 页(发送和邮寄数据的地方)
<?
$name = $_POST['element_0_name'];
$email = $_POST['element_1_email'];
$company = $_POST['element_2_company'];
$date = $_POST['element_3_date'];
$comment = $_POST['element_4_comment'];
$list = $_POST['element_5_list'];
$email_to = "contact@website.com";
$email_subject = "Online Form";
$email_message = "\n\n";
function clean_string($string) {
$bad = array ("content-type", "bcc:", "to:", "cc:", "href");
return str_replace($bad, "",$string);
}
$email_message .= '<div style="font-family:Arial, Helvetica, sans-serif;padding-left: 90px;font-weight: 100;font-size: 14px;color: #2a2a2a;"><table width="1070px" height="685px;"border="0" cellspacing="0" background="http://www.website/image.jpg">
<tr>
<td style="vertical-align:top;padding-left:88px;">
<h2 style="padding-top:150px;padding-left:90px;">Form Information:</h2>';
$email_message .= "Name: ".clean_string($name)."<br>";
$email_message .= "Email: " .clean_string($email). "<br>";
$email_message .= "Company: " .clean_string($company). "<br>";
$email_message .= "Date Required: " .clean_string($date). "<br>";
$email_message .= "Comment: " .clean_string($comment). "<br>";
$email_message .= '<u>List Of Things:<style> tr:nth-child(2n) {background-color:#d6d6d6;}</style> </u><br><table cellspacing="0" style="margin-top:10px;min-width:390px;border:1px solid #cccccc;">' .clean_string($list). '</table>';
$email_message .= "</div>";
$headers = 'From: '.$email."\r\n".
'Reply-To: '. $email."\r\n" .
'X-Mailer: PHP/' .phpversion();
$headers .= "MIME-Version:1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
@mail($email_to, $email_subject, $email_message, $headers);
//
?>
最佳答案
为什么不从第 2 页的 $_POST
变量中删除空格?
改变这个
$email = $_POST['element_1_email'];
对此
$email = str_replace(' ','',$_POST['element_1_email']);
------------ 更新 ------------
由于 $headers
变量中的这段代码,您的消息失败:
$headers = 'From: '.$email."\r\n".'Reply-To: '. $email."\r\n" .
您在这里使用的 $email
没有通过您的 clean_string
函数(您也可以通过添加 space
来删除空格到 $bad
数组),所以基本上您是在尝试将电子邮件发送到 $_POST['element_1_email']
中收到的任何内容,而不进行任何清理或电子邮件验证。
关于PHP 邮件表单不会发送电子邮件字段中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730456/
我有这个代码来查找这个模式:201409250200131738007947036000 - 1,在文本内 final String patternStr = "(\\d{
我正在尝试使用正则表达式清除一些用户输入,以删除 [ 和 ] 并删除任何大于 1 个空格的空格。但我似乎无法实现我想要的效果。这是我第一次使用正则表达式,所以我对如何写出来有点困惑。 (preg_re
我正在尝试构建这个简单的正则表达式来匹配 Java 中的单词+空格,但我在尝试解决它时感到困惑。该网站上有很多类似的示例,但答案大多给出了正则表达式本身,而没有解释它是如何构造的。 我正在寻找的是形成
好吧,我已经阅读了很多建议如何消除多余空间的帖子,但无论出于何种原因,我似乎无法将这些建议应用到我的系统中,所以我在这里寻求您的帮助。 这些是我代码的最后几行: for line in rli
所以我正在我的测试存储上学习网页抓取,但我不确定如何正确地从“sizes”数组中删除空的新行。 const $ = cheerio.load(body) $('div.lis
这个问题已经有答案了: How to prevent invalid characters from being typed into input fields (8 个回答) 已关闭 9 年前。 是
有人知道如何让扫描仪忽略空间吗?我想输入名字和第二个名字,但扫描仪不让我输入,我想保存全名 String name; System.out.print("Enter name: "); name =
这个问题在这里已经有了答案: Make Vim show ALL white spaces as a character (23 个回答) 关闭 8 年前。 VIM(使用 Solarized Dar
我想使用 StreamTokenizer 从 java 文件中提取名称。我已将空格设置为逗号 inputTokenizer.whitespaceChars(',', ','); 但是,
我正在使用此代码逐行读取 txt 文件。 // Open the file that is the first command line parameter FileInputStream fstre
我似乎无法弄清楚我需要的正则表达式。这就是我想要实现的目标: {ANY CHAR} + @javax.persistence.Column(name = "{ANY 30 CHARS}") + {AN
我正在运行 StyleCop(顺便说一句,如果你想提供高质量的代码,我完全推荐它)... 我有这条线 [System.Xml.Serialization.XmlRootAttribute(Namesp
我刚刚更新到 PhpStorm 2016,我突然注意到,每次我按 Ctrl + S 保存文件时,它都会删除我在测试这段代码后按下以继续编写的空格/制表符。 请帮忙,这对我来说很烦人,因为我在每一行代码
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
我已经看过几十个关于这个主题的问题和答案,但我仍然无法解决我的问题。 我在我的代码中使用了一个外部 ffmpeg 转换器,我将文件路径作为参数传递,如下所示: OutputPackage oo = c
谁能详细解释一下它们是什么以及它们之间的区别。提前致谢。 最佳答案 转义序列是代表其他内容的字符序列。例如(“\n” = 新行,“\?” = 问号等)。有关更详细的列表,请检查:https://en.
我无法从我的 javascript 文本中删除换行符。这是我正在处理的数据示例: 0: "Christian Pulisic" 1: "↵" 2: "From Wikipedia, the free
我有一个问题 - 我似乎无法从字符串的开头/结尾删除新行/空格。我在正则表达式的开头和结尾使用 \s ,甚至在获取字符串后使用 .trim() ,但无济于事。 public void extractI
我是 php 的新手,我正在尝试将一系列变量添加到 html 超链接中。但是,任何返回空格的变量都会弄乱超链接。 Grants Test
我是一名优秀的程序员,十分优秀!