Antworten auf deine Fragen:
Neues Thema erstellen

Bei Aktualisieren erneutes Senden der Daten an SQL Datenbank verhindern.

T

tai

Guest

Hallo! Ich versuche mich gerade an einem Newsscript und habe dabei ein Problem. Eigentlich funktioniert ja alles sehr gut, genau so wie ich es mir vorstelle. Nur sobald ich einen Eintrag absende, dieser erfolgreich in die Datenbank gespeichert wird und ich dann auf Aktualisieren klicke, habe ich den unschönen Effekt das der Eintrag nochmal gespeichert wird. Nun meine Frage, wie kann ich das verhindern? Wie wird das im allgemeinem gemacht?

Hier noch mein Code:

PHP:
<?php
    session_start();

    if (!isset($_SESSION['ok']) || $_SESSION['ok'] !== true) {
        header('Location: start.php');
    }

    session_regenerate_id($delete_old_session = true);

    $key = mysql_connect("", "", "") or die ("Keine Verbindung möglich");

    mysql_select_db("");

    if (isset($_POST['absenden'])) {
        //stripslashes wegen eingeschalteten Magic Quotes.
        if (isset($_POST['name']) && !is_array($_POST['name']) && $_POST['name'] != '') {
            $name = htmlspecialchars(stripslashes($_POST['name']));
        }
        if (isset($_POST['titel']) && !is_array($_POST['titel']) && $_POST['titel'] != '') {
            $titel = htmlspecialchars(stripslashes($_POST['titel']));
        }
        if (isset($_POST['intern']) && !is_array($_POST['intern']) && $_POST['intern'] != '') {
            $intern = htmlspecialchars(stripslashes($_POST['intern']));
            if ($intern == 'nein') {
                $intern = '0';
            } else {
                $intern = '1';
            }
        }
        if (isset($_POST['nachricht']) && !is_array($_POST['nachricht']) && $_POST['nachricht'] != '') {
            $nachricht = nl2br(htmlspecialchars(stripslashes($_POST['nachricht']), ENT_QUOTES));
        }

        $datumsql = date('d.m.Y');
        $namesql = mysql_real_escape_string($name);
        $titelsql = mysql_real_escape_string($titel);
        $nachrichtsql = mysql_real_escape_string($nachricht);

                $sql = "INSERT INTO news
                       (intern, datum, name, ueberschrift, nachricht)
                       VALUES
                       ('$intern', '$datumsql', '$namesql', '$titelsql', '$nachrichtsql')";

                        $daten_schreiben = mysql_query($sql);

                        if ($daten_schreiben) {
                            echo 'Daten wurden geschrieben';
                            }
    }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
    <title>News schreiben</title>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />

    <link href="style.css" type="text/css" rel="stylesheet" />
    <link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
</head>

<body>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">

     <input type="text" name="name" value="Ihr Name" /><br />
     <input type="text" name="titel" value="Titel" /><br />
     <input type="radio" name="intern" value="nein" checked="checked" /> &Ouml;ffentlich
     <input type="radio" name="intern" value="ja" /> Intern<br />
     <textarea name="nachricht">Ihre Nachricht...</textarea><br />
     <input type="submit" name="absenden" value="Absenden" />

     </form>
</body>
</html>

Und wenn ich schon dabei bin, wie setze ich am besten eine Kommentar Funktion um? So das zu jedem News-Eintrag Kommentare abgegeben werden können. An was meine Ideen hier scheitern ist die Zuordnung der Kommentare zum Richtigen News-Eintrag.

Danke!
 

T

tai

Guest

AW: Bei Aktualisieren erneutes Senden der Daten an SQL Datenbank verhindern.

Sehr nett, danke. Wie schaut es bei dieser Methode dann mit dem "Zurück"-Button aus? Werden dadurch die Daten nicht neu gesendet?
 

jens260181

Schmarotzer

AW: Bei Aktualisieren erneutes Senden der Daten an SQL Datenbank verhindern.

dann mach ne session. wenn z.b. $_SESSION['sql'] == 1 ist, dann schreibe nix in die datenbank
 
T

tai

Guest

AW: Bei Aktualisieren erneutes Senden der Daten an SQL Datenbank verhindern.

Wenn ich eine weitere Session anlegen, sagen wir wie bei deinem Beispiel [sql], hat diese dann die gleiche Session-ID wie die Session [ok](siehe mein Code ganz oben)? $_SESSION ist sozusagen ein Assoziatives Array? Aber wie soll ich das dann lösen wenn jemand zwei Newseinträge hintereinander schreiben will?:)
 

jens260181

Schmarotzer

AW: Bei Aktualisieren erneutes Senden der Daten an SQL Datenbank verhindern.

beispiel: 1 news mit reloadsperre

1. news absenden
2. prüfe ob session['blabla'] == 1 ist
2.1 wenn ja, breche ab
2.2 wenn nein, speichere
2.2.1 nach dem speichern session['blabla'] = 1 setzen

was auch möglich wäre, es gibt eine headline. richtig? sagen wir ja, kann auch was anderes sein, was i.dR. einmal vorkommt.

beispiel headline. nach dem absenden prüfen, ob session['blabla'] == md5('POST[headline']) ist. wenn ja, breche ab, ansponsten speichere die news und setze session['blabla'] = md5('POST[headline'])

so vergleichst du den md5-hashwert. stimmt er überein, wurde die news schon geschrieben, wenn nicht, darf gespeichert werden.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben