Re: Link to external pages from login page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Michael!  Welcome to PHP :-)

I'd suggest reading up on "sessions" and general security practices.

I'll try and give a brief overview of using PHP's session mechanism
to give some pages a little protection.

login.html
************************************

<form action='logincheck.php'>
   <p>
      Username: <input type='username' name='uname'>
      <br>Password: <input type='password' name='pw'>
   </p>
   <input type='submit' value='login'>
</form>


logincheck.php
************************************
<?php

   session_start(); // start the PHP session-handling mechanism.

   if (!$_POST) {   // they didn't submit a POST, so they don't belong here; send 'em back.

      header("Location:  http://www.mysite.com/login.html";);
      exit;

   } //end if

   $username = filter_var ( $_POST['uname'], FILTER_SANITIZE_STRING );
   $password = filter_var ( $_POST['pw'], FILTER_SANITIZE_STRING );

   if ( $username = "Bob" && md5( $password ) = "BobsSecretPassphraseEncodedWithMD5" ) {    // this would normally involve DB work
                                                                                        // to select the correct passphrase for
                                                                                        // the user "$username" and compare it
      $_SESSION['logged_in'] = 1;                                                       // to the stored passphrase.
      header("Location:  http://www.mysite.com/secret_page.php";);
      exit;

   } else {  // credentials check failed, send 'em back to login page.

      header("Location:  http://www.mysite.com/login.html";);
      exit;

   }
?>

secret_page.php
***************************************************
<?php

   session_start();

   if ( !$_SESSION['logged_in'] ) {

      header("Location:  http://www.mysite.com/login.html";);
      exit;
   }

// secret stuff goes below here.

Without writing a book, that's a start.  Important things to note,
and to remember:

1.  session_start() should be called FIRST in any page/script that
   requires session support/functions.  In order to keep your pages
   "secure", you start a session and check for the presence of the
   session variable "logged_in" (or whatever you want to call your
   version of it).

2.  Passwords should be encrypted in the storage medium (database
   or file) and the user-supplied variable should be encrypted by your
   login-checker prior to being checked against the stored password.
   That's good security practice (there's plenty more, but it's a
   basic truth for passphrases).  Also, MD5 is *not* a good algorithm
   for hashing passwords in this day and age; I just used it as an
   example to try and give you an idea that hashing is important.

3. Filter *everything* that gets supplied by an end user.  Make sure
   that strings are strings and don't contain funny characters (like
   HTML code, SQL statements, Hexadecimal, etc., etc.)  This also has
   to do with security and reams could be written about it.  I used
   filter_var() to demonstrate it was necessary; more thought should
   really be put into this if it goes to "production".


Hope this helps,

Kevin Kinsey


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux