2016-06-24 9 views
1

MYSQLデータベースでユーザーを認証しようとしています。私は非常に多くのチュートリアルを毎回失敗するように試みました。私は下に私のコードを貼り付けている、私は今セキュリティやSQLインジェクションを気にしない。私はこれを働かせようとしているので、私の次の要件に進むことができます。誰かがGOOD php/html5ログイン認証チュートリアルへのリンクを持っている場合は、共有してください。私は簡単に登録フォームを作成することができましたが、このログインフォームは本当に私に困難を与えています。php/html5ログイン認証

$id =$_POST['Id']; 
$password =$_POST['password']; 
$accessdb = "SELECT * from UserData where Id ='$id' and password ='$password"; 
      $authenticate = mysqli_query($conn, $accessdb); 
        if (mysqli_num_rows($authenticate) == 1) { 
         session_start(); 
         $_SESSION['auth'] = 'true'; 
         header('location: Profile.php'); 
        } 
        else { 
         echo "Wrong log-in credentials"; 
        } 
+1

**危険**:あなたは** [防御](http:// stackoverflow)する必要がある** [SQLインジェクション攻撃](http://bobby-tables.com/)**に対して脆弱です。 .com/questions/60174/best-way-to-prevent-sql-injection-in-php)をご利用ください。 – Quentin

+1

**危険**:「まったくハッシングしない」とは、不適切なハッシュアルゴリズムです(http://php.net/manual/en/faq.passwords.php)。あなたのユーザーのパスワードの[注意を払う]必要があります(https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)。 – Quentin

+5

彼はセキュリティやSQLインジェクションについて気にしないと言います。@Quentin –

答えて

0

まず、session_start()は、ページ上の非常に最初のものである必要があり、あなたのユーザーがアクセス権を取得するために認証されたいすべてのページ上にある必要があります。

$accessdb = "SELECT * FROM userdata WHERE id = {$id} AND password ='{$password}'"; 

NB$idが数であるかどうかわからない

はその後、あなたはそうのようなクエリ$accessdbを修正する必要があります。そうでない場合は、{$id}の代わりに'{$id}'を実行します。

+0

「まず、session_start()はページ上の最初のものでなければなりません」 - 一般的には良いアドバイスですが、出力を生成するものは何もないその前に、無関係。 – Quentin

+0

'$ accessdb =" SELECT * FROM userdata ID = {$ id} ANDパスワード= '{$ password}' ";' - その変更は無意味です。標準的な補間規則はいずれの場合も同じ結果を与える。あなたがそこで行った唯一の重要なことは、id値の周りにある '' 'を取り除くことです。 – Quentin

+0

ああ、テーブル名は大文字と小文字が区別されるため、テーブル名の大文字と小文字を変更したことがあります。 – Quentin

0
 $password =$_POST['password']; 
     $user = "SELECT * FROM UserData WHERE Id ='$id'"; 
     $authenticate = $conn->query($user); 
     $row = $authenticate->fetch_assoc(); 
     $hash_password = $row['password']; 
     $hash = password_verify($password, $hash_password); 
     if ($hash ==0) { 
      echo "Something went wrong!!"; 
      header('Location: LogIn.php'); 
      exit(); 
     } 
     else { 
     `enter code here`$accessdb = "SELECT * FROM UserData WHERE Id ='$id'              
     AND password = '$hash_password'"; 
      $authenticate = $conn->query($accessdb); 
       if (!$row = $authenticate->fetch_assoc()) { 
        echo "Your username is incorrect, Re-enter CREDENTIALS"; 
      } 
       else { 
        $_SESSION['id'] = $id; 
        header('Location: Profile.php'); 
       } 
     }