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....
 

Duddle

Posting-Frequenz: 14µHz

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
 

jimny1999

Nicht mehr ganz neu hier

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'];
?>
 

hdd_1

Noch nicht viel geschrieben

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:

holdudiladio

Noch nicht viel geschrieben

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"])){
...
}
 

hdd_1

Noch nicht viel geschrieben

@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.
 

jimny1999

Nicht mehr ganz neu hier

Ä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:

Duddle

Posting-Frequenz: 14µHz

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
 

hdd_1

Noch nicht viel geschrieben

@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:)
 

Duddle

Posting-Frequenz: 14µHz

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
 
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

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben