<?php
/*************************************************************************

    :: LOGIN CLASS ::
    
    NOTE: Login 
    
    Author    : Pagina Kaft
    Date    : 18 April 2012
    
*************************************************************************/

class login{

    var 
$hash         '';
    var 
$memberID     0;
    var 
$user         '';
    var 
$pass         '';
    var 
$error         '';
    var 
$rememberLogin false;
    
    var 
$enableDebug true;
    var 
$debug = array();

    function 
doLogin$byForm '' ){
        if( ! 
$this->loggedIn() ){
            if( 
$this->readCookies() ){
                
$this->setSessions();
            }else if( ! empty( 
$byForm ) ){
                if( 
$this->validateFields$byForm ) ){
                    
$this->hash $this->setHash();
                    if( 
$this->rememberLogin ){
                        if( !
$this->setCookies() ){
                            
$this->error 'Cookies niet gemaakt!';
                            return 
false;
                        }
                    }
                    
$this->setSessions();
                    
$this->updateLoginDate();
                
                    if( empty( 
$this->error ) ) header"Location: index.php" );
                    return 
true;
                }else{
                    return 
false;
                }
            }
        }
    }
    
    function 
validateFields$byForm ){
        if( !empty( 
$byFormmd5date'dmY' ) ) . 'user' ] ) && !empty( $byFormmd5date'dmY' ) ) . 'pass' ] ) ){
            
$this->user $byFormmd5date'dmY' ) ) . 'user' ];
            
$this->pass $byFormmd5date'dmY' ) ) . 'pass' ];
            
$this->rememberLogin = ( $_POST'autoLogin' ] == 'yes' ) ? true false ;
            if( 
$this->validateDB() ){
                return 
true;
            }else{
                
$this->error 'De door u ingevoerde gebruikersnaam of wachtwoord is incorrect.';
            }
        }else{
            
$this->error 'Één of meer velden zijn niet ingevuld.';
        }
    }
    
    function 
validateDB(){
        
$sql "SELECT
            memberID
        FROM
            members
        WHERE
            passWordMD5 = '" 
md5$this->user ) . "'
        AND
            userName = '" 
$this->pass "'
        "
;
        
$res mysql_query$sql );
        if( 
mysql_num_rows$res ) > ){
            
$row mysql_fetch_assoc$res );
            
$this->memberID $row'memberID' ];
            return 
true;
        }else{
            
$this->error 'Uw gegevens kunnen niet gevalideerd worden.';
            return 
false;
        }
    }

    function 
setHash(){
        return 
md5$this->memberID $this->user $this->pass date'dmYHis' ) );
    }

    function 
setCookies(){
        if(
               
setcookiePREFIX '_userID' $this->memberID time() + ( 60 60 24 365 ) ) &&
            
setcookiePREFIX '_user' $this->user time() + ( 60 60 24 365 ) ) &&
            
setcookiePREFIX '_pass' $this->pass time() + ( 60 60 24 365 ) ) &&
            
setcookiePREFIX '_lKey' $this->hash time() + ( 60 60 24 365 ) )
        ){
            return 
true;
        }else{
            return 
false;    
        }
    }
    
    function 
setSessions(){
        return 
true;
    }

    function 
readHash(){
        return 
true;
    }

    function 
readCookies(){
        return 
false;
    }

    function 
cookiesExists(){
        if(
            !empty( 
$_COOKIEPREFIX '_userID' ] ) &&
            !empty( 
$_COOKIEPREFIX '_user' ] ) &&
            !empty( 
$_COOKIEPREFIX '_pass' ] ) &&
            !empty( 
$_COOKIEPREFIX '_lKey' ] )
        ){
            return 
true;
        }else{
            return 
false;
        }
    }
    
    function 
sessionExists(){
        return 
false;
    }

    function 
validateCookieHash(){
        
$sql "SELECT
                    memberID
                FROM
                    members
                WHERE
                    memberID = '" 
$_COOKIEPREFIX '_userID' ] . "'
                AND
                    loginKey = '" 
$_COOKIEPREFIX '_lKey' ] . "'
                AND
                    userName = '" 
$_COOKIEPREFIX '_user' ] . "'
                AND
                    passWord = '" 
$_COOKIEPREFIX '_pass' ] . "'
                "
;
        
$res mysql_query$sql )or die( $sql '<br />' mysql_error() );
        if( 
mysql_num_rows$res ) == ){
            return 
true;
        }else{
            return 
false;
        }
    }
    
    function 
validateSessionHash(){
        
$sql "SELECT
                    memberID
                FROM
                    members
                WHERE
                    memberID = '" 
$_SESSIONPREFIX '_userID' ] . "'
                AND
                    loginKey = '" 
$_SESSIONPREFIX '_lKey' ] . "'
                AND
                    userName = '" 
$_SESSIONPREFIX '_user' ] . "'
                AND
                    passWord = '" 
$_SESSIONPREFIX '_pass' ] . "'
                "
;
        
$res mysql_query$sql );
        if( 
mysql_num_rows$res ) == )
            return 
true;
        else
            return 
false;
    }

    function 
loggedIn(){
        if( ( 
$this->sessionExists() && $this->validateSessionHash() ) || ( $this->cookiesExists() && $this->validateCookieHash() ) ){
            
            if( !
defined"USER_RAW" ) ) define"USER_RAW" "" );
            if( !
defined"USERNAME" ) ) define"USERNAME" $_COOKIEPREFIX '_user' ] );
            if( !
defined"USERID" ) ) define"USERID" $_COOKIEPREFIX '_userID' ] );
            if( !
defined"LOGIN" ) ) define"LOGIN" true );
            return 
true;
            
        }else{
            
            if( !
defined"LOGIN" ) ) define("LOGIN",false);
            return 
false;
            
        }
    }

    function 
updateLoginDate(){
        
$sql "UPDATE
            members
        SET
            loginKey = '" 
$this->hash "',
            loginDate = NOW()
        WHERE
            memberID = " 
$this->memberID "
        "
;
        
mysql_query$sql );
    }
    
    function 
logout(){
        
setcookiePREFIX '_userID' '' time() - 3600 );
        
setcookiePREFIX '_user' '' time() - 3600 );
        
setcookiePREFIX '_pass' '' time() - 3600 );
        
setcookiePREFIX '_lKey' '' time() - 3600 );
    }
}


/*
Database dump van de login tabel:
Importeren in Phpmyadmin

CREATE TABLE IF NOT EXISTS `leden` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
  `groupID` int(10) NOT NULL,
  `loginKey` varchar(255) NOT NULL,
  `loginDate` datetime NOT NULL,
  `userName` varchar(255) NOT NULL,
  `passWord` varchar(255) NOT NULL,
  `passWordMD5` varchar(255) NOT NULL,
    UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

*/
show_source(__FILE__);
?>