我正在创建一个电子邮件系统,所以我做了这个小小的测试花絮,它有效.....有点?
<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>
&#13;
这被放到了一个在线主机上,似乎没有用。
它发送了电子邮件,但它只是说&#34;问题来自:&#34;。我可以告诉它没有正确阅读$ _POST。
帮助是适当的。 :P
答案 0 :(得分:7)
首先,您的代码的这部分内容不在您的表单中。
<textarea name="comment" rows="5" cols="40"></textarea> what's your problem?
原样<input type="text" name="email">
将所有表单元素放在<form></form>
标记内。
您的mail()
参数也已关闭。
阅读手册http://php.net/manual/en/function.mail.php
使用错误报告。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
您还应该检查电子邮件输入中的empty()
同样使用FILTER_VALIDATE_EMAIL
:
HTML sticklers:
关于使用<html>
,最好声明一个doctype,例如<!DOCTYPE html>
。
<html>
上时,会在HTML源代码中抛出(红色)警告。
如:
在没有首先看到doctype的情况下看到了开始标记。预计
"<!DOCTYPE html>"
。
<form method="POST" action=''>
保持一致并使用所有双引号。
从HTML中分离您的PHP。将您的PHP置于HTML之上,如果您不会回应除了您的&#34;邮件成功之外的任何特殊情况。消息。
阻止重新提交数据:
您应该使用标题重定向到新页面,并使用会话/令牌来阻止用户刷新该页面时重新提交相同的数据。
参考文献:
XSS注入:
$msg=$_POST['email']." asks: ".$_POST['comment'];
首先应声明从POST数组分配的变量,然后连接这些变量。你站在这里进行XSS注射。
参考文献:
用户通过电子邮件注册脚注:
&#34;我正在创建一个电子邮件系统&#34; 。
您似乎对使用电子邮件感到陌生,这里有一些指示。
您需要确保在每封邮件中包含取消订阅方法。
有关于此的法律,超出了这个问题的范围。
加拿大是我的国家,与其他国家一样,有严格的反垃圾邮件法律。
因此,请确保注册的人知道他们自己的内容,并采用双重选择方法进行验证。
否则,您将被列入黑名单。