HTML / PHP表单不发送任何POST数据

时间:2014-09-23 04:23:03

标签: php forms post

在开发注册页面时,我遇到了一个非常令人烦恼的问题。 通过提交按钮提交表单时,我可以看到它发送像" user = myusername"到了浏览器,但PHP部分根本没有把它拿起来。 我已尝试通过" echo"进行调试&安培; "的print_r"但是它们都显示为空,但是我从zPanel获得了errlor日志。

这是代码的PHP部分:

    if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
{
    $username = $_POST["user"];
    $password = $_POST['pw'];
    $email = $_POST["mail"];
    $ipaddress = $_SERVER["REMOTE_ADDR"];

    if(empty($username) || empty($password) || empty($email)) header("Location: register.php?empty");
    else if(user_exists($username)) header("Location: register.php?exist");
    else if(email_exists($email)) header("Location: register.php?mailexist");
    else if($password != $repeat_pass) header("Location: register.php?wrongpw");
    else
    {
        register($username,$password,$ipaddress,$email);
        header("Location: register.php?registrationsuccess");
        exit();

    }
}

以下是触发上述内容的HTML部分:

<form>
                <div>
                    <label for="username" class="control-label" style="color: #666; position: absolute; top: 110px;">Username</label>
                    <div class="input-group" style="margin-left: 100px; margin-top: 8px; width: 300px;">
                        <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
                        <input type="text" name="user" class="form-control" placeholder="Username" required>
                    </div>
                    <br/>
                    <label for="password" class="control-label" style="color: #666; position: absolute; top: 163px;">Password</label>
                    <div style="margin-left: 100px; width: 300px;" class="input-group">
                      <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
                      <input type="password" name="pw" class="form-control" placeholder="Password" required>
                    </div>
                    </br>
                    <label for="email" class="control-label" style="color: #666; position: absolute; top: 220px;">Email</label>
                    <div style="margin-left: 100px; width: 300px;" class="input-group">
                      <span class="input-group-addon"><span class="glyphicon glyphicon-import"></span></span>
                      <input type="text" name="mail" class="form-control" placeholder="E-mail" required>
                    </div>
                    <div class="btn-group" style="position: absolute; top: 265px; left: 125px;">
                    <button type="submit" class="btn btn-default" style="width: 300px; font-size: 18px;">Register</button>
                </form>

是的,这是使用bootstrap。 现在,每当您尝试登录时,它实际上会将您重定向到register.php?empty,表示您没有在字段中输入任何内容。

这就是zPanel对我的反应:

[error] PHP Notice:  Undefined index: username

[错误] PHP注意:未定义的索引:密码 [错误] PHP注意:未定义索引:电子邮件

老实说,我不知道是什么导致了这一切。 我错过了什么吗?

5 个答案:

答案 0 :(得分:1)

首先,你没有去掉表格的方法。它应该是<form method="POST">

之后你需要改变

if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))

if(isset($_POST['user']) && isset($_POST['pw']) && isset($_POST['mail']))

我认为这会奏效。让我知道。

感谢。

答案 1 :(得分:1)

像这样更改代码......

    if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
{
    $username = $_GET["user"];
    $password = $_GET['pw'];
    $email = $_GET["mail"];
    $ipaddress = $_SERVER["REMOTE_ADDR"];

    if(empty($username) || empty($password) || empty($email)) header("Location: register.php?empty");
    else if(user_exists($username)) header("Location: register.php?exist");
    else if(email_exists($email)) header("Location: register.php?mailexist");
    else if($password != $repeat_pass) header("Location: register.php?wrongpw");
    else
    {
        register($username,$password,$ipaddress,$email);
        header("Location: register.php?registrationsuccess");
        exit();

    }
}

HTML应该是这样的......

<form method="GET" action="action_page_name.php">
                <div>
                    <label for="username" class="control-label" style="color: #666; position: absolute; top: 110px;">Username</label>
                    <div class="input-group" style="margin-left: 100px; margin-top: 8px; width: 300px;">
                        <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
                        <input type="text" name="user" class="form-control" placeholder="Username" required>
                    </div>
                    <br/>
                    <label for="password" class="control-label" style="color: #666; position: absolute; top: 163px;">Password</label>
                    <div style="margin-left: 100px; width: 300px;" class="input-group">
                      <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
                      <input type="password" name="pw" class="form-control" placeholder="Password" required>
                    </div>
                    </br>
                    <label for="email" class="control-label" style="color: #666; position: absolute; top: 220px;">Email</label>
                    <div style="margin-left: 100px; width: 300px;" class="input-group">
                      <span class="input-group-addon"><span class="glyphicon glyphicon-import"></span></span>
                      <input type="text" name="mail" class="form-control" placeholder="E-mail" required>
                    </div>
                    <div class="btn-group" style="position: absolute; top: 265px; left: 125px;">
                    <button type="submit" class="btn btn-default" style="width: 300px; font-size: 18px;">Register</button>
                </form>

在开始使用PHP进行更多开发之前,您应该先了解GET与...之间的区别。 POST。

Visit a Website like this

答案 2 :(得分:0)

在使用PHP-HTML提交数据时,您必须使用&#39; <form>的方法属性。 method属性指定如何发送表单数据(表单数据发送到action属性中指定的页面)。

表单数据可以作为URL变量发送(使用method =&#34; get&#34;)或HTTP post post(使用method =&#34; post&#34;)。{{1}你必须提到像

这样的GET / POST方法
<form>

此外,如果您要将数据提交到其他页面,则应设置<form method="GET"> 属性。否则action

action=""

答案 3 :(得分:0)

您的表单缺少方法和操作。该操作是将接收和处理数据的文件。方法是表单将如何发送数据。

<form method="POST" action="file.php">

答案 4 :(得分:0)

您应该为按钮name添加submit

<input type="submit" name="submit">

之后,请检查isset提交按钮:

if (isset($_POST['submit']) {
    //enter code here
}