如何摆脱未定义的索引

时间:2014-09-15 12:00:26

标签: php

我使用这个简单的登录来保护页面。 当我选择不在数组中的用户名时,我得到消息:第16行的未定义索引。 我怎么能摆脱这个消息?     

session_start();

$userinfo = array(
            'user1'=>'password1',
            'user2'=>'password2'
            );

if(isset($_GET['logout'])) {
$_SESSION['username'] = '';
header('Location:  ' . $_SERVER['PHP_SELF']);
}

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

if($userinfo[$_POST['username']] == $_POST['password']) {

    $_SESSION['username'] = $_POST['username'];
}else {
     echo 'Login failed';
}
}

?>

<?php if($_SESSION['username']): ?>

        <p>You are logged in now and this is your secret area</p>
        <p><a href="?logout=1">Logout</a></p> <!-- logging out -->

<?php endif; ?>

2 个答案:

答案 0 :(得分:2)

检查密钥是否存在。

if( array_key_exists($_POST['username'], $userinfo) ) {
  //User found
} else {
  //No user found
}

http://uk1.php.net/array_key_exists

答案 1 :(得分:1)

您只需在条件中添加一个isset检查:

if(isset($userinfo[$_POST['username']]) && $userinfo[$_POST['username']] == $_POST['password']) {