2011-12-29 3 views
0

Я просто работаю с скриптами проверки имени пользователя и пароля, и пока я не хочу связываться с подключением к базе данных. Поэтому я просто помещаю определенные тестовые электронные письма и пароли в некоторые массивы, а затем работаю над проверкой этих массивов.Поиск ключей внутри нескольких массивов

Я застрял на этом наилучшем пути, потому что на самом деле хочу добавить более важные данные в каждый «пользовательский» массив.

Вот что я начал до сих пор, и вы увидите, что я снимаю для:

<?php 

$email = $_POST['email']; 
// test emails 
$logins = array('[email protected]'=>'123456','[email protected]'=>'123456'); 

if (!array_key_exists($email, $logins)) { 
    echo "that email does not exist, stop here."; 
}else{ 
    echo "email exists, continue..."; 
} 
?> 

И это работает отлично, так как это просто, но, как мне нужно, чтобы добавить больше вариантов в массив, метод изменен следующим образом:

<?php 
// tester accounts 
$user1 = array('email'=>'[email protected]','password'=>'123456','fullname'=>'john smith','handle'=>'johnny'); 
$user2 = array('email'=>'[email protected]','password'=>'123456','fullname'=>'Jane Smith','handle'=>'janeyS'); 


// credentials passed from a form 
$email = $_POST['email']; 
$pass = $_POST['pass']; 

/* not quite sure how to validate the $user arrays */ 

?> 

И массивы пользователь, вероятно, будет расти с большим количеством вещей, связанных с этим пользователем, очевидно. Но я привык работать с соединениями с базой данных, а не напрямую с массивами PHP.

Может кто-нибудь бросить мне небольшой совет по простой проверке подлинности электронной почты/паролей из нескольких php-массивов, как то, что я только что сделал выше? Или, может быть, есть лучший метод?

+0

Для любви ко всем святым, пожалуйста, обязательно зашифруйте сохраненные пароли. И я не говорю о простой хэш MD5. – Kenaniah

ответ

2

Превратите своих пользователей в массив $users.

$success = (bool) array_filter($users, function($user) use ($email, $pass) { 
    return $user['email'] == $email AND $user['password'] == $pass; 
}); 

Этот код будет перебрать все пользователи в $users массива и возвращает подмножество, чье соответствие имя пользователя и пароль (должен быть 0 или 1).

Поскольку пустой массив равен falsy в PHP, отбрасывание его в Boolean должно дать правильный результат. Вы можете пропустить это, если хотите, в зависимости от контекста его использования.

+0

Вы хотите создать массив, называемый пользователями, и поместить в этот массив массивы $ user1 и $ user2? – coffeemonitor

+0

@ user271619: Да, с этим будет намного легче работать. – alex

Смежные вопросы