php
  • arrays
  • login
  • passwords
  • username
  • 2017-02-26 53 views -1 likes 
    -1

    我有一个这样的数组:PHP数组如何匹配第一个值?

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

    和IM试图从阵列中的值相匹配(像一个简单的登录页)我在我的我的html页上的表单中输入的值。我对下面的PHP代码:

    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"; 
        } 
    } 
    

    但什么是错的,因为我只能从数组(用户名和密码),以配合我在输入值的最后一个值。如果我在我的表单中键入用户名m和密码m,php代码告诉我我有错误的用户名和密码。有人能告诉我为什么吗? :)

    回答

    1

    这是因为你不打破你的循环。您一直覆盖变量$login。显然$login包含在$user_array总是

    中的最后一项例如,你可以break圈外的,当你找到了一个匹配的消息。

    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.'; 
    } 
    
    相关问题