2017-02-26 12 views
-1

私はこのような配列があります:配列の値iが(簡単ログインページのような)私のhtmlページに私の形式で入力した値と一致するように取得しようとPHPの配列最初の値をどのように一致させるか?

$user_array = array(
"m" => "m", 
"a" => "a" 

とIMを。私はそのために、以下のPHPコードを持っている:私は、私が入力した値と一致するように、アレイ(ユーザー名AおよびパスワードA)から最後の値を取得することができますので、

session_start(); 
$username = $_GET['uname']; 
$password = $_GET['psw']; 
$login = ''; 


foreach($user_array as $key=>$value){ 
    if(($key == $username) && ($value == $password)){ 
     $login = "Login success"; 
    } 
    else if(($key != $username) && ($value != $password)){ 
     $login = "Username and password incorrect"; 
     } 
    else if($key != $username){ 
     $login = "Username does not exist"; 
     } 
    else if($value != $password){ 
     $login = "Password is incorrect"; 
    } 
} 

しかし、何かが間違っているI場合。私の形式でusername mとpassword mと入力すると、php-codeは間違ったユーザ名とパスワードを持っていると私に伝えます。誰かが私に理由を教えてくれますか? :)

答えて

1

あなたのループが崩れないために起こります。変数$loginを上書きし続けます。もちろん$loginあなたがループの外にあなたが試合を見つけbreak可能性が例えば常に$user_array

の最後のエントリのためのメッセージが含まれています。

session_start(); 
$username = $_GET['uname']; 
$password = $_GET['psw']; 
$login = ''; 


foreach($user_array as $key=>$value){ 
    if(($key == $username) && ($value == $password)){ 
     $login = "Login success"; 
     break; 
    } 
    else if(($key != $username) && ($value != $password)){ 
     $login = "Username and password incorrect"; 
     } 
    else if($key != $username){ 
     $login = "Username does not exist"; 
     } 
    else if($value != $password){ 
     $login = "Password is incorrect"; 
    } 
} 

ヒント:代わりに配列全体を反復処理で、次のようなアプローチが良いかもしれない:

// Check if username exists 
if(array_key_exists($username)) { 

// Check if password is correct 
if($user_array[$username] === $password) { 
    $login = 'Login success.'; 
} else { 
    $login = 'Password doesn\'t match.'; 
} 

} else { 
    $login = 'Username doesn\'t exist.'; 
} 
関連する問題