2016-12-01 18 views
0

私はphpとhtmlを使って登録ページを作成しようとしていましたが、一度やり遂げられたらうまく動作しているかどうかをチェックしたかったので、新しいものがそこにあった。ここではコード、register.phpで 、私のPHP登録コードに何か問題があります

?php 

require_once('connect.php'); 

$errors = array(); 

if (isset($_GET['submit'])) { 

if (empty($_POST['username'])) { array_push($errors, 'Choose a username.'); } 
if (empty($_POST['email'])) { array_push($errors, 'Choose an email.'); } 
if (empty($_POST['password'])) { array_push($errors, 'Choose a password.'); } 

$old_usn = mysql_query("SELECT id FROM users WHERE name = '".$_POST['username']."' LIMIT 1;") or die(mysql_error()); 
if (mysql_num_rows($old_usn) > 0) { array_push($errors, 'This username is already taken.'); } 

$old_email = mysql_query("SELECT id FROM users WHERE email = '".$_POST['email']."' LIMIT 1;") or die(mysql_error()); 
if (mysql_num_rows($old_email) > 0) { array_push($errors, 'There is an existing account with this email.'); } 

if ($_POST['password1'] != $_POST['password2']) { array_push($errors, 'The password does not match'); } 

if (sizeof($errors) == 0) { 

//htmlentities($_POST['username'], ENT_QUOTES); 
    $username = htmlentities($_POST['username'], ENT_QUOTES); 
    $email = htmlentities($_POST['email'], ENT_QUOTES); 
    $password1 = htmlentities(sha1($_POST['password1']), ENT_QUOTES); 

    mysql_query("INSERT into users (name, hashed_psw, email, joined) 
    VALUES ('{$username}', '{$password}', '{$email}', NOW());") or die(mysql_error()); 

    } 

} 



?> 

とその下にある:

<div class="container v-align-transform"> 
       <div class="row"> 
        <div class="col-sm-6 col-sm-offset-3"> 
         <div class="feature bordered text-center"> 
          <h4 class="uppercase">Register Here</h4> 
          <?php 

          foreach($errors as $e) { 

           echo $e; 
           echo "<br />\n"; 

           } 
          ?> 
          <form class="text-left" action="register.php" method="post"> 
           <input type="text" name="username" value="" placeholder="Username" /> 
           <input type="text" name="email" value="" placeholder="Email Address" /> 
           <input type="password" name="password1" value="" placeholder="Password" /> 
           <input type="password" name="password2" value="" placeholder="Confirm Password" /> 
           <input type="submit" name="submit" value="Register" /> 
          </form> 
          <p class="mb0">By signing up, you agree to our 
           <a href="/">Terms Of Use</a> 
          </p> 
         </div> 
        </div> 
       </div> 
      </div> 

私が間違って何を発見しようとしましたが、何かを見つけることができませんでした。

+2

1つの明らかな誤り '場合(ISSET($ _ GET [ '提出']) ) 'あなたはPOSTメソッドを使っています。編集:そして別の '$ _POST ['username']'その名前の入力はありません。 –

+0

[mysql関数を使用しない](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) –

+0

[PHP: "通知:未定義変数"と "通知:未定義インデックス"](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index)の可能な複製 –

答えて

1

これは、ボタンを押すことを検討する必要があるいくつかの問題があります。

  1. mysql_*機能を使用しないでください。 PDO、または少なくともmysqli_*の機能を使用してください。
  2. SQLデータをサニタイズします。それ以外は
  3. array_pushを使用する必要はありません(あなたがしたい場合は、それを使用することができます)、あなたは速記バージョンを使用することができますパスワードのSHA1/MD5の/ etcハッシュを使用しないでください$errors[] = "New Error"
  4. を。代わりに塩漬けハッシュを使用してください。
  5. あなたのフォームメソッドはPOSTですが、あなたは(あなたの投稿変数を含む)$_POSTにそのスイッチ... $_GETのためにチェックしている
関連する問題