Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

User nach Login auf bestimmte Seiten verweisen

ich möchte folgende Bedingung umsetzen

User der Gruppe A meldet sich an und soll auf Seite A geleitet werden,
User der Gruppe B auf Seite B
User der Gruppe C auf Seite C

Ich habe keine Datenbank hinterlegt, sondern nur eine Textdatei:

Username | Passwort | Gruppe-A   
Username | Passwort | Gruppe-B
Username | Passwort | Gruppe-C


Leider bin ich kompletter Anfänger und habe schon sehr viel probiert.
Leider bekommen ich das nicht hin und hoffe auf Hilfe oder Tips
wie das am besten umsetzen kann ! Danke im Voraus   
   


Hier mein Code: Was zu einer Seite einwandfrei funkt!



<?php
session_start();
?>
<html>
<head>
<title>SEITE</title>

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">


<br><br>



<?php
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$log=0;

$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
   {
   $zeile = fgets($userdatei,500);
   $userdata = explode("|", $zeile);

   if ($userdata[0]==$username and $passwort==trim($userdata[1]))
      {
      $_SESSION['username'] = $username;
      echo "Login erfolgreich. <meta http-equiv=\"refresh\" content=\"1;  URL=geheim.php\">";
      $log = 1;
      }
   }
fclose($userdatei);

if ($log==0)
   {
  echo "Zugriff verweigert <meta http-equiv=\"refresh\" content=\"1;  URL=false.html\">";   
    }
?>






</body>
</html>


Antworten zu User nach Login auf bestimmte Seiten verweisen:

Hallo Debruce,

das ist eigentlich ganz einfach. Das mit der HTML-Meta-Weiterleitung kannst du ja bereits. Und nachdem die Gruppen ja ebenfalls in der Datei festgelegt sind und ebenfalls durch ein "|" getrennt sind liegt der Gruppenname in "$userdata[3]". Und dann musst du nur noch eine if Abfrage machen und nach der Gruppe entscheiden, auf welche Seite man geleitet werden soll.

Allerdings wird das so noch nicht funktionieren, denn es gibt mehr als einen Benutzer, d.h. du musst erst noch die Benutzer trennen. Ich würde das so machen:
Textdatei:
user1|passwort1|gruppe1;
user2|passwort2|gruppe2;
user3|passwort3|gruppe3;

Dann musst du die Datei (wie du es schon tust) komplett in eine Variable einlesen. Danach musst du nach Usern aufsplitten (explode(";",$zeile)), sodass jeder User eine eigene Variable hat (deshalb der ";" hinter jedem user). Und dann wie gehabt mit "|" aufsplitten und die Infos vergleichen.
Und trimmen nicht vergessen, am besten einfach immer, dann kann man kaum was falsch machen.

Und ganz ganz wichtig, chmod darf nicht auf 777 oder 644 oder sonst was stehen, sonst bringt dir deine Datei gar nix, denn dann kann jeder drauf zugreifen und das Passwort auslesen. Am besten ist chmod 640.

LG,
manny12

« Letzte Änderung: 30.08.12, 13:32:59 von manny12 »

Hallo Manny
Danke erstmal für deine Hilfe!
Das ist genau mein Problem, dass ich nicht wirklich weiß
wie ich die if-Anweisung schreiben soll?
Kannst du mir ein Bsp zeigen?

Wie gesagt ich bin blutiger Anfänger, sorry!

Danke sehr

Hallo Debruce,

du hast ja die if-Anweisung bezüglich des Benutzernamens auch geschafft. Das Andere geht z.B. so:

 

Zitat
if($userdata[3] == "GruppeA")
{
  echo "<meta http-equiv='refresh' content='0; URL=GruppeA-Geheim.php'>";
}else if($userdata[3] == "GruppeB")
{
  echo "<meta http-equiv='refresh' content='0; URL=GruppeB-Geheim.php'>";
}else if($userdata[3] == "GruppeC")
{
  echo "<meta http-equiv='refresh' content='0; URL=GruppeC-Geheim.php'>";
}else
{
  echo "Es ist ein Fehler aufgetreten, bitte versuchen Sie es nocheinmal!";
}

Der Befehl "echo" in PHP heißt ausgeben. D.h. das was in den "" steht auf den Bildschirm schreiben.

LG,
manny12

Hallo Manny,
dabke nochmal für deine schnellen Antworten und Hilfe!
Habe es umgeschrieben und nochmal probiert. Jetzt bekomme
ich nur leere Weiße Seiten zu sehen  :o
Könntest du mir über den Code nochmal drüberschauen!
Danke und ich hoffe ich nerve nicht zu sehr...

//<?php
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$log=0;
$group=2;

$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
   {
   $zeile = fgets($userdatei,500);
   $userdata = explode(";",$zeile);
   $userdata = explode("|",$zeile);
 

   if ($userdata[0]==$username and $passwort==trim($userdata[1]))
      {
      $_SESSION['username'] = $username;
      
      $log = 1;
     }
   }
if($userdata[2] == "A")
      {
        echo "<meta http-equiv='refresh' content='1; URL=geheim.php'>";
      }else if($userdata[2] == "B")
      {
        echo "<meta http-equiv='refresh' content='1; URL=geheim2.php'>";
      }else if($userdata[2] == "C")
      {
        echo "<meta http-equiv='refresh' content='1; URL=geheim3.php'>";
      }
   
fclose($userdatei);

if ($log==0)
   {
  echo "Zugriff verweigert <meta http-equiv=\"refresh\" content=\"1;  URL=false.html\">";   
    }

?>

//

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi, verwende bitte [ code ] [ /code ] , um Code zu posten. Das macht es einfacher zu lesen. (Natürlich ohne die Leerstellen und den Code dann dazwischen)

Zu deinem Problem:



   $userdata = explode(";",$zeile);
   $userdata = explode("|",$zeile);


die 2. Zeile macht die 1. Sinnlos. Lass die 1. Zeile weg, da du die Daten mit | getrennt hast.

Deine 2. If-Abfrage

if($userdata[2] == "A") ...
gehört in die erste If-Abfrage hinter die Zeile

$_SESSION['username'] = $username;
da sonst ja $userdata[2] bereits einen anderen Wert hat.

Und das hier:
if ($log==0)
   {
  echo "Zugriff verweigert <meta http-equiv=\"refresh\" content=\"1;  URL=false.html\">";   
    }

ist mal sehr Sinnbefreit, da man

1. Text nicht in den Header und Meta-Tags nicht in den Body schreibt und

2. Man eigentlich das Formular, welches am Anfang deiner Datei steht, niemals ausfüllen können dürfte, weil ja beim ersten Aufrufen der Datei $log == 0 ist und somit die Weiterleitung auf false.html greifen sollte.

« Youtube Videos Seite mit eingebundenen Frames bleibt leer »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

Datenbank
Eine Datenbank (DBS), im englischen database, ist eine strukturierte Datensammlung und fungiert wie ein "digitales Archiv". Datenbanken dienen der effizienten Aufbewahrun...