2017-06-01 3 views
0

ログインシステムにログインすると、ユーザは自分のメールアドレスとパスワードを入力し、スクリプトがデータベースにあるかどうかを確認してパスワードを確認します。私の問題は、最初の値だけをチェックし、他は無視されます。どのように私はデータベースを介してループを完了し、elsel部分には、成功していない場合は行くのですか?php mysqli stmntユーザのログインを確認する

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
session_start(); 
$host = htmlspecialchars($_SERVER["HTTP_HOST"]); 
$uri = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\\"); 
require_once "db_daten_aktuell.php"; 

if (isset($_POST['email']) && ($_POST['passwort'])) 
    { 
    if ($stmt = $mysqli->prepare("SELECT vorname, email, password FROM gast")) 
     { 
     $stmt->execute(); 
     $stmt->bind_result($vorname, $email, $password); 
     while ($stmt->fetch()) 
      { 
      if ($_POST['email'] == $email) 
       { 
        if ($_POST['passwort'] == $password){ 
         $_SESSION["name"] = $vorname; 
         $_SESSION["login"] = "ok"; 
         $extra = "willkommen.php"; 

        } 

       } 
       else 
       { 
       $extra = "start.php?f=1"; 
       } 

      $stmt->close(); 
      } 

     $mysqli->close(); 
     } 
    } 

header("Location: http://$host$uri/$extra"); 

?> 
+0

MysqlはクエリでWHERE文をサポートしています。マニュアルを読む。 –

+0

なぜ '' '' '' 'を使い、メールアドレスとパスワードが必要なのかを比較してみませんか? – mi6crazyheart

+0

私はまだそれを知らない – chim

答えて

1

if ($stmt = $mysqli->prepare("SELECT vorname, email, password FROM gast")) 
    { 
    $stmt->execute(); 

あなたが最初にメールアドレスとパスワードを比較し、以降の要求に応じて、他の比較を行うことができますこの方法

if ($stmt= $mysqli->prepare("SELECT vorname, email, password FROM gast WHERE email=? AND password=?")); $stmt->bind_param("ss", $_POST['email'] ,$_POST['passwort']); $stmt->execute();

にこの部分を変更してみてください。他の問題がある場合は教えてください

関連する問題