2017-07-03 9 views
0

Ich habe ein Login-System mit Formular erstellt, die POST-Methode verwenden. Dieser POST sendet Informationen an die login.php, die im Index php enthalten sind. In der login.php, wenn der Benutzername und das Passwort ein paar jQuery Code korrigieren einige Dinge (Menüpunkte hinzufügen) auf der index.php. Mein Problem ist, dass, wenn ich die Seite aktualisieren möchte, der Firefox immer eine Bestätigungsnachricht sendet () Um diese Seite anzuzeigen, muss Firefox Informationen senden, die jede Aktion wiederholen (zB eine Suche oder eine Auftragsbestätigung), die früher ausgeführt wurde.) . Ich habe es rot und ich weiß, dass dieses Problem ist, ich verwende POST-Methode, um Daten zu senden. Einige Leute haben vorgeschlagen, die GET-Methode zu verwenden, obwohl die Nachricht nicht erscheint, die Daten aber nicht gesendet werden. Können Sie eine Lösung vorschlagen (falls es existiert)? Vielen Dank im Voraus für Ihre Hilfe.Wie man Firefox Bestätigungsnachricht vermeidet?

Mein PHP-Code:

$query1 = pg_query($conn, "SELECT * from users WHERE password = '$pswd' and name='$username' "); 


$arr_1 = pg_fetch_all($query1); 


$name_lenght= strlen($arr_1[0][name]); 
$pswd_lenght= strlen($arr_1[0][password]); 

if ($name_lenght > 0 && $pswd_lenght > 0){ 


$_SESSION ['user'] = $_POST['user']; 
$_SESSION ['password'] = $_POST['password']; 


echo "<script> 
$('#manu1').removeClass('hide').addClass('show'); 
$('#manu2').removeClass('hide').addClass('show'); 
$('#manu3').removeClass('hide').addClass('show'); 
</script>"; 
+0

eine einfache Lösung dafür ist die Verwendung einer Übergangsseite und einer Umleitung. Angenommen, die Seite "Login" ist das Ziel Ihres Formulars. 'login' behandelt die Formulardaten, setzt die Benutzersitzung (Cookies oder ähnliches) und leitet sie auf Ihre Seite weiter, nennen wir sie' user'. Dies geschieht, wenn Sie aktualisieren, aktualisieren Sie "Benutzer" und nicht "Login", die nicht verpflichtet war, Daten zu bilden. Der Browser bittet Sie also nicht, es erneut einzureichen. – Kaddath

+0

https://en.wikipedia.org/wiki/Post/Redirect/Get – CBroe

Antwort

0

Das Skript, das das Formular verarbeitet sollte eine Umleitung auf die Seite senden, die angezeigt werden sollen, nachdem Sie angemeldet sind, anstatt die Ausgabe selbst anzeigt. Dadurch wird die neue Seite von der Formularübergabe getrennt, sodass Sie nicht gefragt werden, ob Sie die Formulardaten erneut senden möchten.

$query1 = pg_query($conn, "SELECT * from users WHERE password = '$pswd' and name='$username' "); 
$arr_1 = pg_fetch_all($query1); 
if (!empty($arr_1)) { 
    $_SESSION ['user'] = $_POST['user']; 
    $_SESSION ['password'] = $_POST['password']; 
    header("Location: welcome.php"); 
    exit(); 
} 
+0

Ich habe diesen Code in meine If-Anweisung eingefügt, und obwohl die Nachricht nicht erscheint, sondern die in Die Anweisung die Befehle laufen nicht. Ich habe meinen Beitrag mit dem PHP bearbeitet. Wo sollte ich diesen Code setzen? – bummm26

+0

Es hat geklappt, bevor ich mich angemeldet habe, aber ich habe mich in meine if-Anweisung eingeloggt ('if ($ name_lenght> 0 && $ pswd_lenght> 0)') will nicht ausgeführt werden, also zB die Logout-Schaltfläche erscheint nicht über meine jQuery. – bummm26

+0

Warum testen Sie die Länge? Testen Sie einfach, ob die Abfrage Zeilen zurückgibt, wie in meiner Antwort. – Barmar

Verwandte Themen