检查数组键和数组值

时间:2014-05-15 22:28:16

标签: php arrays

我想创建一个登录系统,但在这种情况下,我想创建数组作为用户名和密码

<?php
$users = array(
"user1" => "pass" ,
"user2" => "2" ,
"user3" => "pass3d" 

);

if ( isset($_POST['sb']) ) {

$username = $_POST['user'];
$password = $_POST['pass'];
/*
foreach ($users as $user => $pass ) {

    if ( $username == $user && $password == $pass ) {
        echo 'login';
        header("Location: ?page=admin");
    }
        else {
        echo 'failed';
        $_SESSION = array();
        header("Location: ?dologin");

    }   

}
*/
?>

你可以看到我没有使用数据库,我在数组中创建了用户名和密码,我需要检查登录

使用foreach

执行此操作并不是一个好主意

它与foreach一起工作但我想在登录失败时销毁会话,所以如果用户输入第3个密钥并且值sesseion将被破坏!

我尝试使用in_array,但我不能这样做

比较用户名和密码的最佳方法是什么

1 个答案:

答案 0 :(得分:1)

首先,我不会将这些密码保存在纯文本中。 循环可能不是最好的方法,我会想到这样的事情:

<?php
$array1 = array(
"1" => "Monday",
"2" => "Tuesday",
"3" => "Wednesday"
);
?>

我们有一周前3天的这个数组。如果我们要检查用户是否放弃了1Monday,我们可以像这样检查:

<?php
$var1 = $_POST['index'];
$var2 = $_POST['day'];

if (array_key_exists($var1, $array1))//if key exists in the array
    {
        if ($var2 == $array1[$var1])//if the day matches the value of the key in the array
            {
               //Do something
            }
    }
 ?>

参考:http://php.net/manual/en/function.array-key-exists.php