Question: For the sake of learning no-framework php from scratch, I wrote an admin.php file which have the following code:

```
<?php

$not_auth_msg = "<h1>Not Authorized</h1>";
if($_GET['username'] == "admin") {
    $pass = md5($_GET['password']);
    if($pass != "21232f297a57a5a743894a0e4a801fc3") {
        exit($not_auth_msg);
    }
} else {
    exit($not_auth_msg);
}

?>

<!doctype html>
<html>
<head>
  <!-- link to bootstrap -->
  <!-- jquery script -->
  <!-- etc -->
</head>
..
..
..
</html>

```

Authorization works OK, but php 5.4's built in server replies "PHP Notice: Undefined index: username in ..." for each static file (bootstrap, jquery etc.), and the worse thing - the static files do not load!

What am I doing wrong?

Answer: 
Change the if with 

```
if(isset($_GET['username']) && $_GET['username'] == "admin") {
...

}

```

That will solve your problem. When your not providing `username` that key is not set in `$_GET` and error notification if your `php.ini` file must be `ALL` i.e. notifications will be displayed/rendered.
The notice is caused when you try to access an non-existant element in an array. In your case, the $\_GET superglobal didn't actually have a 'username' element (meaning, you didn't pass a username through the url).

You can change your code to test for the existance of the element before you actually check its contents:

```
if(array_key_exists('username',$_GET) && $_GET['username'] == "admin") {
  ...
}

```

This works because PHP uses shortcut boolean evaluation - meaning the right side of that expression is not going to be evaluated if the left half turns out to be `false`.