Iexplorer Funktionen

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

  • Iexplorer Funktionen

    Hallo,

    Eine kurze Frage:

    Kann man den Refresh Button(und Back Button) des IE irgendwie mittels php deaktivieren.

    Also wenn jemand mit refresh ein script neu anfordert, dass man dann z.B mit einer if-Anweisung darauf reagieren kann.

    ka ob das überhaupt möglich ist.

    Danke für Antworten.

    In meinem Script werden nämlich verschiedene SESSION Vars gesetzt etc.
    Drückt man nun refresh, dann wird das script ja erneut durchlaufen und die
    Vars existieren dann schon. Das führt bei mir zu Problemen

  • #2
    Autsch,

    [ x ] Du möchtest dich bitte über SERVERSEITIGE Scriptsprachen informieren.

    In meinem Script werden nämlich verschiedene SESSION Vars gesetzt etc.
    Drückt man nun refresh, dann wird das script ja erneut durchlaufen und die
    Vars existieren dann schon. Das führt bei mir zu Problemen
    Dann hast du offensichtlich unsauber programmiert.

    Du kannst per header auf eine andere Seite weiterleiten. Somit fällt ein Reload weg.

    Außerdem sollte ein überschreiben der Sessionvars wohl kein Problem darstellen. Falls das nicht erwünscht ist, lässt es sich wohl auch ohne Probleme verhindern.
    Zuletzt geändert von TobiaZ; 17.08.2005, 08:49.

    Kommentar


    • #3
      Da mit dem serverseitigem Zeugs ist mir soweit schon klar.

      dacht nur mann kann das ganze so irgendwie lösen:
      (Also ähnlich wie man Buttons in einem Formular absendet.

      if (der Button refresh gedrückt wurde)
      {
      echo "hallo";
      }

      Na ja. Wohl Pech gehabt

      Kommentar


      • #4
        Wie gesagt, PHP ist serverseitig. Der Refresh- und Zurückbutton läuft aber ausschließlich beim Klient ab.

        Kommentar


        • #5
          tobiaz hat zweifellos recht. dein problem lässt sich jedoch lösen - setze beim erste aufruf sowas wie $_SESSION['boolFlagAlreadyCalled'] = true; und überprüfe bei jedem aufruf dieser seite dieses flag. ist es nicht der fall, wird mit die() euthanasie geleistet. so wird die seite nur einmal aufgerufen.

          Kommentar


          • #6
            oder die sache mit der weiterleitung. Bsp. stehen zu Hauf im Forum.

            Kommentar


            • #7
              und falls du schon text ausgegeben haben solltest und header(); würde nicht mehr funktionieren, dann gibt es immer noch meta und javascript, die dir beim weiterleiten helfen können...
              [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

              Kommentar


              • #8
                dann gibt es immer noch meta und javascript, die dir beim weiterleiten helfen können...
                Was wiederum Quatsch ist, weil du dann wieder mit dem Zurückbutton arbeiten kannst!

                Kommentar


                • #9
                  du kannst ein zurück mittels javascript:location.replace('neue_datei.html') unterdrücken.

                  is aber ne blöde alternative. wenn du im selfhtml dazu mal nachliest wirst du auch merken warum.
                  Sunshine CMS
                  BannerAdManagement
                  Borlabs - because we make IT easier
                  Formulargenerator [color=red]Neu![/color]
                  Herkunftsstatistik [color=red]Neu![/color]

                  Kommentar


                  • #10
                    @ penizillin

                    (Bezieht sich auf 5ten Eintrag)
                    kann deiner Beschreibung zur Lösung dieses Problems nicht ganz folgen.

                    Mein Formular ist ein sogenanntes Affenformular. Es ruft sich also ständig selber auf. beim Betätigen einer der Buttons.

                    Habe auch noch ein Record auf der Seite, welche verschiedene Datenbanksätze in die Maske einliesst.
                    (einen satz weiter, einen zurück etc, also ein normaler Record)

                    Wenn ich es doch nun so mache wie du gesagt hast, dann kann ich die Seite doch nur genau einmal aufrufen.
                    Jeder weitere Versuch würde zu einem die() führen.

                    Oder hab ich da was falsch verstanden???

                    Kommentar


                    • #11
                      Mein Problem was ich mit dem Refreshbutton habe ist etwas schwer zu beschreiben, aber ich versuche es einmal:

                      Ich vergleiche die Werte aus meinem Sql-Statement mit den Werten der Eingabefelder derr Maske. Gibt es da Unterschiede, dann hat der User eine
                      Aenderung vorgenommen.

                      Hat er aber keinen save Button gedrückt, dann will ich ihn darauf hinweisen, den Save vorzunehmen.
                      Diesen Zweck hat das ganze hier.(Will es absichlich ganz ohne JS lösen)

                      Folgendermassen hab ich es versucht zu lösen:

                      Ziemlich oben in meinem Script wird ab dem 2ten Aufuf der Seite alle Eingabefelder der Maske in "normale" Vars eingelesen

                      also ca 20 mal so:

                      $var1 = $_POST["eingabefeld1"];

                      (ist relativ überflüssig, aber aus Gründen der Uebersichtlichkeit habe ich das so gelösst.)

                      unten in meinem Script, nach mehreren if Abfragen, schleifen etc wird meine Makse aufgebaut.
                      Hier wird aber noch unterschieden ob änderungen stattgefundenn haben (dann wird die MAske mit den $_POST Werten angezeigt um diese abzuspeichern) oder nicht (dann wird nächter Satz in Makse eingelesen
                      und die ganzen Werte des Statements werden schon im Sessionarray zum vergleich abgelegt. ).

                      Das klappt alles einwandfrei.

                      Drücke ich nun den Refresh, dann hat er noch die $_POST Werte des alten Satzes und hat in dem SessionArray schon den nächsten Satz eingelesen.
                      Somit zeigt er mir dann immer an das sich die Werte geändert haben.

                      Kommentar


                      • #12
                        das die() war auch mehr symbolischer natur. selbstverständlich liegt es an dir, in diesem falle ein entsprechendes handling zu basteln, das auch die existenz des flags entsprechend kontrolliert.

                        Kommentar


                        • #13
                          Vieleicht habe ich mich etwas missverständlich ausgedrückt.
                          Aber ich glaube du hast mich fasch verstanden.

                          Wenn ich beim ersten Aufruf so eine Var setzte, und dann prüfe ob sie existiert, dann funzt das doch immer(die Var wird nicht mehr gelöscht) oder nur genau einmal(wenn ich sie unsete).

                          Wie will ich aber mit dieser Var nun auf einen Refresh reagieren?!?

                          Ich hatte diesen Gedankenfunzt aber auch nicht)

                          an der Stelle wo die Maske aufgebaut wird prüfe ich, ob es die Sessionvar
                          nicht gibt. Gibt es sie nicht, dann soll er ganz normal voranschreiten. am ende wird in dieser if-Anweisung die die Sessionvar gebildet.

                          Nun habe ich in jedem Button teil
                          also in:

                          if (isset($_POST["vor"]))
                          {
                          ...
                          unset(Sessionvar);

                          ...
                          }

                          eingebaut.somit dürfte er nur wenn ich auf die Buttons drücke die Maske aufbauen, da die var ja nur hier unseted wird.
                          Jedoch funktioniert dieser Ansatz nicht wirklich.

                          Kommentar


                          • #14
                            Jedoch funktioniert dieser Ansatz nicht wirklich.
                            ist keine vernünftige beschreibung.

                            PHP-Code:
                            wenn(submit)
                            {
                              
                            // daten verarbeiten wie immer
                            }

                            wenn(flag && !submit)
                            {
                              
                            // es gab ein refresh. keine daten verarbeiten

                            wo du das flag setzst und löschst, ist deine sache.

                            Kommentar


                            • #15
                              Das ganze funzt so meiner Meinung nach nicht.

                              ob der submitbutton gedrückt wurde prüfe ich doch mit

                              if(isset($_POST["submit"])

                              (nur mal so nebenbei)



                              Angenommen ich rufe mein script auf. Drücke dann den vorwärtsbutton des Formulars, sodass der nächste Datensatz in die Maske eingelesen wird.

                              Dann ist beim nächsten Aufruf der Seite(erfolgt ja unmittelbar im Anschluss an das Drücken des Buttons, da das Script ja auf sich selber verweisst)der Button im $_POST array vorhanden.

                              Drücke ich nun Refresh, ändert sich an diesem Sachverhalt nichts!!!

                              Also kann ich doch nicht so abfragen

                              wenn(flag && !submit)

                              Da er ja nach dem Refresh immer noch gesetzt ist.
                              (Also Button ist dann immer noch im $_POST Array

                              Kommentar

                              Lädt...
                              X