Datenbank-insert bei aktualisieren bzw. Browser-Rückwärtsnavigieren unterbinden ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbank-insert bei aktualisieren bzw. Browser-Rückwärtsnavigieren unterbinden ?

    Hallo,

    ich habe mal wieder ein Problem!

    Ich habe ein DB-Insert auf einer bestimmten Stelle (Seite). Wenn ich jetzt Aktualisierung der Seite mache oder aus einer nachfolgenden Seite darauf wieder 'navigiere' (also zurück') soll dieses SQL-Statement nicht ausgeführt werden! Wie ich sehe habt ihr hier eine 'ungültige Seite'....
    Wie mache ich auch sowas ?

    Wollte das auch per Suchfunktion suchen, finde es aber komischerweise nicht.....obwohl ich denke das solche Anfragen bestimmt jeden Tag vorkommen....?!?!?

  • #2
    Re: Datenbank-insert bei aktualisieren bzw. Browser-Rückwärtsnavigieren unterbinden ?

    obwohl ich denke das solche Anfragen bestimmt jeden Tag vorkommen....?!?!?
    meinste?

    leite nach dem insert per header() sonstwohin weiter, und fertig.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      seite1.php
      Code:
      <form action="seite2.php" method="post">...</form>
      seite2.php
      PHP-Code:
      <?php
         
      // $_POST verarbeiten, INSERT ausführen

         
      header('Location: http://example.com/seite3.php');
         exit();
      ?>
      seite3.php
      Code:
      <h1>änderungen vorgenommen</h1>

      Kommentar


      • #4
        Ich habe bereits im Header eine Weiterleitung drinnen die verzögert weiterleitet. Die Aktualisierung ist damit also eigentlich auch kein Thema und sollte nur als Beispiel herhalten.
        Meine Sorge ist das der User per 'Zurück'-Button zurücknavigiert auf die Seite mit dem SQL-Statement....habe ich ausprobiert und siehe da, plötzlich habe ich doppelte Datensätze!

        FAZIT: Ein weiterleiten unterbindet die aktualisierung der Seite aber leider nicht das Zurücknavigieren auf diese Seite!

        Hier in diesem Forum wurde es irgendwie anderst gelöst....wenn ich zurücknavigiere kommt: Seite nicht mehr gültig (oder so ähnlich)...und das will ich auch haben...wenns geht.

        Kommentar


        • #5
          verzögert? mittels meta-tag? hat derHund oder ich etwas von meta-tags gesagt?

          Kommentar


          • #6
            Original geschrieben von penizillin
            verzögert? mittels meta-tag? hat derHund oder ich etwas von meta-tags gesagt?
            Das ist der kleine, aber feine Unterschied...


            Mittels meta-tag wird die Seite in den Cache des Browsers geladen, bei Weiterleitung mittles header() merkt der Browser nichts davon - folglich kannst du auch nich zurück auf "diese" Seite gehen



            Gruß,
            fox34

            Kommentar


            • #7
              Für "Zurück"
              könnte folgendes (auch mit meta) funktionieren

              PHP-Code:
              <a href="#" onClick="javascript:history.back(1)">Zurück</a

              Edit:
              javascript zusammenschreiben, irgendwie wird es im PHP-Tag automatisch auseinander geschrieben ...
              Literaturreport

              Kommentar


              • #8
                klar. und dann drücke ich einfach am browser den forward-button oder verwende gar nicht den link im body der seite, sondern verwende den back-button des browsers.

                wie willst du das mit deinem snippet verhindern?
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  fox34:

                  um genau zu sein:

                  1. wird mittels meta-tag (refresh) nichts ge-cache-t.
                  2. natürlich merkt der browser eine umleitung - wie würde er sonst wissen, dass es umgeleitet wurde?

                  Kommentar


                  • #10
                    Aso, hab das nicht geblickt gehabt! (kein wunder, mein Nick sagt ja schon alles...)

                    Also darf ich auf der folgeseite, die die Daten verarbeitet und hochlädt keine Ausgabe erfolgen! d.h. darf ich nicht mein 'Grundgerüst' verwenden da dieser erst alles drumherum (navigation, Balken, usw.) ausgibt und erst dann das Wesentliche (Hauptfenster)...

                    Hmm, könnte ich ja mittels Variable übergeben und bei JEDEM Aufruf der Seite abfragen ob diese gestzt wurde.....
                    Falls ja eben diesen Header reinschreiben....

                    Ok, ich versuchs!



                    P.S. ich entschuldige mich jetzt mal wirklich für meine nervenden Fragen, aber bis vor 3 Monaten habe ich sozusagen kein Plan von HTML und PHP gehabt und nun habe ich ein Portal auf die Beine gestellt das auch zufriedenstellend läuft! Sogar HTML 4.01 Validiert und CSS-validiert.....

                    Dank meinen Vorkenntnissen in VB, C, selfPHP, selfHTML und EUCH!
                    Wenn ich mal reich bin werde ich euch allen eine halbe Flasche Bier spendieren.....

                    Kommentar


                    • #11
                      Ähm, einige technische Probleme hab ich da....

                      Kann man das mit dem Header auch so lösen das ich NACH DEM Header(..) und vor dem exit() meinen zu verarbeitenden Code setzte ?

                      Kommentar


                      • #12
                        versuchs mit output buffering.

                        Kommentar


                        • #13
                          Nach einigem hin und her habe ich es soweit gebracht das es einigermaßen läuft....

                          Jetzt habe ich aber ein zimelich unerwartetes Problem!

                          Sobald ich exit(); benutze kommen am unteren Ende meiner Seite Zeichen die es dort eigentlich nicht geben sollte!

                          z.B.

                          \n"; echo "
                          \n"; echo "
                          \n"; echo "
                          \n"; echo "

                          dann mal was anderes usw....


                          Was hat es auf sich mit diesem exit() das er sowas produziert ?

                          Kommentar


                          • #14
                            Hmm, ich glaube ob_clean(); hat das Problem gelöst.......
                            Mal sehen ob es dennoch wieder auftritt......bisher scheint es das aber gewesen sein....

                            Kommentar


                            • #15
                              Original geschrieben von penizillin
                              fox34:

                              um genau zu sein:

                              1. wird mittels meta-tag (refresh) nichts ge-cache-t.
                              2. natürlich merkt der browser eine umleitung - wie würde er sonst wissen, dass es umgeleitet wurde?
                              2. Aber er läd die andere Seite nicht (zuerst)



                              Gruß

                              Kommentar

                              Lädt...
                              X