Antworten auf deine Fragen:
Neues Thema erstellen

Login - Name soll bestehen bleiben ??

hdd_1

Noch nicht viel geschrieben

Hallo
Was mache ich Falsch, kann mir jemand einen Beispiel zeigen?

Der Name sollte im Input Feld bestehen bleibt, auch wenn das Anmelden mit Passwort fehlschlägt.


PHP:
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" >

  
    Name: <input type="text" name="benutzer" value="<?php echo htmlspecialchars ($benutzer); ?>" /><br />
    Kennwort: <input type="password" name="kennwort" /><br />
   
    <input type="submit" name="sub" value="Login" />
</form>

PHP:
$benutzer = $_POST["benutzer"];


Danke....
 

Du zeigst zu wenig vom Code. Wenn du, wie es jetzt aussieht, erst nach dem Formular $benutzer setzt, geht das natürlich nicht.
Ansonsten lass dir den Inhalt von $_POST anzeigen, dann siehst du ob es überhaupt gefüllt ist.


Duddle
 
So würde das gehen:
PHP:
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" >
    <?php $benutzer = $_POST["benutzer"]; ?>
    Name: <input type="text" name="benutzer" value="<?php echo htmlspecialchars ($benutzer); ?>" /><br />
    Kennwort: <input type="password" name="kennwort" /><br />
    <input type="submit" name="sub" value="Login" />
</form>
Ist aber kein guter Programmierstil, weil die POST-Variable beim ersten Durchlauf nicht gesetzt ist bzw. das Feld auch leer sein könnte. Besser wäre daher:
PHP:
<?php
    if(isset($_POST['benutzer'])) $benutzer = $_POST['benutzer'];
?>
 
Hallo


Ich bekomme trotzdem noch folgenden Fehler: @jimny1999

Code:
<br /><b>Notice</b>:  Undefined variable: benutzer in <b>/*****/Web/localhost_1/loginskript/login.php</b> on line <b>26</b><br />

Line 26: wäre
PHP:
Benutzername: <input type="text" name="benutzer" value="<?php echo htmlspecialchars ($benutzer); ?>" /><br />
Aber sobald ich einmal falsche Benutzername & Password eingebe, verschwindet der Fehler und der Benutzername bleibt im Input Feld.



Hier meine ganze Code @Duddle
PHP:
<?php
session_start();

//Validierung.....

if (isset($_POST["senden"])) {
    if ($_POST["benutzer"] == "hdd" && $_POST["passwort"] == "test123") {
        $_SESSION["benutzer"] = "hdd";
        header("Location:php/web5.php");   
         exit();   
   
     } else {
        echo "<p style='color:red'>Die Angaben sind falsch..</p>";
    }

$benutzer = $_POST["benutzer"];
}

?>
<html>
<head><title>Login</title>
</head>
<body>
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" >

    Benutzername: <input type="text" name="benutzer" value="<?php echo htmlspecialchars ($benutzer); ?>" /><br />
    Passwort: <input type="password" name="passwort" /><br />

    <input type="submit" name="senden" value="Login" />
</form>

</body>
</html>
 
Zuletzt bearbeitet:
Die Variable $benutzer wird bei deinem Code erst definiert, wenn das Formular abgeschickt wurde. Beim ersten Aufruf der Seite ist sie noch nicht definiert, weshalb diese Meldung auftaucht.
Folgendes behebt dein Problem:
PHP:
$benutzer = isset($_POST["benutzer"]) ? $_POST["benutzer"] : '';
if(isset($_POST["senden"])){
...
}
 
@holdudiladio ja so funktioniert es, aber ich kann mich nur einmal einloggen, wenn ich dann wieder mich einloggen will es steht "Die Angaben sind falsch.." und ich werde nicht
weitergeleitet.

Wenn ich deine Code Auskommentiere, dann kann ich mich wieder mehrmals einloggen ohne Einschränkungen.
 
Ändere folgendes:
1. Lass die Ternäroperation von holdudiladio weg. Weil durch diese Codezeile die Variable $benutzer mit einem Leerzeichen belegt wird, falls $_POST["benutzer"] nicht definiert ist, funktioniert das nur beim ersten Mal.
2. Ändere die PHP-Anweisung in Deinem Formular wie folgt:
PHP:
Benutzername: <input type="text" name="benutzer" value="<?php if (isset($benutzer)) echo htmlspecialchars ($benutzer); ?>" /><br />
 
Zuletzt bearbeitet:
Die Ausgabe "Die Angaben sind falsch" erscheint genau dann, wenn "senden" im $_POST existiert und entweder "benutzer" oder "passwort" oder beides nicht korrekt in $_POST gesetzt ist. Die Zeile von holdudiladio ändert an dieser Logik nichts.

Entweder beschreibst du die Umstände also nicht ausreichend (z.B. gibt es einen Zwischenschritt, irgendeine Ausloggen-Logik) oder der Code sieht mittlerweile anders aus.


Duddle
 
@jimny1999 wow,,, jetzt funktioniert es tatsächlich. Danke.

@Duddle der Code sieht immer noch gleich aus, wie im Post #4 :-) Danke.


@alle User.. Danke für die Antworten :)

P.S: Was ich noch gerne mache würde, eine Art Timeout dh. nach 5 oder 10 Minuten sollte automatisch ausgeloggt (Session zerstört?) werden, wenn der User nicht aktiv ist.

Leider gibt es wenig bis keine Tutorials dafür. ... kann mir jemand da helfen, wie muss ich vorgehen?

Danke:)
 
Du prüfst bei jedem Seitenaufruf, wann die letzte Aktivität des Nutzers war. Das kannst du in einer Datenbank, in der Session, usw. speichern. Ist diese Zeitspanne zu groß löst du den Logout aus. Ansonsten setzt du den Wert auf die jetzige Zeit.


Duddle
 
Als Anregung würde ich dir folgende Seite empfehlen:

Die Orginalseite ist zwar nicht mehr verfügbar, aber über das Archiv dennoch abrufbar.
Der Timeout wird im Profi-Loginsystem behandelt, setzt aber einige PHP-Kenntnisse voraus.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.989
Beiträge
1.540.244
Mitglieder
68.193
Neuestes Mitglied
AlfredoZ
Oben