Anzeigen:
Results 1 to 1 of 1

Thread: Wie generiere ich in des SV Benutzerauthentifizierung einen Cookie ..

  1. #1
    die Gütige ... Gudula's Avatar
    Join Date
    04/2001
    Location
    aus dem Sauerland
    Posts
    10.342

    Wie generiere ich in das SV Benutzerauthentifizierung einen Cookie ..

    ... an eine bestimmte Gruppe?

    Weiteres in den Kommentarzeilen im Scriptcode.
    Änderungen wirden mit //-----> eingeleitet.

    Dump für die Logintabelle

    PHP Code:
    -- 
    -- 
    Tabellenstruktur für Tabelle `login`
    -- 

    CREATE TABLE `login` (
      `
    idint(11NOT NULL auto_increment,
      `
    kennungvarchar(20NOT NULL default '',
      `
    passwortvarchar(20NOT NULL default '',
      `
    rechteint(4NOT NULL default '0',
      
    PRIMARY KEY  (`id`)
    ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

    -- 
    -- 
    Daten für Tabelle `login`
    -- 

    INSERT INTO `loginVALUES (1'admin''admin'0);
    INSERT INTO `loginVALUES (2'testuser''testuser'1); 
    Als Fehlerseite wird auf die Loginseite zurückgeleitet.
    Der normale User geht nach erfolgter Anmeldung auf die danke.php. Dies kann ganz normal auf Zugriff geschützt werden.
    Der Admin (Recht = 0) geht auf eine Adminseite. in meinem Beispiel heißt dese sad.php.

    Diese sad.php darf nur betreten werden, wenn eine Cookie gesetzt ist.

    Beim Logout kann der Cookie nebst Sessions wieder gelöscht werden.

    login.php

    PHP Code:
    <?php require_once('../../Connections/homepage.php'); ?>
    <?php
    // *** Validate request to login to this site.
    if (!isset($_SESSION)) {
      
    session_start();
    }

    $loginFormAction $_SERVER['PHP_SELF'];
    if (isset(
    $_GET['accesscheck'])) {
      
    $_SESSION['PrevUrl'] = $_GET['accesscheck'];
    }

    if (isset(
    $_POST['kennung'])) {
      
    $loginUsername=$_POST['kennung'];
      
    $password=$_POST['passwort'];
      
    $MM_fldUserAuthorization "";
      
    $MM_redirectLoginSuccess "danke.php";
      
    $MM_redirectLoginFailed "login.php";
      
    $MM_redirecttoReferrer false;
      
    mysql_select_db($database_homepage$homepage);
      
      
    // ----->
      // Hier muss die Spalte Rechte noch mit eingefügt werden. 
      
      
    $LoginRS__query=sprintf("SELECT kennung, passwort, rechte FROM login WHERE kennung='%s' AND passwort='%s'",
        
    get_magic_quotes_gpc() ? $loginUsername addslashes($loginUsername), get_magic_quotes_gpc() ? $password addslashes($password)); 
       
      
    $LoginRS mysql_query($LoginRS__query$homepage) or die(mysql_error());
      
      
    // ----->
      //  Diese Funktion liefert über ein assoziatives Array einen Datensatz.
      
      
    $row_rs mysql_fetch_assoc($LoginRS);
      
    $loginFoundUser mysql_num_rows($LoginRS);
      if (
    $loginFoundUser) {
         
    $loginStrGroup "";
         
         
    // ----->
         // An dieser Stelle werden die Rechte ausgelesen.
         // Die Gruppe des Admins wird abgefragt. In meinem Beispiel entsprecht diese 0
         // und bezieht sich auf die Spalte Rechte in der Tabelle. 
         // Im weiteren Verlauf wird ein cookie geschrieben und eine
         // andere Weiterleitung in die Variable $MM_redirectLoginSuccess gesetzt.

         
    if($row_rs['rechte']==0){
         
    setcookie ("admin""geloggt",time()+60*60*24*365,"/");
         
    $MM_redirectLoginSuccess "sad.php";
         }
        
        
    //declare two session variables and assign them
        
    $_SESSION['MM_Username'] = $loginUsername;
        
    $_SESSION['MM_UserGroup'] = $loginStrGroup;          

        if (isset(
    $_SESSION['PrevUrl']) && false) {
          
    $MM_redirectLoginSuccess $_SESSION['PrevUrl'];    
        }
        
    header("Location: " $MM_redirectLoginSuccess );
      }
      else {
        
    header("Location: "$MM_redirectLoginFailed );
      }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Login</title>
    </head>

    <body>
    <form id="form1" name="form1" method="POST" action="<?php echo $loginFormAction?>">
      <input name="kennung" type="text" id="kennung" value="admin" /> 
      Kennung<br />
      <br />
      <input name="passwort" type="text" id="passwort" value="admin" /> 
      Passwort<br />
      <br />
      <input type="submit" name="Submit" value="Senden" />
    </form>
    </body>
    </html>
    sad.php

    PHP Code:
    <? 
    // ----->
    // Abfrage, ob Cookie vorhanden, ansonsten Weiterleitung auf Loginseite.
    if(!isset($_COOKIE['admin'])) {
    header("location:login.php"); // hier sollte der absolute Pfad eingetragen werden. 
    exit;
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>sad</title>
    </head>

    <body>
    <? echo $_COOKIE['admin'?>
    <br />
    <br />
    <a href="logout.php">logout
    </a>
    </body>
    </html>
    logout.php

    PHP Code:
    <?php
    // *** Logout the current user.
    $logoutGoTo "login.php";
    if (!isset(
    $_SESSION)) {
      
    session_start();
    }
    $_SESSION['MM_Username'] = NULL;
    $_SESSION['MM_UserGroup'] = NULL;
    unset(
    $_SESSION['MM_Username']);
    unset(
    $_SESSION['MM_UserGroup']);

    // ----->
    // an dieser Stelle wird nebst der Session auch ein Cookie gelöscht. 

    setcookie("admin","",time()-3600,"/"); 
    if (
    $logoutGoTo != "") {header("Location: $logoutGoTo");
    exit;
    }
    ?>
    Bitte beachten:
    Auch hier liegt ein Eingriff in den generierten Scirptcode vor. Diese sind im Assistenten dann nicht mehr zu bearbeiten, nur noch im Scriptcode selbst.
    Last edited by Gudula; 20.02.2006 at 12:47.
    Herzliche Grüße, Gudula
    per aspera ad astra
    Ich bin kein Klugscheißer, ich weiß es wirklich besser!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •