sessions (login)

sumpfhuhn

Gesperrt
Hi,

ich bin gerade dabei für meine website ein login zu basteln. da is bloß das kleine prob:

wie kann ich zb gucken das es eine session gibt und ob sie die richtigen werte hat also $user $passwort. das der dann vergleicht und reinlässt. wenn sie net stimmen eben zur anmeldung oder so.

thx, cu
 
folgendes:

PHP:
if(session_is_registered("username")) {
   echo "Du bist eingeloggt";
   }
else {
   echo "<meta http-equiv=\"refresh\" content=\"0;URL=login.php\">";
   }

dieses script schaut aber erst, ob der user schon eine session am laufen hat.
fürs login musst du halt nochmals betteln... ;)

antihero
 
woher hat denn der Besucher die Login-Daten? Hat er sich die selbst getippt, und wird dann z.B. in einer DB abgespeichert?

WEnn dem so ist (was ich hoffe), dann sehen wir weiter.....


Soll heissen: Genaue Angaben ergeben genauere Antworten mit Code...
 
hmmm... also, das andere script prüft lediglich, ob bereits eine session am laufen ist, also ob der benutzer sich schon eingeloggt hat. wie du das mitem login machst bleibt dir überlassen. Db empfielt sich, wenn du mehrere Benutzer hast und regelmässig neue hinzukommen oder alte gelöscht werden.
Falls du nur ein paar wenige Benutzer hast, welche immer gleich bleiben, kannst du das ganze auch mit einem file lösen, oder aber die namen und passwörter direkt in den php code implementieren.
hier ein login script mit MySQL-DB. Zuerst machst du eine Datei mit einem Formular das zwei Eingabefelder hat, mit den namen "fuser", und "fpass". ich setz hier einen f vordran, damit ich später im file genau weiss, welche variable aus dem Formular kommt und welche aus der DB. Die "action" des formulars setzt du so, das die Daten an ein login.php weitergesendet werden => <form method="POST" action="login.php">
HIer der Quelltext der Datei login.php:


PHP:
<?php

$con = mysql_connect("server","username","password")
  or die("Konnte keine Verbindung zur DB herstellen");
mysql_select_db("dbname", $con);
$result = mysql_query("SELECT unick, upass FROM users");
while($logdat = mysql_fetch_row($result)) {
   if($fuser == $logdat[0]) {
      if($fpass == $logdat[1]) {
         echo "Erfolgreich eingeloggt";
         }
      else {
         echo "Falsches Passwort für Benutzer $fuser";
         }
      $uf = "1";
      }
   }
if($uf != "1") {
   echo "Benutzername nicht in DB vorhanden!";
   }

Das sollte schon reichen um ein einfaches Login zu machen. Dazu ist noch zu sagen, das in der obigen Version das Passwort als Klartext gespeichert wird. Für ein einfaches Script sicher egal, wenn du aber sicher gehen willst, baust du noch eine md5 verschlüsselung ein. Das geht ganz einfach mit dem Befehl md5("wert zum verschlüsseln"); Du speicherst dann das PW des users schon verschlüsselt und prüfst beim einloggen, obb der md5 wert des eingegeben passworts mit dem in der Datenbank übereinstimmt.
Statt dem Text der oben ausgegeben wird, wenn du erfolgreich eingeloggt hast, kannst du auch eine session starten und eine weiterleitung einbauen... aber das ist ja klar... ;)

Hoffe das hilft dir weiter... ;)

antihero
 
moin,

wie würde das eigentlich mit ner textfile gehn? Für den ich das basteln soll der hat leider keine mysql ;). Achja wie kann man so ne blätterfunktion machen wie bei Archiven meist is mittels textfile der inhalt :)

:))

achja die daten stehn in ner ascii datei user.dat und pw.dat und werden per anmeldung reingeschrieben ;)
 
Zuletzt bearbeitet von einem Moderator:
textfile

also textfiles sind grundprinzipiell mal uncool... ;)

hier mal ein beispielcode. Ich würd übrigens die User und Passwörter in eine Datei nehmen > user.dat. Ich nehm bei meiner Lösung an, das sich immer auf zwei Zeilen zuerst der Benutzername, dann das Passwort befindet. Man könnte das auch anders lösen, eleganter, aber so scheints mir klarer und verständlicher:

PHP:
<?php
$counter = "1";
$fcon = fopen("user.dat","r");
while(!feof($fcon)) {
   if($counter%2 != "0") {
      if(fgets($f, 1024) == $fuser) {
         $userf = "1";
         $found = "1";
         }
      else {
         $userf = "0";
         }
      }
   elseif($counter%2 == "0") {
      if(fgets($f, 1024) == $fpass && $userf == "1") {
         echo "erfolgreich eingeloggt!";
         $userf = "0";
         }
      else {
         echo "Falsches Passwort!";
         $userf = "0";
         }
      }
   $counter++;
   }
if($found != "1") {
   echo "Benutzername nicht in DB vorhanden!";
   }

Keine garantie! hab schon lange nich mehr mit Dateien gearbeitet, aber dass solte gehen... wenn du ein anmeldungsscript brauchst, einfach nochmal fragen... aber für den moment reicht das hier wahrscheinlich... ;)

antihero

//edit, wie auch vorhin schon, anstelle des "Erfolgreich eingeloggt" nimmst du dann einfach ein session_start und leitest auf eine andere datei weiter... auch die md5 verschlüsselung empfiehlt sich, besonders bei dateien!
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück