Login mit Session

jandelay1

Mitglied
Hallo,

Ich weiß mal wieder nicht weiter und hoff ich bekomm hier hilfe.

Ich habe ein kleines login script gemacht das ganz einfach funktioniert. auf der ersten seite trage ich PIN und ID in ein formular ein und sende es mit POST an die zweite seite. dort wird dann überprüft ob der PIN und die ID stimmen und dann wird der inhalt angezeigt sonst kommt eine Fehlermeldung.

soweit funktioniert das super.

Nur möchte ich jetzt das das formular nur dann angezeigt wird wenn man nicht eingeloggt ist.
Ist man eingeloggt soll ein logout button kommen und ein link zu dem inhalt auf der zweiten seite.


So sieht bei mir das formular aus:
Code:
<form action="pw_pruefen.php" method="post" name="id & pw" target="_blank">
 			Benutzer:
 		    <p><input type="text" name="id" size="24" border="0"></p>
 			<p>Passwort:</p>
 		    <p><input type="password" name="pw" size="24" border="0"></p>
 		    <p><input type="submit" name="submitButtonName" value="LogIn" border="0"></p>
 		</form>

und so sieht die zweite seite aus die das passwort überprüft:

Code:
<?php
 $passwort="1234";
 $nick="1234";
 
 if(($_POST['pw']==$passwort) && ($_POST['id']==$nick)) 
 {
 echo"Deine Daten haben gestimmt."; 
 } 
 else {
 echo"Password oder Benutzername falsch. Bitte überprüfe deine eingabe nocheinmal. ";
 
 }
 ?>

So ich hoff ihr wisst was ich meine und könnt mir helfen.
Ich denke mal das man das mit SESSION machen kann aber ich weiß nicht wie.

Danke schon im vorraus
 
Grüss dich,
ja sowas realisiert man in der Regel mit Sessions.
Das Stichwort dafür ist session_start .
Ich zeig dir mal den Code aus meinem Login/Reg Script, vielleicht verstehst du dann mehr.

Login.php
Code:
   <?php
   session_start ();
   
   $connectionid = mysql_connect ("localhost", "msd", "Orange");
   if (!mysql_select_db ("msd", $connectionid))
    {
     die ("Keine Verbindung zur Datenbank");
    }
   
   $sql = "SELECT ".
   	"Id, Nickname, Nachname, Vorname, Email, Rechte ".
     "FROM ".
   	"benutzerdaten ".
     "WHERE ".
   	"(Nickname like '".$_REQUEST["name"]."') AND ". 
   	"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
   $result = mysql_query ($sql);
   $data = mysql_fetch_array ($result);
     
   	if (mysql_num_rows ($result) > 0)
   	 {
   	   if ($data["Rechte"] != 0)
   		 {
   	  $_SESSION["user_id"] = $data["Id"];
   	  $_SESSION["user_nickname"] = $data["Nickname"];
   	  $_SESSION["user_nachname"] = $data["Nachname"];
   	  $_SESSION["user_vorname"] = $data["Vorname"];
   	  $_SESSION["user_email"] = $data["Email"];
   	  $_SESSION["user_rechte"]= $data["Rechte"];
   	 include_once("intern.php");
   	} 
   	else
   	{
   	  header ("Location: ../../index.php?action=login&fehler=1");
   	}
      }
     else
     {
   	header ("Location: ../../index.php?action=login&fehler=1");
     }
   
   ?>


Formular.php
Code:
<html>
   <head>
     <title>Login</title>
   </head>
   
   <body>
   <h1 align="center">Logincenter</hi>
   <form action="./content/login/login.php" method="post">
   <table border="0">
    <tr>
      <td>Name:</td>
      <td><input type="text" name="name" size="20"></td>
    </tr>
    <br />
    <tr>
      <td>Kennwort:</td>
      <td><input type="password" name="pwd" size="20"></td> 
    </tr>
    <tr>
      <td align="center" colspan="2"><input type="submit" value="Login"></td>
    </tr>
    <tr>
      <td colspan="2">Info: Bitte beachten sie die Gro&szlig;- und Kleinschreibung.</td>
    </tr>
    <tr width="100%">
      <td colspan="2"><?php
   		if (isset ($_REQUEST["fehler"]))
   		 {
 		 echo "<b style=color:red;>Die Zugangsdaten sind ungültig oder ihr Account wurde noch nicht freigeschaltet.</b>";
   		 }
   		?>	  
     </td>
    </tr>
    <tr>
      <td colspan="2"><?php
   		if (isset ($_REQUEST["meldung"]))
   		 {
 		 echo "<b style=color:green;>Ihr Account wurde freigeschaltet.</b>";
   		 }
   		?>   </td>
    </tr>
   </table>  
   </form>
   </body>
   </html>
   [b]

Anfang von Intern.php
Code:
   <?php
   switch($action)
   {
    case "login" :
     {
      session_start ();
     }
   }	
   ?>


Logout.php
Code:
 <?php
 // Wird ausgeführt um mit der Ausgabe des Headers zu warten.
 ob_start ();
 
 session_start ();
 session_unset ();
 session_destroy ();
 
 header ("Location: formular.php");
 ob_end_flush ();
 ?>

Übrigens, nein ich bin nicht blöd,
die hier angezeigten Passwörter sind nicht die richtigen ;)
 
Also das ist ja alles mit Datenbank.
Brauch ich nicht. Es gibt nur 1 Benutzer namen und 1 Kennwort.


Ich hab das jetzt selbst mal so weit bekommen:

index.php ( login)
Code:
 <?php
  session_start();
  ?>
  <html>
  
  	<head>
  	
  	<title>login formular </title>
  	</head>
  
  
  <?php
  
  $sessionid = "133278";
  
  
  if($SESSION_SBL==$sessionid)
  {
   echo "hallo login erfolgreich";
  }
  
  else
  {
 echo "<body bgcolor='#ffffff'><form action='pw_pruefen.php' method='post' name='FormName'> 		 ID<input type='tex' name='id' size='12' border='0'>	 	 <p>PW<input type='password' name='pw' size='12' border='0'></p>	 	 <p><input type='submit' name='login' value='login' border='0'></p>	 </form>	 <p></p>	</body>";
  }
  ?>
  </html>


und diese seite:
pw_prüfen.php

Code:
  <?php
  session_start();
  
   
 $id = "abcd";				 //benutzer id ändern
  $pw = "1234";				 //passwort ändern
  $sessionid = "133278";   
  
  
  if(($_POST['id']==$id) && ($_POST['pw']==$pw)) 
  
  
  {
  
  	session_start();
  
  	session_register("SESSION_SBL");
  
  	$SESSION_SBL = $sessionid;
  	
  	
     }
  
   
  
  ?>
  
   
  
  <html>
  
  <head>
  
  <title>Passwortgeschützter Bereich</title>
  
  </head>
  
  <body>
  <?php
 
 if($SESSION_SBL == $sessionid)
 
 {
 
 	echo"hat geklappt  juhu";
 	echo$_COOKIE['ErsterBesuch'];
 }
 
 else
 
 {
 
 	echo"Sie sind nicht eingelogt. Bitte versuchen sie es erneut. ";
 
 }
 
  
 
 ?>
 		</p>
 	</body>
 
 </html>

soweit so gut. kann mich anmelden, und bekomm auch den inhalt angezeigt. Nur wenn ich wieder auf index.php gehe sollte normal auch der inhalt kommen denn über die session bin ich ja noch angemeldet.

Wo liegt der fehler das es nicht geht?

danke
 
Hoi,

muss sagen das sieht bei dir etwas wild und unkoordiniert aus und ich steig da teilweise nur recht schwer durch.

Ein Tutorial - Loginsystem ohne DB und nur mit 1 User findest du bei hier bei SelfHTML (Google machts möglich ;) ) http://aktuell.de.selfhtml.org/tippstricks/php/loginsystem/index.htm

Dort findest du eine login.php, logout.php, eine auth.php und die Verwendung der Auth.php in deinen anderen PHP Seiten.
Alles schön mit Text erklärt, auf deutsch. Glaube das hilft Dir mehr als einzelne Kommentare hier im Forum.

Gruss
 

Neue Beiträge

Zurück