Login   Register  
PHP Classes
elePHPant
Icontem

File: gLogin.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Cesar D. Rodas  >  gLogin  >  gLogin.php  >  Download  
File: gLogin.php
Role: Class source
Content type: text/plain
Description: Main class
Class: gLogin
Encode password fields before submitting forms
Author: By
Last change: * fixing bug
Date: 7 years ago
Size: 4,444 bytes
 

Contents

Class file image Download
<?
/*
**    glogin
**
**    Sends Login information in secure way. The username and password 
**    has an randomic name, and the password value is encripted and it is imposible
**    to deencript.
**
**    The username do have a way back (deencription) and the algorithm is a basic encript 
**    method. this algorith is not strong back gives more work to some one that wants
**    to spy us.
**
**    It is *almost* imposible to brake this sLogin and get the password value. The
**    username is easy to have. But username without password is not useful.
**
**    Also this sLogin prevent to login sending the same encripted password as most of
**    login system will do, they prevent to not hide the password, but sending that encripted
**    value you can login. sLogin encript the password with MD5 + "randomic key".  
**
*/

class gLogin {

    var 
$fields;
    var 
$method;
    var 
$fValues/* form sended values*/

    
    
function gLogin($method 'post') {
        @
session_start(); /* creating a session */
        
switch( strtolower($method) ) {
            case 
'get':
                
$this->fValues = &$_GET;
                
$this->method 'get';
                break;
            default:
                
$this->fValues = &$_POST;
                
$this->method 'post';
                break;
        }
    }

    function 
getValue($val) {
        return 
$this->deencript$this->fValues$_SESSION['sLogin'][$val]['safe'] ] ) ;
    }
    
    
/*
    **    ugly *encriptation* (it is not encriptation at all... but is something ;-) )
    */
    
function deencript($val) {
        
$word "";
        
$val strrev($val);

        for(
$i=0$i strlen($val)/2$i++) {
            
$nro substr($val$i*2,2);
            
$rep hexdec($nro);
            if (
$rep == 0) continue;
            
$word .= chr($rep); 
        }
        
$word strrev($word);
        return 
$word;
    }
    
    function 
isFormSubmited() {
        
$v true;

        if ( !isset(
$_SESSION['sLogin']) || !is_array($_SESSION['sLogin'])) return false;
        
        foreach (
$_SESSION['sLogin'] as $field => $values)  {
            
$v $v && isset( $this->fValues$values['safe'] ] );
        
        }
        return  
$v ;
    }
    
    function 
match($field$value) {
        
$value md5$value $_SESSION['sLoginC']['magic'] );
        return 
$this->fValues$_SESSION['sLogin'][$field]['safe'] ] === $value;
    }
    
    
    function 
safeSend($inputName$safeAsPassword=false) {
        
/*
         *  the security is in the $safeFieldName, which is a hidden input which for every query
         *  it has a new name assigned to an real input.
         *  Also there is a encrypt method the Password and the normal. The normal has a 
         *  way back (restore the original value). The password is almost inposible to restore
         *  back, it implements MD5 of Password and a secret key that change for every request.
         */
        
$safeFieldName md5$inputName time() . microtime() ); 
        
$this->fields[$inputName]['safe'] = $safeFieldName;
        
$this->fields[$inputName]['password'] = $safeAsPassword === true;
        
$_SESSION['sLogin'][$inputName] = $this->fields[$inputName]; /* Remember ;-) */
    
}    

    function 
Js() {
        
$_SESSION['sLoginC']['magic'] = md5session_id() . time() . microtime() );
        
        
$input "";
        
$js_action "";
        foreach (
$this->fields as $field => $values)  {
            
$input .= "<input type = hidden id = '".$values['safe']."' name = '".$values['safe']."'>\r\n";        
            
$js_action .= "\tsLogin_Safe('$field', '".$values['safe']."',".($values['password']===true 'true' 'false').");\r\n";   
        }
        
        
        
        
$r =  
<script><!--
var magicCode = "'
.$_SESSION['sLoginC']['magic'].'";
function sLogin_Send() {
'
.$js_action.'
    return true;
}

function sLogin_Safe(field, hidden, password ) {
    f = document.getElementById(field);
    if ( f == null) {
        alert("sLogin could not find the field " + field);
        return false;
    }
    h = document.getElementById(hidden);
    if (password) {
        safe = hex_md5( f.value + magicCode);
    } else {
        safe = reverse(binl2hex( str2binl(reverse(f.value)) )) ;
    }

    h.value = safe;
    f.value = "";
}

function reverse(str) {
    var nstring;
    nstring="";
    for(i= str.length-1; i >= 0; i--)  {
        nstring += str[i];
    }
    return nstring;
}        

//--></script>'
;
        return 
$r.$input;
    }
    
    function 
onsubmit() {
        return 
'return sLogin_Send()';
    }


    
}
?>