• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

1 Loginscript für mehrere Scripts -> wie am besten?

aJunkie

Mitglied
Hallo,

in letzter Zeit habe ich einige Loginscripts für jeweils ein Script geschrieben zwecks Lerneffekt, wenn ich es mal wiederhole.

Jetzt habe ich ein paar Scripts fertig und wollte nun eigentlich nur noch ein Loginscript haben, um statt 5 Scripts zu verbessern, erweitern, verändern.

Meine grundlegenden Fragen:
Nur ich soll mich einloggen können. Kein SQL. Nur PHP.
1.) Ich würde den Loginscript in einen Ordner packen und überall da, wo ein Login reinsoll, den Loginscript dann includen.
Spricht hier schonmal was dagegen?

2.) Reicht zum Beispiel folgendes zwecks Sicherheit?

PHP:
<?php
if(isset($_POST['user']) && isset($_POST['passwort'])) {
    if($_POST['user'] == $user && $_POST['passwort'] == $passwort) {
        $_SESSION['login'] = TRUE;    
        header('Location: index.php');
    }
    
} else {
    header('Location: login.php');
} ?>

So müsste ich mich nur noch einmal einloggen und würde alle Scripts öffnen können.
Diese paar Zeilen da oben würde ich wie gesagt in jeden Script includen.

Ist das überhaupt die "sicherste" und einfachste Methode?

Danke.
 
Es spricht nichts dagegen nur ein Login fr dich zu machen. Das pw kannst du in einer Datei (php oder sonst wo) reinschreiben und es dann damit vergleichen. Was deine Abfrage angeht so wäre ich mir nicht sicher, dass die funktioniert ;)
Denn in deinem Fall müsste immer eine POST Variable mit den Logindaten mitgegeben werden. Dü müsstest zunächst fragen.
Ist $_SESSION['login']. Wenn ja dann ist ok. Ansonsten zum Login weiter leiten.
Und dort kannst du dann fragen: wurde name und pw gesetzt. Wichtig ist, dass du auch überall die session startest ( session_start() )
Wenn du dann noch fragen dazu hast einfach fragen :)
 
Ja, also ich würde in jeder Datei session_start() und die Datei einfügen.

So würde jede Kopfzeile aussehen:
PHP:
session_start();
include('includeordner/login.php');
if($_SESSION['login'] == TRUE) { // obwohl das hier überflüssig wäre? Siehe im ersten Post. Wenn login nicht TRUE wäre, würde ich von vorne rein zur Loginmaske weitergeleitet werden.

// hier der eigentliche Script bzw. Inhalt.

}
 
Ja, also ich würde in jeder Datei session_start() und die Datei einfügen.

So würde jede Kopfzeile aussehen:
PHP:
session_start();
include('includeordner/login.php');
if($_SESSION['login'] == TRUE) { // obwohl das hier überflüssig wäre? Siehe im ersten Post. Wenn login nicht TRUE wäre, würde ich von vorne rein zur Loginmaske weitergeleitet werden.

// hier der eigentliche Script bzw. Inhalt.

}

So sieht es schon besser aus. Und nein es wäre nicht überflüssig. Denn du machst folgendes in deinem ersten Script:
Sind POST.username und POST.password gesetzt?
Ja: Sind die Logindaten richtig?
Ja: Session setzen und weiterleiten
Nein: Zurück zum Login

Das bedeutet folgendes. Wenn keine POST Variablen gesetzt sind wirst du jedes mal zum Loginscreen befördert (selbst wenn du schon eingeloggt bist)
Und selbst wenn die POST Variablen da sind, wirst du immer nur zum index weiter geleitet.
Somit ist das erste Script nur gut für den Login Vorgang selbst. Aber nicht zum prüfen, ob man eingentlich eingeloggt ist. Dafür hast du die Session variable.
Hoffe dass ist einigermaßen klar :)
und falls login.php das script aus dem ersten post ist: nehm es raus :P
Ansonsten passt es ;)
 
Danke für deine ausführliche Erklärung.

Aber ich denke, dass das doch so einfacher sein sollte:

PHP:
 <?php
    if($_POST['user'] == $user && $_POST['passwort'] == $passwort) {
        $_SESSION['login'] = TRUE;    
        header('Location: index.php');
    } else {
    header('Location: login.php');
exit;
} ?>
So in der Form. Wenn Login fehlgeschlagen, dann exit;.
So müsste ich nicht in jeden Script nach dem include noch immer prüfen, ob $_SESSION == TRUE ist.

Ich würde den "Script" da oben natürlich ausbauen. Geht nur darum, dass ich statt zu iffen, exit; könnte.
 
Danke für deine ausführliche Erklärung.

Aber ich denke, dass das doch so einfacher sein sollte:

PHP:
 <?php
    if($_POST['user'] == $user && $_POST['passwort'] == $passwort) {
        $_SESSION['login'] = TRUE;    
        header('Location: index.php');
    } else {
    header('Location: login.php');
exit;
} ?>
So in der Form. Wenn Login fehlgeschlagen, dann exit;.
So müsste ich nicht in jeden Script nach dem include noch immer prüfen, ob $_SESSION == TRUE ist.

Ich würde den "Script" da oben natürlich ausbauen. Geht nur darum, dass ich statt zu iffen, exit; könnte.

Dieses Script ist nur für die Login funktion gut. Jedoch nicht zur Überprüfung. Les meinen Post bitte nochmal genau durch. Dein Script wird so nicht funktionieren
 
Ja, das ist mir schon bewusst.
Ich werde erst prüfen, ob man schon eingeloggt ist, wenn nicht break;, zur Loginmaske weiterleiten.
Da überprufen, ob alles richtig ist, wenn ja: $_SESSION['login'] == TRUE. Wenn nicht, Fehlermeldung.

Danke dir!
 
Ja, das ist mir schon bewusst.
Ich werde erst prüfen, ob man schon eingeloggt ist, wenn nicht break;, zur Loginmaske weiterleiten.
Da überprufen, ob alles richtig ist, wenn ja: $_SESSION['login'] == TRUE. Wenn nicht, Fehlermeldung.

Danke dir!

Ich weiss immer noch nicht ob du das richtig verstanedn hast. Die Session wird ja in deinem Login Script gesetzt, wenn die Formulareingaben richtig waren.
Und diese Session Variable ist nun so lange erreichbar bis der Browser geschlossen wird. Somit musst du nur einmal $_SESSION['login'] setzen. Und zwar beim Login.
Dann fragst du selbst auf der Login Seite nach.
ist die Session gesetzt? Wenn ja zeige garkein Login an. Also du musst danach nur noch mit der Session Variable arbeiten. Bis du wieder ausgeloggt bist.
 
Zurück
Oben