0

我正在切换到 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

4 回答 4

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

应该

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

您忘记name为您的提交按钮设置一个。

于 2013-06-29T05:46:33.803 回答
3

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

改变

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

<input type='submit' name='submit' value='Register' />
于 2013-06-29T05:46:38.630 回答
1

你错过了这个名字:

<input type='submit' name='submit' value='Register' />
于 2013-06-29T05:50:33.307 回答
0

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

<input type='submit' name='submit' value='Register' />
于 2013-06-29T06:10:54.063 回答