mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 17:07 Benutzername: Passwort: Auto-Login

Thema: Sicherheitsabfrage vorm Löschen vom 22.11.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Sicherheitsabfrage vorm Löschen
Seite: 1, 2, 3  Weiter
Autor Nachricht
Superman
Threadersteller

Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht: Männlich
Verfasst Di 22.11.2005 19:36
Titel

Sicherheitsabfrage vorm Löschen

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
darkGFX

Dabei seit: 21.11.2005
Ort: Bayern
Alter: -
Geschlecht: Männlich
Verfasst Di 22.11.2005 20:32
Titel

Antworten mit Zitat Zum Seitenanfang

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 Lächel

Wirklich simpel aber vielleicht das was du gesucht hast...


Zuletzt bearbeitet von darkGFX am Di 22.11.2005 20:38, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Superman
Threadersteller

Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht: Männlich
Verfasst Di 22.11.2005 20:49
Titel

Antworten mit Zitat Zum Seitenanfang

Ich versteh wieder nur Bahnhof... Wieso heißt die action "prf" ?
  View user's profile Private Nachricht senden
darkGFX

Dabei seit: 21.11.2005
Ort: Bayern
Alter: -
Geschlecht: Männlich
Verfasst Di 22.11.2005 21:34
Titel

Antworten mit Zitat Zum Seitenanfang

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 *zwinker*
  View user's profile Private Nachricht senden
Superman
Threadersteller

Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht: Männlich
Verfasst Di 22.11.2005 23:46
Titel

Antworten mit Zitat Zum Seitenanfang

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 !!
  View user's profile Private Nachricht senden
darkGFX

Dabei seit: 21.11.2005
Ort: Bayern
Alter: -
Geschlecht: Männlich
Verfasst Mi 23.11.2005 00:02
Titel

Antworten mit Zitat Zum Seitenanfang

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 Lächel

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
  View user's profile Private Nachricht senden
Superman
Threadersteller

Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht: Männlich
Verfasst Mi 23.11.2005 10:43
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
Superman
Threadersteller

Dabei seit: 13.10.2005
Ort: Erde
Alter: -
Geschlecht: Männlich
Verfasst Mi 23.11.2005 19:17
Titel

Antworten mit Zitat Zum Seitenanfang

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

Au weia!
  View user's profile Private Nachricht senden
 
Ä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 -
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.