Zur Navigation

login-daten automatisch in folgeseiten einbeziehen?

1 andehrl

hallo, ich habe in meiner webseite einen "geschützen" bereich erstellt in den sich der benutzer einloggen muss. ich hätte nun gerne, dass der nutzer nach dem einloggen auf einer der folgeseiten zb seine registrierungsdaten angezeigt bekommt ohne erneut suchfelder ausfüllen zu müssen, sondern dass die logindaten zu diesem zweck verwendet werden.
kann ich beim aufbau einer angewählten, geschützten seite durch eine datenbankabfrage eine bedingung mit WERE einbauen, die bezug auf die login-session nimmt und ihre variablen daraus bezieht? oder funktioniert das vollkommen anderst?
ich habe die seite zgt mit dreamweaver gebaut. das programm erstellt für die login-seite diesen code.

<?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['nutzername'])) {
  $loginUsername=$_POST['nutzername'];
  $password=$_POST['passwort'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "s1homesicher.php";
  $MM_redirectLoginFailed = "8bMeinkontologinfehlgeschlagen.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_Registrierung, $Registrierung);
  
  $LoginRS__query=sprintf("SELECT nutzername, passwort FROM login WHERE nutzername=%s AND passwort=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $Registrierung) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
    //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 );
  }
}
?>

und

...
<tr>
    <td height="3595"></td>
    <td align="left" valign="top"><form action="<?php echo $loginFormAction; ?>" method="POST" name="login" id="login">
      <table width="524" height="195" border="0" cellspacing="0" bgcolor="#E1E2BC">
        <tr>
...



in den geschützen seiten schreibt dw diesen code:

<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);
    
  $logoutGoTo = "1home.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}
?>

und

<a href="<?php echo $logoutAction ?>" class="schriftangaben11111111111">logout</a>


04.10.2010 13:03

2 Jörg Kruse

Um was für Daten handlt es sich? Nach dem Login werden einige Daten in der Session gespeichert - darauf kannst du auf den Folgeseiten zugreifen.

    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup; 

04.10.2010 22:52 | geändert: 04.10.2010 22:53

3 andehrl

ich hab inzwischen eine lösung gefunden. indem ich eine datenbankabfrage beim hochladen einer seite einbaue und die WERE bedingung so gestalte das ich den "nutzername" mit der sitzungsvariablen "MM_Username" vergleiche erhalte ich die gewünschten ergebnisse zb für die registrierungsdaten. ich verstehe nur nicht warum ich das gleiche nicht auch mit dem Passwort machen kann? beim login muss der benutzer "nutzername" und "passwort" eingeben. dann müssten doch auch beide werte in der session hinterlegt sein?

04.10.2010 23:24

4 Jörg Kruse

Wozu willst du das Passwort in der Session speichern? Das Passwort muss nur beim Login auf Richtigkeit verglichen werden. Anhand der Session ist auf den Folgeseiten erkenntlich, ob jemand erfolgreich eingeloggt ist: wenn $_SESSION['MM_Username'] nicht gesetzt ist, ist der User nicht eingeloggt, andernfalls gibt die Variable den Namen des eingeloggten Users wieder.

Ich würde das Passwort auch im Sinne einer sicheren Programmierung nur an einem einzigen Ort speichern (in diesem Fall der Datenbank).

05.10.2010 00:05

5 andehrl

stimmt, das macht sinn. danke für die erklärung.

05.10.2010 00:10

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]