8.10. Using Cookie Authentication
Problem
You want more control over the user login procedure, such as presenting your own login form.
Solution
Store authentication status in a cookie or as part of a session. When a user logs in successfully, put their username in a cookie. Also include a hash of the username and a secret word so a user can’t just make up an authentication cookie with a username in it:
$secret_word = 'if i ate spinach';
if (pc_validate($_REQUEST['username'],$_REQUEST['password'])) {
setcookie('login',
$_REQUEST['username'].','.md5($_REQUEST['username'].$secret_word));
}Discussion
When using cookie authentication, you have to display your own login form:
<form method="post" action="login.php"> Username: <input type="text" name="username"> <br> Password: <input type="password" name="password"> <br> <input type="submit" value="Log In"> </form>
You can use the same pc_validate( )
function from the Recipe 8.10 to verify the
username and password. The only difference is that you pass it
$_REQUEST['username'] and
$_REQUEST['password'] as the credentials instead
of $_SERVER['PHP_AUTH_USER'] and
$_SERVER['PHP_AUTH_PW']. If the password checks
out, send back a cookie that contains a username and a hash of the
username, and a secret word. The hash prevents a user from faking a
login just by sending a cookie with a username in it.
Once the user has logged in, a page just needs to verify that a valid login cookie was sent in order to do special things for that logged-in user: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access