PEAR-Forum.de Übersicht Thema anzeigen - [HowTo] Anwendungsbeispiel PEAR_Auth()

[HowTo] Anwendungsbeispiel PEAR_Auth()


 

PEAR-Forum.de Übersicht » HowTo´s, Tutorials, Codebeispiele und Wissenswertes
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MaGdev
Site Admin


Anmeldungsdatum: 04.02.2004
Beiträge: 719
Wohnort: Hamburg

Beitrag10.06.2005 19:46    [HowTo] Anwendungsbeispiel PEAR_Auth() Antworten mit Zitat

Aktualisiert für Auth-1.2.3!

Datenbank-Name: auth_test

Tabelle:
Code:

CREATE TABLE auth (
  id int(11) NOT NULL auto_increment,
  user varchar(64) NOT NULL default '',
  pass varchar(32) default NULL,
  rights enum('admin','user') default 'user',
  PRIMARY KEY  (id)
) TYPE = MyISAM;


Quellcode:
PHP:
<?php 
define 
('_SCRIPT'$_SERVER['SCRIPT_NAME']); 
define ('_DBTYPE''mysql'); 
define ('_DBUSER''xxx'); 
define ('_DBPASS''xxx'); 
define ('_DBHOST''localhost'); 
define ('_DBNAME''auth_test');  
define ('_DSN',_DBTYPE.'://'._DBUSER.':'._DBPASS.'@'._DBHOST.'/'._DBNAME); 

// Auth >= 1.2.3
require_once ('Auth.php');  
// Auth < 1.2.3
require_once ('Auth/Auth.php');  

function 
loginFunction($disp=true

    
$d  "<form method=\"post\" action=\"" _SCRIPT "\">\n"
    
$d .= "<table>\n"
    
$d .= "<tr><td>Username</td><td><input type=\"text\" name=\"username\"></td></tr>\n"
    
$d .= "<tr><td>Passwort</td><td><input type=\"password\" name=\"password\"></td></tr>\n"
    
$d .= "<tr><td> </td><td><input type=\"submit\" value=\"login\"></td></tr>\n"
    
$d .= "</table>\n"
    
$d .= "</form>\n"
    if (
$disp === true) print $d
    return 
$d
}  

$authParams = array( 
    
'dsn'         => _DSN,    # DSN String 
    
'table'         => 'auth',    # wie heißt die Tabelle 
    
'usernamecol'     => 'user',    # Feld: Username 
    
'passwordcol'     => 'pass',    # Feld: Paßwort 
    
'cryptType'        => 'md5',    # Verschlüsselungstyp 
    
'db_fields'        => '*');    # welche Felder sollen in $_SESSION[auth][data] gespeichert werden; ich will alle <g> 

# Instanz erzeugen (ich bin ein Freund kurzer Variablennamen) 
$a = new Auth ('DB',     # DB Klasse; muß nicht eingefügt werden 
        
$authParams# das Parameter Array 
        
'loginFunction()'# Name der Funktion, die dann aufgerufen wird, wenn der User nicht authentifiziert ist 
        
true    # show login: Aufruf der Login Funktion 
     
); 
# Achtung: Auth startet zusätzlich noch das SESSION Management! 
$a->start(); 

$OK = ($a->getAuth()) ? true false

// Auth >= v 1.2.3
define ('_RIGHTS'$_SESSION['_authsession']['data']['rights']);  
// Auth < 1.2.3
define ('_RIGHTS'$_SESSION['auth']['data']['rights']); 

# Das war das Vorspiel 

if ($OK === true

print_r($_SESSION);

?>


Ausgabe nach Login:
Code:

Array
(
    [auth] => Array oder [_authsession] => Array
        (
            [data] => Array
                (
                    [id] => 1
                    [rights] => user
                )

            [registered] => 1
            [username] => test
            [timestamp] => 1077902878
            [idle] => 1077902878
        )

)

_________________
Auch der längste Weg beginnt immer mit einem kleinem Schritt!

Vorgehen bei Problemen:
1. PHP-Handbuch oder PEAR-Handbuch lesen!
2. Forensuche benutzen!
3. Fragen posten und dabei die Regeln beachten!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Berdir
Power User


Anmeldungsdatum: 22.09.2005
Beiträge: 1347

Beitrag04.03.2007 19:42     Antworten mit Zitat

Habe etwas Zeit gefunden und das Tutorial etwas überarbeitet Smile

Änderungen:
Zitat:

- MDB2 anstelle von DB
- pre 1.2.3-Sachen entfernt, ich hoffe mal das setzt keiner mehr ein (der ein Tutorial braucht Wink )
- Den Schluss mit der Prüfung und Daten auslesen (imho) etwas vereinfacht


Benötigte Pakete:
Zitat:

Auth
MDB2
MDB2_Driver_<Driver> (z.B. mysql oder mysqli mit PHP5)


PHP:
<?php 
define 
('_SCRIPT'$_SERVER['SCRIPT_NAME']); 
define ('_DBTYPE''mysql'); 
define ('_DBUSER''xxx'); 
define ('_DBPASS''xxx'); 
define ('_DBHOST''localhost'); 
define ('_DBNAME''auth_test');  
define ('_DSN',_DBTYPE.'://'._DBUSER.':'._DBPASS.'@'._DBHOST.'/'._DBNAME); 


require_once 
'Auth.php';  

function 
loginFunction($disp=true

    
$d  "<form method=\"post\" action=\"" _SCRIPT "\">\n"
    
$d .= "<table>\n"
    
$d .= "<tr><td>Username</td><td><input type=\"text\" name=\"username\"></td></tr>\n"
    
$d .= "<tr><td>Passwort</td><td><input type=\"password\" name=\"password\"></td></tr>\n"
    
$d .= "<tr><td> </td><td><input type=\"submit\" value=\"login\"></td></tr>\n"
    
$d .= "</table>\n"
    
$d .= "</form>\n"
    if (
$disp === true) print $d
    return 
$d
}  

$authParams = array( 
    
'dsn'           => _DSN,    // DSN String 
    
'table'         => 'auth',    // wie heißt die Tabelle 
    
'usernamecol'   => 'user',    // Feld: Username 
    
'passwordcol'   => 'pass',    // Feld: Paßwort 
    
'cryptType'     => 'md5',    // Verschlüsselungstyp 
    
'db_fields'     => '*');    // welche Felder sollen aus der Tabelle gelesen und in der Session gespeichert werden, * => Alle

// Instanz erzeugen (ich bin ein Freund kurzer Variablennamen) 
$a = new Auth ('MDB2',     // MDB2 Storage Driver; muß nicht eingefügt werden 
               
$authParams// das Parameter Array 
               
'loginFunction'// Name der Funktion, die dann aufgerufen wird, wenn der User nicht authentifiziert ist 
               
true    // show login: Aufruf der Login Funktion 
               
); 

// Startet die Prüfung. Vorsicht: ruft session_start auf
$a->start(); 

// Inhalt des Feldes rights auslesen und als Konstante speichern. 
// Mit setAutData können beliebige Daten gespeichert werden.
define ('_RIGHTS'$a->getAuthData('rights'));  

// Prüfen ob der Benutzer eingelogg ist
if ($a->checkAuth()) { 
    echo 
'Login erfolgreich!';
    
print_r($_SESSION);
} else {
    echo 
'Nicht eingeloggt';
}
?>
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden PEAR-User
Beiträge der letzten Zeit anzeigen:   
Diese Seite übersetzen
PEAR-Forum.de Übersicht » HowTo´s, Tutorials, Codebeispiele und Wissenswertes
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
   Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

Zu Deinen Favoriten hinzufügen

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen