Autor |
Nachricht |
Superman
Threadersteller
Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht:
|
Verfasst Di 22.11.2005 19:36
Titel Sicherheitsabfrage vorm Löschen |
|
|
Hi.
Ich les mir grad so ein Anfängerbuch von PHP durch, da gehts u.A. um eine Beispieldatenbank mit Witzen.
Da gibts jetzt eine Seite, wo man auswählen kann ob man die Seite editieren oder löschen will... die sieht so aus:
Code: | <?php
$dbcnx = @mysql_connect('localhost', 'root', 'pass');
if (!$dbcnx) {
exit('<p>Verbindungsaufbau zum Datenbankserver ' .
' zurzeit nicht möglich.</p>');
}
if (!@mysql_select_db('Jokes')) {
exit('<p>Auswahl der Witzedatenbank' .
'zurzeit nicht möglich.</p>');
}
$authors = @mysql_query('SELECT ID, Name FROM Authors');
if (!$authors) {
exit('<p>Fehler beim Abruf der Autoren aus der Datenbank!<br />'.
'Error: ' . mysql_error() . '</p>');
}
while ($author = mysql_fetch_array($authors)) {
$id = $author['ID'];
$name = htmlspecialchars($author['Name']);
echo "<li>$name ".
"<a href='editauthor.php?id=$id'>Bearbeiten</a> ".
"<a href='deleteauthor.php?id=$id'>Löschen</a></li>";
}
?> |
Wenn man dann auf Löschen klickt, wird das hier auf der Seite "'deleteauthor.php" ausgeführt:
Code: | <?php
$dbcnx = @mysql_connect('localhost', 'root', 'pass');
if (!$dbcnx) {
exit('<p>Verbindungsaufbau zum Datenbankserver ' .
' zurzeit nicht möglich.</p>>');
}
if (!@mysql_select_db('Jokes')) {
exit('<p>Auswahl der Witzedatenbank' .
'zurzeit nicht möglich.</p>');
}
$id = $_GET['id'];
$ok1 = @mysql_query("DELETE FROM Jokes WHERE AID='$id'");
$ok2 = @mysql_query("DELETE FROM Authors WHERE ID='$id'");
if ($ok1 and $ok2) {
echo '<p>Autor erfolgreich gelöscht!</p>';
} else {
echo '<p>Fehler beim Löschen des Autors aus der
Datenbank!<br />'.'Fehler: ' . mysql_error() . '</p>';
}
?>
<p><a href="authors.php">Zurück zur Liste der Autoren</a></p> |
Nun die Frage:
Wie kann ich eine Sicherheitsabfrage im oben genannten Code einbauen, die per $_SERVER['PHP_SELF'] funktioniert?
Danke.
|
|
|
|
|
darkGFX
Dabei seit: 21.11.2005
Ort: Bayern
Alter: -
Geschlecht:
|
Verfasst Di 22.11.2005 20:32
Titel
|
|
|
Hi also entweder ich habe da etwas ganz falsch verstanden oder einfach so:
Code: |
<?php
$dbcnx = @mysql_connect('localhost', 'root', 'pass');
if (!$dbcnx) {
exit('<p>Verbindungsaufbau zum Datenbankserver ' .
' zurzeit nicht möglich.</p>');
}
if (!@mysql_select_db('Jokes')) {
exit('<p>Auswahl der Witzedatenbank' .
'zurzeit nicht möglich.</p>');
}
$authors = @mysql_query('SELECT ID, Name FROM Authors');
if (!$authors) {
exit('<p>Fehler beim Abruf der Autoren aus der Datenbank!<br />'.
'Error: ' . mysql_error() . '</p>');
}
while ($author = mysql_fetch_array($authors)) {
$id = $author['ID'];
$name = htmlspecialchars($author['Name']);
echo "<li>$name ".
"<a href='editauthor.php?id=$id'>Bearbeiten</a> ".
"<a href='deleteauthor.php?id=$id&action=prf'>Löschen</a></li>";
}
?>
|
deletauthor.php
Code: |
<?php
if( ! $action )
{
echo "Leider keine Aktion gewählt...";
}
if( $action == "prf" )
{
echo "Sind Sie sicher das Sie das blabla löschen wollen?<br><br>";
echo '<a href="deleteauthor.php?id=$id&action=del">Ja</a> :: <a href="authors.php">Nein</a>';
// Oder aber auch
echo '<a href="' .$_SERVER['PHP_SELF']. '?id=$id&action=del">Ja</a> :: <a href="authors.php">Nein</a>';
}
if( $action == "del" && $id != "" )
{
$dbcnx = @mysql_connect('localhost', 'root', 'pass');
if (!$dbcnx) {
exit('<p>Verbindungsaufbau zum Datenbankserver ' . ' zurzeit nicht möglich.</p>>');
}
if (!@mysql_select_db('Jokes')) {
exit('<p>Auswahl der Witzedatenbank' .
'zurzeit nicht möglich.</p>');
}
$id = $_GET['id'];
$ok1 = @mysql_query("DELETE FROM Jokes WHERE AID='$id'");
$ok2 = @mysql_query("DELETE FROM Authors WHERE ID='$id'");
if ($ok1 and $ok2) {
echo '<p>Autor erfolgreich gelöscht!</p>';
} else {
echo '<p>Fehler beim Löschen des Autors aus der
Datenbank!<br />'.'Fehler: ' . mysql_error() . '</p>';
}
}
?>
<p><a href="authors.php">Zurück zur Liste der Autoren</a></p> |
Oben habe ich einfach zu dem "Löschen" link eine action hingesetz die zu einer "Vorseite" führt. Da kann mann dann ja oder nein wählen, bei ja wird der Eintrag gelöscht bei nein geht es zurück zu authors.php
Wirklich simpel aber vielleicht das was du gesucht hast...
Zuletzt bearbeitet von darkGFX am Di 22.11.2005 20:38, insgesamt 3-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
Superman
Threadersteller
Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht:
|
Verfasst Di 22.11.2005 20:49
Titel
|
|
|
Ich versteh wieder nur Bahnhof... Wieso heißt die action "prf" ?
|
|
|
|
|
darkGFX
Dabei seit: 21.11.2005
Ort: Bayern
Alter: -
Geschlecht:
|
Verfasst Di 22.11.2005 21:34
Titel
|
|
|
Hi!
Also das $action ist nur eine Variable die einen Wert speichert, hier "prf". Das habe ich mir angewöhnt, soll eigentlich prüfe bedeuten, aber da ich faul bin nenne ich es einfach "prf". "del" steht zum beispiel für delete. Also eigentlich ganz einfach.
Ich hätte anstatt
$action=prf
auch
$pruefe=true
schreiben können.
Wenn sonst noch etwas mit dem Quellcode unverständlich ist helfe ich gerne... soweit ich beischeid weiss
|
|
|
|
|
Superman
Threadersteller
Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht:
|
Verfasst Di 22.11.2005 23:46
Titel
|
|
|
Erläutere bitte folgendes genauer:
echo '<a href="deleteauthor.php?id=$id&action=del">Ja</a> :: <a href="authors.php">Nein</a>';
Warum machst du " :: " ?
Und das hier:
if( $action == "del" && $id != "" )
&& ?? und was ist != "" ?
Ist action=del auch von dir erfunden oder ist das bereits irgendwie in PHP drin?
Man bin ich ein Newb !!
|
|
|
|
|
darkGFX
Dabei seit: 21.11.2005
Ort: Bayern
Alter: -
Geschlecht:
|
Verfasst Mi 23.11.2005 00:02
Titel
|
|
|
Also das :: ist nur eine "verschönerung" sieht so aus
Ja :: Nein
finde ich besser als
Ja Nein
If überprüft ob die Variable $action den Wert del enthält, gleichzeitig prüft if auch ob die Variable $id einen Wert hat. Die Variable $id braucht ja einen Wert, damit man den Eintrag aus der MySQL Datenbank löschen kann.
Das && ist der logische and-Operator. Auf deutsch bedeutet das:
Wenn( Aktion gleich "del" ist UND die Variable $id hat einen Wert hat)
{
Dann mach das hier
}
Ja $action=del ist auch meine Erfindung
Darf ich fragen welches Buch du benutzt? Ich habe PHP durch folgendes Buch gelernt.
Markt+Technik, Jetzt lerne ich PHP4.
Naja in deinem Fall wird es dann Jetzt lerne ich PHP5 sein. hehe
|
|
|
|
|
Superman
Threadersteller
Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht:
|
Verfasst Mi 23.11.2005 10:43
Titel
|
|
|
So langsam versteh ichs... hehe...
Also das Buch heißt "PHP und MySQL, Schritt für Schritt zur datenbankgestützten Website, 2. aktualisierte und erweiterte Auflage" von Kevin Yank ( www.sitepoint.com ).
Ich glaub im englischen gibts mitlerweile auch die 3. Auflage davon, naja.
|
|
|
|
|
Superman
Threadersteller
Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht:
|
Verfasst Mi 23.11.2005 19:17
Titel
|
|
|
Es geht leider nicht...
Der Code ist nun wie folgt:
<?php
if (!$action) {
echo '<p>Keine Aktion gewählt.</p>';
}
if ($action == 'check') {
echo '<a href="' .$_SERVER['PHP_SELF']. '?id=$id&action=del">Ja</a> | <a href="authors.php">Nein</a>';
}
if ($action == 'del' and '$id' != '') {
$dbcnx = @mysql_connect('localhost', 'root', '***');
if (!$dbcnx) {
exit('<p>Verbindung zum Datenbankserver ' .
'momentan nicht möglich</p>');
}
if (!@mysql_select_db('db01')) {
exit('<p>Auswahl der Witzedatenbank' .
' zurzeit nicht möglich.</p>');
}
$id = $_GET['id'];
$ok1 = @mysql_query("DELETE FROM Jokes WHERE AID='$id'");
$ok2 = @mysql_query("DELETE FROM Authors WHERE ID='$id'");
if ($ok1 and $ok2) {
echo '<p>Autor erfolgreich gelöscht!</p>';
} else {
echo '<p>Fehler beim Löschen des Autors aus der Datenbank!<br />'.
'Fehler: ' . mysql_error() . '</p>';
}
}
?>
Er durchläuft alles gut, doch leider wirkt sich das Klicken aufs "Ja" nicht auf die Datenbank aus, obwohl die Meldung kommt "Autor erfolgreich gelöscht!" !
|
|
|
|
|
|
|
|
Ähnliche Themen |
[Script] für Gewinnspiel mit Sicherheitsabfrage
Sicherheitsabfrage bei Klick außerhalb der eingebetteten swf
Brett vorm Kopf: MySQL-Problem
[brett vorm kopf] horizontale scrollleiste entfernen?!
- bitte löschen -
- bitte löschen -
|
|