Voraussetzung ist, das man die ID des zu löschenden Eintrages kennt.
$statement = $pdo->prepare("DELETE FROM feinstaub WHERE id = ?"); $statement->execute(array($id)); if ($statement->execute()) { echo "Der DB-Eintrag wurde erfolgreich gelöscht!"; } else { echo "Bitte den Administrator informieren!"; }Reload einer PHP Seite verhindern
-
Ihr kennt vielleicht das Problem, ihr habt Euer erstes kleines Projekt geschrieben. Ihr speichert was usw.
Auf einmal fällt Euch auf, ihr könnt die Seite reloaden und der Eintrag in der DB wird nochmal geschrieben. Ähnliches könnte passieren, wenn man die Seite von extern aufruft, jemand hat sich den Link gespeichert usw. Nicht schön....
Beispiel
Seite 1 test.php
<?php session_start(); $_SESSION['reload'] = time(); echo $_SESSION['reload']; ?> <form id="absenden" method="post" action="test2.php"> <input type="submit" class="btn btn-success btn-lg" value="Absenden"> <input type="hidden" name="foo" value= "<?php echo $_SESSION['reload'] ?>" /> </form>
Was machen wir hier? Wir eröffnen eine Session
session_start();
Darin erzeugen wir eine Session Variable und geben diese zu Kontrollzwecken aus.
$_SESSION['reload'] = time(); echo $_SESSION['reload'];
Die Variable $_SESSION['reload'] wird mit der aktuelle Zeit time() gefüllt. Danach zu Testzwecken ausgegeben.
Danach erzeugen wir mit HTML einen Absenden Button.Wenn wir nun diese Seite aufrufen, wird die Session-Variable mit der aktuellen Zeit gefüllt. Es ist eigentlich egal, was da drin steht, es könnte auch irgendeine Zufallszahl sein. Wenn wir nun auf den Absenden Button klicken, gelangen wir zur 2. Seite.
Seite 2 test2.php
<?php session_start(); if(!isset($_SESSION['reload'])) { die('Bitte nicht direkt aufrufen!'); } $reload = htmlspecialchars($_SESSION['reload']); echo $reload; unset($_SESSION['reload']); ?>
Wir eröffnen wieder eine Session, damit können wir nun auf die Session Variable zugreifen.
Mit
if(!isset($_SESSION['reload'])) { die('Bitte nicht direkt aufrufen!'); }
überprüfen wir jetzt, ob die Variable bei Aufruf der Seite gefüllt ist. Das geschieht mit dem Befehl isset Wenn sie gefüllt ist, wird nach den {} Klammern weiter gemacht. Ist sie nicht gefüllt, wird der Text
Bitte nicht direkt aufrufen!
ausgegeben. Diese beiden Befehle dienen nur der Kontrolle!
$reload = htmlspecialchars($_SESSION['reload']); echo $reload;
Jetzt das Wichtigste. Mit
unset($_SESSION['reload']);
wird die Session Variable, direkt nach der Überprüfung gelöscht. Wenn wir nun die Seite reloaden (F5) oder ähnliches, ist die Variable leer und wir bekommen keinen Zugang auf die Funktionen der Seite!
Fertig!
-
-
-
-
-
Wichtige Info
Angeheftet PHP -
-
-