You should show one alert if one user and password not matched you can not do it for multiple user. just put break after echoing alert.
Another thing you should assign $user
and $pass
outside the loop. it should not assign each time in loop.
if (isset($_POST['submit']))
{
$login = array
(
0=>array
( 'username'=>'Art',
'password'=>'p@ssw0rd',
'user_id'=>'1'
),
1=>array
( 'username'=>'Berto',
'password'=>'1234',
'user_id'=>'2'
),
2=>array
( 'username'=>'Carrie',
'password'=>'5678',
'user_id'=>'3'
),
3=>array
( 'username'=>'Dino',
'password'=>'qwer',
'user_id'=>'4'
),
4=>array
( 'username'=>'Ely',
'password'=>'asdf',
'user_id'=>'5'
)
);
$uname = $_POST['user'];
$pass = $_POST['password'];
foreach($login as $sub_array)
{
if ($uname == $sub_array['username'] && $pass == $sub_array['password'])
{
$message = ( $sub_array['user_id'] );
echo "<script type='text/javascript'>
alert('Your user ID is : $message');
</script>";
break;
}
else
{
echo "<script type='text/javascript'>
alert('Invalid username/password.');
</script>";
break;
}
}
}
you should not check it like that. you have alert for each time if user and password matched and if not matched both cases. you should run this script everytime for each user
If you want to alert for all users then you can do it like this:
$uname = $_POST['user'];
$pass = $_POST['password'];
$output = "<script type='text/javascript'>";
foreach($login as $sub_array)
{
if ($uname == $sub_array['username'] && $pass == $sub_array['password'])
{
$message = ( $sub_array['user_id'] );
$output .= "alert(\"Your user ID is : $message \")";
}
else
{
$output .= " alert('Invalid username/password.')";
}
}
}
$output .= "</script>";
echo $output;
It will alert for all users in $login array.