为什么这个表格不会过程?

时间:2013-06-29 05:41:52

标签: php html forms

我正在转向PDO,这个开发网站已经有几十页的成功,而这个应该是一个“快速”形式 - 应该只用了大约十分钟。但我正在开始我的第二个周末试图找出它为什么不起作用。我知道下面的内容是不安全的 - 我已经把它剥去了骨头,试图弄清楚为什么它不会处理。以下只是将字段空白重新加载到表单页面。我没有收到任何错误,错误日志没有显示任何内容,并且它永远不会达到处理表单的程度 - 例如,输入两个不同的密码不显示为错误,回显变量未显示。它似乎甚至没有达到“if(isset”点 - 我无法弄清楚原因。

<?php
try {
    $con = new PDO('mysql:host=localhost;dbname=database', $user, $pass);
} catch (PDOException $e) {
    echo "Connection failed: " . $e -> getMessage();
}
if (isset($_POST['submit'])) {
    $email = $_POST['email'];
    $username = $_POST['username'];
    $pass1 = $_POST['pass1'];
    $pass2 = $_POST['pass2'];

    if ($pass1 != $pass2) {
        die ("ERROR: Hey!  The passwords don't match!");
    }

    $stmt = $con -> prepare ("
        INSERT INTO proj_users
            (email, username, password) 
        VALUES 
            (?, ?, ?)
    ");
    $stmt -> bindParam(1,$email);
    $stmt -> bindParam(2,$username);
    $stmt -> bindParam(3,$pass1);
    $stmt -> execute();

    header('Location: /index.php');
} else {
?>
<form action='<?php echo $_SERVER['SCRIPT_NAME']; ?>' method='post'>
    <table>
        <tr>
            <td class='label'>Email:  </td>
            <td><input type='text' name='email' /></td>
        </tr>
        <tr>
            <td class='label'>Username: </td>
            <td><input type='text' name='username' maxlength='30' /></td>
        </tr>
        <tr>
            <td class='label'>Password: </td>
            <td><input type='password' name='pass1' /></td>
        </tr>
        <tr>
            <td class='label'>Password Again: </td>
            <td><input type='password' name='pass2' /></td>
        </tr>
        <tr>
            <td class='label alignright' colspan='2'><input type='submit' value='Register' /></td>
        </tr>
    </table>
</form>
<?php
}
?>

更新:当我浏览并更新更多表单时,我遇到了同样的问题 - 没有“名称”属性,但是在我开始弄乱它们之前它们一直在工作。我没有花很长时间才弄明白这是因为我正在重写表格,并在此过程中将它们从“!isset”改为“isset” - 所以,当然,没有“名字”,他们从来没有。

4 个答案:

答案 0 :(得分:3)

<input type='submit' value='Register' />

应该是

<input name='submit' type='submit' value='Register' />

您忘记为“提交”按钮设置name

答案 1 :(得分:3)

您必须为提交按钮设置名称属性我认为

变化

<input type='submit' value='Register' />

<input type='submit' name='submit' value='Register' />

答案 2 :(得分:1)

你错过了这个名字:

<input type='submit' name='submit' value='Register' />

答案 3 :(得分:0)

您正在调用$ _POST ['submit'],它不在您的查询字符串中。 将名称添加到提交按钮,然后回答。

<input type='submit' name='submit' value='Register' />