$ _POST似乎不起作用

Ale*_*ves 0 html php

我正在创建一个电子邮件系统,所以我做了这个小小的测试花絮,它有效.....有点?

<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

Fun*_*ner 7

首先,这部分代码不在您的表单中.

<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注射.

参考文献:


用户通过电子邮件注册注册:

"我正在创建一个电子邮件系统".

看来你是新手使用电子邮件,这里有一些指示.

您需要确保在每个邮件中包含取消订阅方法.

有关于此的法律,超出了这个问题的范围.

加拿大是一个并且是我的国家,与其他国家一样,有严格的反垃圾邮件法律.

因此,请确保注册的人知道他们自己正在进行什么,并有双重选择方法进行验证.

否则,您将被列入黑名单.