我正在创建一个电子邮件系统,所以我做了这个小小的测试花絮,它有效.....有点?
<html>
<head><title>EMail Test</title></head>
<body>
<input type="text" name="email">
EMail (required)
<br><br>
<textarea name="comment" rows="5" cols="40"></textarea> what's your problem?
<br><br>
<form method="POST" action=''>
<input type="submit" name="button1" value="Submit">
</form>
<?php
if (isset($_POST['button1'])) {
$msg=$_POST['email']." asks: ".$_POST['comment'];
echo $msg;
$email=$_POST['email'];
$SupportNinga="Typhoone01@gmail.com";
$mail=mail($SupportNinga,"Question from ".$email,$msg);
echo "Emailing...";
if($mail) {
echo"E-mail sent sucessfully";
}
}
?>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
这被放入在线主机,似乎没有用.
它发送了电子邮件,但它只是说"问题来自:".我可以说它没有正确读取$ _POST.
帮助是appriciated.:P
首先,这部分代码不在您的表单中.
<textarea name="comment" rows="5" cols="40"></textarea> what's your problem?
Run Code Online (Sandbox Code Playgroud)
原样 <input type="text" name="email">
将所有表单元素放在<form></form>标记内.
您的mail()参数也已关闭.
阅读手册http://php.net/manual/en/function.mail.php
使用错误报告.
将错误报告添加到文件的顶部,这将有助于查找错误.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Run Code Online (Sandbox Code Playgroud)
旁注:显示错误只能在分段中完成,而不能在生产中完成.
您还应该检查empty()您的电子邮件输入.
还使用FILTER_VALIDATE_EMAIL它:
HTML贴图:
关于使用<html>它最好声明一个doctype,例如<!DOCTYPE html>.
Firefox for one会在鼠标悬停时在HTML源代码中抛出(红色)警告<html>.
如:
在没有首先看到doctype的情况下看到开始标记.预期
"<!DOCTYPE html>".
<form method="POST" action=''> 保持一致并使用所有双引号.
从HTML中分离您的PHP.如果除了"邮件成功"消息之外你不会回应任何特殊内容,那么将PHP置于HTML之上.
防止数据重新提交:
您应该使用标头重定向到新页面,并使用会话/令牌来防止人们刷新该页面时重新提交相同的数据.
参考文献:
XSS注射:
$msg=$_POST['email']." asks: ".$_POST['comment'];
Run Code Online (Sandbox Code Playgroud)
您应该首先声明从POST数组分配的变量,然后连接这些变量.你站在这里进行XSS注射.
参考文献:
用户通过电子邮件注册注册:
"我正在创建一个电子邮件系统".
看来你是新手使用电子邮件,这里有一些指示.
您需要确保在每个邮件中包含取消订阅方法.
有关于此的法律,超出了这个问题的范围.
加拿大是一个并且是我的国家,与其他国家一样,有严格的反垃圾邮件法律.
因此,请确保注册的人知道他们自己正在进行什么,并有双重选择方法进行验证.
否则,您将被列入黑名单.