-2

重複の可能性:
奇妙な php エラー
空のチェックボックスを含む HTML フォームを送信する
PHP フォームのチェックボックスと未定義のインデックス

何らかの理由で、次のコードで未定義のインデックス エラーが発生します。どんな助けでも大歓迎です。ここに私が受け取っているエラーがあります

Notice: Undefined index: username in C:\xampp\htdocs\register.php on line 5
Notice: Undefined index: password in C:\xampp\htdocs\register.php on line 6
Notice: Undefined index: firstname in C:\xampp\htdocs\register.php on line 7
Notice: Undefined index: surname in C:\xampp\htdocs\register.php on line 8

コード:

<?php
mysql_connect("localhost", "root", "") or die(mysql_error()); 

 mysql_select_db("clubresults") or die(mysql_error()); 
   $username = $_POST['username'];
   $password = md5($_POST['password']);
   $firstname = $_POST['firstname'];
   $surname = $_POST['surname'];

   $sql = "INSERT INTO members (Username, Password, Firstname, Surname) VALUES ($username, $password, $firstname, $surname);";

   mysql_query($sql);

?>

<html>
        <div class="content">
        <center>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
             <table border="0">
             <tr><td colspan=2><h1>Register</h1></td></tr> 
             <tr><td>Username:</td><td>
             <input type="text" name="username" maxlength="60">
             </td></tr>
             <tr><td>Password:</td><td>
             <input type="password" name="password" maxlength="10">
             </td></tr>
             <tr><td>Firstname:</td><td>
             <input type="text" name="firstname" maxlength=210">
             </td></tr>
             <tr><td>Surname:</td><td>
             <input type="text" name="surname" maxlength=210">
             </td></tr>
             <tr><th colspan=2><input type="submit" name="submit" 
            value="Register"> </th></tr> </table>
         </form>
         </center>
         </div>
</html>
4

1 に答える 1

2

ページが初めてロードされるとき (別のページのアクションでない限り)、REQUEST_METHOD は 'GET' です。その結果、POST 変数は存在しません (ただし、$_POST スーパーグローバルは存在します)。
別のページまたは同じページから POST すると、フォーム内のすべてのデータ セットが $_POST スーパーグローバルに存在し、以前にアクセスした方法でアクセスできます。残念ながら、データが存在しない場合にアクセスしようとすると、同様のエラーがスローされます。
問題を解決するには、特にフォームと同じページに投稿したい場合は、次のようなものを使用します

  if (isset($_POST["ユーザー名"]))
   {
      // 何でもする
   }
  if (isset($_POST["パスワード"]))
   {
      // 何でもする
   }
  if (isset($_POST["名"]))
   {
      // 何でもする
   }
  if (isset($_POST["姓"]))
   {
      // 何でもする
   }

これにより、これらのデータが存在しなくても、コードはエラーをスローしません。
それが役立つことを願っています。
無関係ではあるが重要な注意として、mysql_* 関数はもう使用しないでください。それらは廃止されました。データ アクセスには mysqli または PDO 関数を使用します。


ハッピーコーディング!

于 2012-05-13T23:57:06.560 に答える