Verschiedene Benutzerkonten Login HILFE

Servus zusammen,

mit Google finde ich zu meinem persönlichen Problem leider keine Antwort. Deswegen hier über den Weg der Experten.
(Bin ein php n00b also bitte etwas Rücksicht nehmen) :wink:

Und zwar habe ich ein Login Script gebastelt, in welchem ich über die login.php nach dem Username und Passwort frage. Abgefragt wird das ganze über die security.php, in der auch Benutzername und Passwort hinterlegt sind. Die auth.php checkt später, ob die Session besteht oder nicht.

Hintergrund meines Anliegens ist, dass ich per Mail darüber informiert werden möchte, wenn sich jemand einloggt. Das funktioniert soweit auch ganz gut. Die IP und der Benutzername des „Visitors“ werden mir auch per Mail geschickt, wenn der Login erfolgreich war. Jetzt würde ich aber gerne verschiedene Username/Passwort Kombinationen (quasi verschiedene Benutzerkonten) implementieren und genau hier hängts bei mir. Schaut euch die security.php mal an. Ich nehme mal an, dass ich in dieser an der Stelle, wo der Username und das PW hinterlegt sind (benutzername1/passwort1), auf eine benutzerkonten.php verweisen muss oder? Mit htaccess habe ich noch nie gearbeitet, falls das der Tipp sein sollte, aber bin für neues gerne offen :smile:

Hat jemand ne Idee? DANKE!

// login.php

<?php session_unset();
?\> // security.php <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') {
session\_start(); $user = $\_POST['user']; $pass = $\_POST['pass']; $hostname = $\_SERVER['HTTP\_HOST']; $path = dirname($\_SERVER['PHP\_SELF']); // Benutzername und Passwort werden überprüft if ($user == 'benutzername1' && $pass == 'passwort1') { $\_SESSION['angemeldet'] = true; // Weiterleitung zur geschützten Startseite if ($\_SERVER['SERVER\_PROTOCOL'] == 'HTTP/1.1') { if (php\_sapi\_name() == 'cgi') { header('Status: 303 See Other'); } else { header('HTTP/1.1 303 See Other'); } } mail('[[email protected]](mailto:[email protected])', 'BETREFF', $\_SERVER['REMOTE\_ADDR'], $user); echo "

Hallo,

die einfachste Lösung wäre hier, an der Stelle, an der Du die Usernamen/Passwörter hinterlegt hast, entsprechend mehrere zu hinterlegen > user1=xy, pw1=12, user2=zq, pw2=34

Dann an der Stelle an der Du die Prüfung vornimmst, ob das der User ist, entsprechend mit IF, elseif usw. oder mit switch entsprechend abfragen, und übergeben.

Hallo,

Du sprichst davon dass die variablen in der security.php hinterlegt sind dass ist eigentlich nicht ganz richtig. Du übergibst die Variablen als post variablen jedesmal neu wenn sich ein benutzer einloggt und das formular abschickt. D.h. es werden die Formulardaten die der Benutzer einträgt an die security.php übergeben und von dort aus per mail an dich weiter geschickt. Wenn du andere daten von einem benutzer benötigst musst du diese irgendwo (z.B. Datenbank) speichern und dann auslesen) da die Post-Variablen bei jedem login neu erzeugt werden.

Hallo,

lege deine Benutzer als Array an - oder gleich in einer Datenbank.
Als Array könnte das so aussehen:

$users = array(
‚user1‘ => ‚pw1‘,
‚user2‘ => ‚pw2‘,
‚user3‘ => ‚pw3‘,
);

Aus
if ($user == ‚benutzername1‘ && $pass == ‚passwort1‘) {
wird dann
if (isset($users[$user]) && $users[$user] === $pass) {

isset prüft ob der Benutzer existiert. Wenn nicht wird abgebrochen und es geht nach dem if weiter. Wenn doch wird das Kennwort verglichen.

Ich würde empfehlen, Kennwörter NIE im Klartext zu speichern.

Ich habe mir deinen Quelltext jetzt nicht genau angesehen, möchte aber auf jeden Fall empfehlen, eine Menge zum Thema Sicherheit zu lesen und zu prüfen, ob du alles berücksichtigst. Es kann nicht schaden, selbst wenn du feststellst, dass schon jetzt alles bestens ist. :wink:

Leider hab ich grad nicht viel Zeit, deshalb ist es nicht getestet.

Viele Grüße,

Lars

wie wäre es wenn du die userinformationen zb md5 verschlüsselt in einer db lagerst, und du dann dort nur noch die db abfragen musst?.. dann brauchst du htacces nicht… zumal es bei mehreren usern sicherlich auch andere vorteile bringt

Hallo,

du musst nicht an eine neue Datei weiterleiten, wenn du nicht willst.
Üblicherweise verwendet man Datenbanken, wenn man mehrere Benutzer zu verwalten hat. Alternativ könntest du wie bisher die verschiedenen Benutzerkennungen in den PHP-Code schreiben, was aber nur Sinn macht, solange es sich um eine überschaubare Menge handelt.
Dafür brauchst du dann entweder geschachtelte if-Schleifen oder du verwendest eine switch-case Anweisung.

Hatte mein Vorschlag zur Weiterleitung mit der fancybox eigentlich funktioniert?

Gruß Zorki

Tut mir leid, aber da kann ich nicht helfen.

AJM

Hallo,

dafür muss die „Benutzerverwaltung“ z.B. in eine Datenbank ausgelagert werden.

Hintergrund meines Anliegens ist, dass ich per Mail darüber
informiert werden möchte, wenn sich jemand einloggt. Das
funktioniert soweit auch ganz gut. Die IP und der Benutzername
des „Visitors“ werden mir auch per Mail geschickt, wenn der
Login erfolgreich war. Jetzt würde ich aber gerne verschiedene

Ich frag jetzt nicht warum das sinnvoll sein soll…

// security.php

In deiner security.php steht die Zeile

[…Beginn Auszug…]
// Benutzername und Passwort werden überprüft
if ($user == ‚benutzername1‘ && $pass == ‚passwort1‘) {
$_SESSION[‚angemeldet‘] = true;
[…Ende Auszug…]

Das musst Du ändern in:

[…Beginn Auszug…]
// Benutzername und Passwort werden überprüft
if (($user == ‚benutzername1‘ && $pass == ‚passwort1‘)
OR ($user == ‚benutzername2‘ && $pass == ‚passwort2‘)
OR ($user == ‚benutzername3‘ && $pass == ‚passwort3‘)){
$_SESSION[‚angemeldet‘] = true;
[…Ende Auszug…]

Bei mehr Usern dann eben mehr „OR“-Bedingungen. Das ist aber eine *sehr* rudimentäre Benutzerverwaltung. So ab 10 Benutzern wirds unübersichtlich, blöd und langsam. Da müsste man sich dann was anderes überlegen, z.B. htaccess/htpasswd, gesondertes Txtfile mit Benutzer-Passwort-Kombinationen das über „ReadFile“ durhcgegangen wird, eine (mySQL-)Datenbank die hier angezapft wird…

Das ist aber alles nichts einfaches.

Viele Grüße,
Markus

Hallo 1mann1wort,

wenn du bei der Version mit dem Nutzername und Passwort in der Datei bleiben Möchtest hinterlege die Nutzer und Passwörter in einem Array und durchsuche dieses.
In deiner security.php

$nutzer =\> array(array("Nutzername1", "Passwort1"),
 array("Nutzername2", "Passwort2"),
 .... 
 )


// Benutzername und Passwort werden überprüft
in\_array (array ( $user , $pass ), $nutzer ) 
{ 
 $\_SESSION['angemeldet'] = true; 

Cu Stefan

PS: „Bedenke aber das dein Login einige Sicherheitsmängel aufweist.“