Frage zum Tut Loginsystem

Schön das ich dir helfen konnte!

Das ist meinsten ein Problem wenn der code verschachtelt ist und man ihn nicht im ganzen sieht und man nur erahnen kann was dan passiert!

da hilft nur anregungen geben!
 
hallo,

wie hast du es gelöst, muß einen login einbauen, der session beinhlatet.

wenn du deine lsg hier posten könntest.

danke


grüße
ava99
 
Eventuell kannst auch damit was anfangen , ist aber recht billig gehalten und mit einen Cookie , war zum Test des automatischen Logins. Abfragen müssten natürlich besser gehaten werden. Wie gesagt ist nur Testweise gewesen.

PHP:
<?php

/*******************************************************************************
Simples Login Script mit Cookies
*******************************************************************************/

function LoginForm(){
    return '<form method="post" action="'.$_SERVER['PHP_SELF'].'">
          <input type="text" name="user">
          <input type="password" name="pass">
          <input type="submit" value="einloggen" name="login">';
}
/* das Hier kann dann weggelassen werden */
if(isset($_COOKIE["LoginDaten"])){
    $LD = explode("¥", $_COOKIE["LoginDaten"]);
    if($LD[0] == "Fips" && $LD[1]=="0815"){
      echo "eingeloggt";
    }else{
      echo LoginForm();
    }
/* bis hier und statt elseif eine If Anweisung*/
}elseif(isset($_POST['login'])){

    if($_POST["user"] == "Fipsf" && $_POST["pass"] == "0815"){
      $LD = $_POST["user"]."¥".$_POST["pass"];
      // Statt diesem setCookie einfach session_start() 
      setCookie("LoginDaten",$LD,time()+1800);
      echo "erfolgreich eingeloggt";
    }
}else{
  echo LoginForm();
}
?>

Statt den cookie zu setzen setzt halt ein session_start() hin speicherst dir relevante Daten oder nicht und setzt noch einen Header zur Weiterleitung.
 
So kleiner Nachtrag mal 2 verschiedene Login Scripte :

Das 1. beruht auf einer Textdatei und eine Session wird gestartet :
PHP:
<?php
/*******************************************************************************
Section Admin:
    Wenn das Formular noch ausgefüllt wurde ruft er die Klasse AdminLogin auf
    Session wird erstellt. Passwort , NutzerName und Ablaufzeit werden
    gespeichert.
    Ablaufzeit ist die Zeit wo es erstellt wurde + 30 min (1800 sek) und danach
    wird die Session autoamtisch zerstört.
*******************************************************************************/

CLASS AdminLogin{
  var $Admin;
  var $pass;
  var $StartZeit;
  var $error = 0;

  function LoginCheck(){
    $this->Admin     = $_POST["Admin"];
    $this->pass      = md5($_POST["Passwort"]);
    $this->StartZeit = time()+1800; // 30 min Laufzeit
    
    include ("nutzer.inc.php");
    foreach($nutzer as $pass => $Admin){
        if($this->pass == $pass && $this->Admin == $Admin &&
           $this->error != count($nutzer)){
            session_start();
            $_SESSION["AdminName"] = $this->Admin;
            $_SESSION["PassWort"]  = $this->pass;
            $_SESSION["start_time"]= $this->StartZeit;
            $_SESSION["logged_in"] = "ok";
            
            echo "Da keine automatische Weiterleitung existiert,
                  zum Formular hier <a href='http://"
                .$_SERVER["SERVER_NAME"]
                .dirname($_SERVER["REQUEST_URI"])
                ."/VotingForm.php'>klicken</a>";
         }else{
           $this->error++;
         }
       }
       if($this->error == count($nutzer)){
         echo 'Kein Zutritt';
       }
    }
}
/*******************************************************************************
Section Login Formular:
        Wenn der Submit Button noch nicht gedrückt wurde
        Login Formular für die Eingaben Passwort und AdminName
        ansonsten rufe die Klasse AdminLogin auf für Überprüfungen der Eingaben
*******************************************************************************/

if(!isset($_POST["login"])){
    echo "<div align='center'>";
    echo '<table border=1 cellspacing=1 cellpadding=1>
            <form method="post" action="'.$_SERVER["PHP_SELF"].'">
                <tr>
                   <td width=100>Login Name:</td><td><input type="text" name="Admin"></td>
                </tr>
                <tr>
                  <td width=100>Login Pass:</td><td><input type="password" name="Passwort" maxlength="10"></td>
                </tr>
           <tr><td colspan=2 align="center"><input type="submit" value="einloggen" name="login"></td></tr>
          </form>';
    echo "</div>";
}else{
  $admin = new AdminLogin;
  $admin->LoginCheck();
}
?>

Nutzer.inc.php hat diesen Inhalt
PHP:
<?php
$nutzer = array('fe01ce2a7fbac8fafaed7c982a04e229' => 'Demo',
                '6dc13510ac2bcf8ac6c2226b2e16e51e' => 'Fips');
?>

Automatischer Logout nach 30 min :
PHP:
session_start();
if(isset($_SESSION["start_time"])){
 if($_SESSION["start_time"] < time()){
  unset($_SESSION);
  session_destroy();
  }
}
...
//würde beim Refresh und wenn er ausgeloggt ist wieder zum Login Screen springen.
if(!isset($_SESSION["logged_in"]) == "ok"){
    HEADER("LOCATION:http://".$_SERVER["SERVER_NAME"].
dirname($_SERVER["REQUEST_URI"])."/VoteAdmin.php");
  }else{
      $VotingForm = new EingabeForm;
      echo $VotingForm->Formular();
  }
 
Zuletzt bearbeitet:
Zur Übersicht , man möge mir verzeihen ein zweites mit Datenbank abfrage:

Mhm das ist soweit fertig , die Passwörter werden wie auch zuvor als MD5 Hash in der Datenbank gespeichert. Was nach dem einloggen genau passiert hab ich noch nicht genau entschieden.
Aber ich denke ich werde eine Session starten und wenn erwünscht den Cookie setzen dann.

PHP:
<?php
require("Includes/DatabaseConnect.php");
/*******************************************************************************
Section Login Formluar
    Login : schaun wer sich eingeloggt hat
    Cookie Speichern falls erwünscht
    Session starten wenn keine Cookies erlaubt werden über URL weitergeben
*******************************************************************************/
CLASS Eingabe extends DataBaseConnect{

  var $loginName;
  var $loginPass;
  var $cookie;
  var $user;
/*******************************************************************************
Konstruktor der Klasse und Weiterleitung an die Funktionen zu weiterverarbeitung
*******************************************************************************/

  function Eingabe($loginName,$loginPass,$cookie){
    $this->SetLoginVariables($loginName,$loginPass,$cookie);
    $this->LoginCheck();
  }

/******************************************************************************/
  function SetLoginVariables($loginName,$loginPass,$cookie){
    $this->loginName = $loginName;
    $this->loginPass = md5($loginPass);
    $this->cookie    = $cookie;
  }
/*******************************************************************************
Section LoginCheck :
        Schaun ob die Eingaben übereinstimmen und dann festlegen wer sich
        eingeloggt hat.
*******************************************************************************/

  function LoginCheck(){
      $this->connect(); // Funktion der Klasse DataBaseConnect aufrufen

      $Login =  mysql_query("SELECT User,Pass FROM mitglieder");
      $zeilen = mysql_num_rows($Login);
      
      for($i=0;$i<$zeilen;$i++){
        $Ergeb[$i] = mysql_fetch_array($Login);
      }
      
      for($i=0;$i<count($Ergeb);$i++){
        if($Ergeb[$i]['User'] == $this->loginName &&
           $Ergeb[$i]['Pass'] == $this->loginPass){
             // EINGELOGGT Session starten
             // Cookie setzen oder sonst was ;)
           }
        }
    }//Funktion LoginCheck schliessen
}//Klasse Eingabe schliessen

if(isset($_POST['login']) && $_POST['login'] == "einloggen"){

  if(!empty($_POST["LoginName"]) && !empty($_POST["Pass"])){

        if(isset($_POST["cookie"])){
            $eingabe = new Eingabe($_POST["LoginName"],$_POST["Pass"],$_POST["cookie"]);
        }else{
            $eingabe = new Eingabe($_POST["LoginName"],$_POST["Pass"],"FALSE");
        }
  }

}else{
    echo '<form method="post" action="'.$_SERVER["PHP_SELF"].'">
            <input type="text" name="LoginName" value=""  size="15"><br>
            <input type="password" name="Pass" maxlength="15" size="15" value=""><br>
            <input type="checkbox" name="cookie" value="ja">Wiedererkennen?<br>erfordert Cookies<br>
            <input type="submit" value="einloggen" name="login">
          </form>';
}
?>

DatabaseConnect.php
PHP:
<?PHP
/*******************************************************************************
DatenBank starten und Benutzer abfragen
*******************************************************************************/

CLASS DataBaseConnect{
  var $mySQLUser;
  var $mySQLPass;
  var $mySQLDbName;
  var $mySQLHost;
  
  function Connect(){
    /***************************************************************************
    Section Connect:
        Verbindung zur Datenbank herstellen
        Datenbank auswählen
    ***************************************************************************/
    
    include('connect.inc.php');
    $this->mySQLUser   = $mySqlUser;
    $this->mySQLPass   = $mySqlPass;
    $this->mySQLDbName = $mySqldbName;
    $this->mySQLHost   = $mySqlHost;
    
    mysql_connect(
        $this->mySQLHost,
        $this->mySQLUser,
        $this->mySQLPass)
    OR DIE
        ('Verbindung konnte nicht hergestellt werden');
        
    mysql_select_db($this->mySQLDbName);
  }
}
?>

Die include Datei connect.inc.php lass ich mal aus da da nur die Variablen drinne stehen wie Passwort , Nutzer , Host , Datenbank.
 
Zuletzt bearbeitet:
Naja das Login arbeitet momentan auch noch nicht zu 100% wie ich möchte :( Also hab noch winzige Probleme.

Aber wenn Du noch eines benötigst mit Sessions und automatischen Login dann könntest mein jetziges schon nehmen. Was mich ein wenig ärgert da er irgendwie immer , ausser ich sage "wiedererkennen" also cookie speichern bitte , die Session_id über die URL weiter gibt.

Nicht so tragisch aber auch etwas unschick *G*

bzw das fertige ohne die ganze Datenbank VerbindungsSache mit automatischen Login und Sessions ist hier zu finden allerdings auf einer Datenbank basierend und sicher nicht optimal gelöst.

http://www.ffa4dow.de/CodeSchnipsel/LoginScript/Login.php

Funktioniert soweit recht gut , naja fast bis auf den Session Mist und der URL :)

Natürlich muss das Passwort schon als MD5 Hash in der Datenbank stehen sonst muckert er rum.
 
Zuletzt bearbeitet:
Zurück