0

http://patti-bee2.dcccd.edu/coleman/wonder%20penguin/php/register.php

フォームがどのように機能するかは次のとおりです。これまでにサイトを訪れたことのない人のためにスティッキー タグを使用し、いくつかのデフォルト値を与えることになっています。また、フォームを送信すると、ページで検証され、問題がある場合は更新され、すべてが正しい場合は、結果が表示された別のページにリダイレクトされるはずです。(100%自分なので付ける必要のない部分は問題ありません。)

何が悪いと思いますか?先生のコードに近づけました。

コードを送信するときに私が行うことは、ページが点滅してから戻ることだけです。

<?php


ob_start();
    if (isset($_POST['submit'])) {

    $valid = true;
    $validate = true;

    $username = trim($_REQUEST['username']);
    $email = trim($_REQUEST['email']);
    $password = trim($_REQUEST['password']);
}
else
{ 
    $username = "";
    $email = "";
    $password = "";
    $valid = false;
    $validate = false;
}
?>
<html>
<body>
<form method="post" action="register.php">
<label for="username"> Username </label><input type="text" name="username" id="username"
 value="<?php echo $username ?>">
<?php   if ($validate) {
    if (empty($username)) { 
        echo "<p> There must be a username! </p>";
        $valid = false;
        }
    if (strlen($username) > 15) { 
        echo "<p> This username is too long! It must be 8-15 characters long! </p>";
        $valid = false;
    }
    if (strlen($username) < 8) {
        echo "<p> This username is too short! It must be 8-15 characters long! </p>";
        $valid = false;
    }
    } 
    ?>
<label for="email">E-Mail </label><input type="email" name="email" id="email"
 value="<?php echo $email ?>">
<?php  if ($validate) {
    if (empty($email)) {
        echo "<p> We need an email! </p>";
        $valid = false;
    }
}
?>
<label for="password">Password </label><input type="text" name="password" id="password" 
value="<?php echo $password ?>">
<?php if ($validate) {
    if (empty($password)) {
        echo "<p> We need a password! </p>";
        $valid = false;
    }
}
?>
<input type="submit" value="Register!" />
</form>
<?php
    if ($valid) { 
        require_once 'config/connection.php';

        $query = "INSERT INTO user (username, email, password) values ( $username, $email, $password);";
        $result = mysql_query($query, $dbConn);     
        if ($result) {
            $userid = mysql_insert_id();        
            header("Location:success.php?userid=$userid");
            ob_end_clean();
            exit();
        } else {
            echo "<p> Unable to Update Database! </p>";
        }
    }
    ob_end_flush();
    ?>
</body>
</html>
4

4 に答える 4

0

success.php ページはないようですが、/registersuccessful.php ページはあります

これを変える:

if ($result) {
            $userid = mysql_insert_id();        
            header("Location:success.php?userid=$userid");
            ob_end_clean();
            exit();

これに

if ($result) {
            $userid = mysql_insert_id();        
            header("Location:registersuccessful.php?userid=$userid");
            ob_end_clean();
            exit();
于 2013-10-21T20:40:21.153 に答える
0

$_POST['submit'] を確認しましたが、この要素は送信されていません。送信ボタンに name='submit' を追加します (または、btnSubmit のような別の名前を付けて、_POST でこれを確認してください)。

于 2013-10-21T20:40:58.660 に答える
0

送信ボタンにはname属性がないように見えるため、isset($_POST['submit'])決して真実ではありません。

送信ボタンname="submitted"を押してみて、 isset($_POST['submitted']).

編集:

送信ボタンに「submit」という名前を付けることが推奨されない理由については、この投稿を参照してください: Why Form Elements should not be named submit?

「...submitという要素を作成すると、フォームの組み込みsubmit()メソッドがオーバーライドされます...」

于 2013-10-21T20:41:22.593 に答える