2012-04-02 3 views
0

Ich erstelle ein vereinfachtes CMS für ein Schulprojekt und stoße auf Probleme beim Löschen eines Benutzers.Unterschiedliche URL zwischen dem Wert der Schaltfläche "Senden" und der Realität

Auf der Website-Verwaltungsseite, auf die nur über einen Anmeldenamen admin und das zugehörige Kennwort zugegriffen werden kann, wird eine Tabelle mit vorhandenen Benutzern ausgefüllt. In jeder Zeile werden wichtige Statistiken über den Benutzer sowie eine Schaltfläche zum Löschen angezeigt.

Da diese Admin-Seite dieselbe URL ist wie die reguläre Benutzer-Admin-Seite, habe ich die echo-Anweisung verwendet, um die Tabellenelemente nur dann auszugeben, wenn die Anmeldung der Administrator ist. Die Schaltfläche ruft eine Funktion in einem externen Skript über eine GET-Anfrage auf und hängt die Benutzer-ID an die URL an.

Zumindest soll das passieren. Nach Firebug hat das Knopfelement folgende Attribute:

<form id="deleteUser" method="get" action="includes/scripts.php?action=deleteUser&id=18" name="deleteUser"> 
<input type="submit" value="Delete" name="submit"> 

Wenn jedoch auf den Button oben klicken, erhalte ich die URL

http://localhost/TestingLab/admin/includes/scripts.php?submit=Delete 

Was ist das Problem?

Antwort

2

Durch das Senden eines GET-Formulars wird eine vorhandene Abfragezeichenfolge gelöscht.

Verschieben Sie stattdessen die Daten in verborgene Eingänge.

<form id="deleteUser" method="get" action="includes/scripts.php"> 
<input type="hidden" name="action" value="deleteUser"> 
<input type="hidden" name="id" value=18"> 
<input type="submit" value="Delete" name="submit"> 

... aber die Dinge nicht auf die auf einem GET-Request-basierten Server ändern. GET-Requests sollen wiederholbar und sicher sein. Verwenden Sie POST.

+0

Was meinen Sie mit dem Löschen einer vorhandenen Abfragezeichenfolge? – Jason

+0

Wenn Sie in der URL im Aktionsattribut eine Abfragezeichenfolge haben, ist diese beim Senden des Formulars nicht vorhanden. – Quentin

Verwandte Themen