Philipp Grashoff: 2 kleine Beginnerfragen...

Hallo liebes Tageb.. aehh Forum,

Es haben sich mal wieder Fragen aufgetan:
Bei meiner Umfrage will ich per Session verhindern, dass Leute andauernd durch den Zurueckbutton des Browsers erneut Teilnehmen...

Deshalb ohne große Erklärung einfach 2 kurze Fragen:

  • gibt es sowas wie einen onClick-Eventhandler? (eher nicht, oder?)
    -falls nein, gibt es einen Befehl, automatisch eine andere Datei zu laden? (kein HTML-Meta-refresh-tag)

MFG

Philipp

    • gibt es sowas wie einen onClick-Eventhandler? (eher nicht, oder?)

    nicht das ich wüsste... da ist wohl eher Java-Script zuständig...

    -falls nein, gibt es einen Befehl, automatisch eine andere Datei zu laden? (kein HTML-Meta-refresh-tag)

    jep...
    Header("Location: neueseite.php");

    Ist das das, was du wolltest?

    Gruss Michael

    1. HI Michael,

      Header("Location: neueseite.php");

      Ist das das, was du wolltest?

      Perfekt! genau das habe ich gesucht... so, nur noch eine Frage zu beantworten ;)

      MFG

      Philipp

      1. Moin!

        Perfekt! genau das habe ich gesucht... so, nur noch eine Frage zu beantworten ;)

        Nur löst das dein Problem nicht... Man kann weiterhin per Zurück-Taste zurückgehen, egal ob die Seite nun umgeleitet wird oder nicht. :)

        - Sven Rautenberg

  1. Moin!

    Bei meiner Umfrage will ich per Session verhindern, dass Leute andauernd durch den Zurueckbutton des Browsers erneut Teilnehmen...

    Deshalb ohne große Erklärung einfach 2 kurze Fragen:

    • gibt es sowas wie einen onClick-Eventhandler? (eher nicht, oder?)
      -falls nein, gibt es einen Befehl, automatisch eine andere Datei zu laden? (kein HTML-Meta-refresh-tag)

    Du willst sicher nicht verhindern, daß Leute den Zurück-Button benutzen. Dein Ansatzpunkt muß auf dem Server stattfinden: User hinterlassen gewöhnlich ein paar Daten, die sie von anderen Usern unterscheiden: User-Agent und IP-Adresse.

    Für eine simple Umfrage sollte das genügend Unterscheidungsmerkmal sein. Speichere also die IP-Adresse und den User-Agent mit, und vergleiche, ob diese Daten schon einmal aufgetreten sind. Wenn ja, dann wurde wohl nochmal abgestimmt, und du kannst das Ergebnis verwerfen - gerne auch still und leise, dann kommt man nicht so leicht auf den Gedanken, daß da gefiltert wird.

    - Sven Rautenberg

    1. Soll keine Kritik sein an dir, aber...

      Er möchte doch das reloaden per session verhindern... das ist meiner Ansicht nach der bessere Weg als IP und Browser-Typ zu speichern...

      Ich betreibe zum Beispiel eine Seite, bei der die Benutzer fast alle über einen (immer denselben) Proxy kommen und auch alle den gleichen Broser haben... deshalb stehe ich dieser Version mit dem Speichern von IP und Browser ziemlich negativ gegenüber. Im Übrigen ist es viel komplizierter...

      Gruss Michael

      1. Hi Sven, Michael,

        nun, Michael hat Recht.. trotzdem habe ich durch Svens (wie immer) Inhaltsvolle Antwort was dazugelernt...

        Nun habe ich aber ein Problem:
        Ich kann irgendwie keine Session eroeffnen (auch wenn ich grad da Beispiel aus dem PHP tutorial von php.net nehme) , es kommen immer ein paar nette Fehlermeldungen:

        Warning: open(/tmp\sess_093c4d9e1b034c214e2625d7627e5ecd, O_RDWR) failed: m (2) in C:\httpd\HTDOCS\spame\index.php on line 2

        Warning: open(/tmp\sess_093c4d9e1b034c214e2625d7627e5ecd, O_RDWR) failed: m (2) in Unknown on line 0

        Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

        Liegt das an meinem "Serverprogramm" (weiss den richtigen Ausdruck net)? Ich benutze Omnihttpd Pro... hab mal in den Options geschaut, hab aber zu diesem Thema keine Einstellungsmoeglichkeiten gefunden..

        MFG

        Philipp

        1. Moin!

          Warning: open(/tmp\sess_093c4d9e1b034c214e2625d7627e5ecd, O_RDWR) failed: m (2) in C:\httpd\HTDOCS\spame\index.php on line 2

          Die genannte Datei /tmp\sess_irgendwas konnte nicht geöffnet werden. Der Fehler wurde in der Datei c:\httpd\HTDOCS\spame\index.php in Zeile 2 verursacht.

          Warning: open(/tmp\sess_093c4d9e1b034c214e2625d7627e5ecd, O_RDWR) failed: m (2) in Unknown on line 0

          Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

          Das Session-Data-File konnte nicht geschrieben werden. Bitte prüfe, ob die derzeitige Option session.save_path korrekt ist  - anscheinend muß diese Option auf ein existierendes Verzeichnis zeigen, und Windows kennt /tmp nicht als Verzeichnis, das sollte c:\temp oder so heißen.

          Du suchst also die php.ini und guckst, was dort drinsteht.

          - Sven Rautenberg

      2. Soll keine Kritik sein an dir, aber...

        Verstehe ich nicht als solche an mir, sondern an der Lösung. Das ist doch durchaus legitim. :)

        Er möchte doch das reloaden per session verhindern... das ist meiner Ansicht nach der bessere Weg als IP und Browser-Typ zu speichern...

        Klar würde eine Session helfen. Aber in meinen Augen nicht bei einer Umfrageauswertung.

        Sessions sind dafür da, mehrere aufeinander folgende Seiten dem gleichen Benutzer zuzuordnen. Für diesen Zweck sind sie sinnvoll, und es ist dabei ziemlich unerheblich, ob sie nun per Sessioncookie oder durch die URL weitergereicht werden.

        Das einzige, was man mit Sessions und einem schlauen User nicht schaffen kann ist: Ihn sozusagen zu brandmarken, daß er nicht mehr abstimmen darf.

        Sowas funktioniert nur mit eindeutigen Merkmalen, die der User nicht selbst beeinflussen kann. Die IP-Adresse wäre dafür ein Beispiel., die kann er nicht selbst ändern.

        Ich betreibe zum Beispiel eine Seite, bei der die Benutzer fast alle über einen (immer denselben) Proxy kommen und auch alle den gleichen Broser haben... deshalb stehe ich dieser Version mit dem Speichern von IP und Browser ziemlich negativ gegenüber. Im Übrigen ist es viel komplizierter...

        Klar ist es komplizierter. Um nicht zu sagen praktisch unmöglich. Denn solange sich der User nicht durch eine von unabhängiger Seite unterzeichnete digitale Signatur ausweist, dürfte es ziemlich sinnlos sein zu versuchen, Mehrfachvotes wirklich total zu verhindern. Sowas kriegt man nur hin, wenn sich die Abstimmenden beim Server anmelden und damit authentifizieren müssen. Und widerspricht damit dem Gedanken einer unverbindlichen und anonymen Meinungsumfrage.

        Für den Hausgebrauch dürfte meine Methode aber durchaus ausreichen. :) Deine vielleicht auch, solange man irgendwie die Session untrennbar am Browser festtackern kann. Wer Cookies ablehnt, dürfte da schon ein Problem darstellen.

        - Sven Rautenberg

        1. Klar würde eine Session helfen. Aber in meinen Augen nicht bei einer Umfrageauswertung.

          Sessions sind dafür da, mehrere aufeinander folgende Seiten dem gleichen Benutzer zuzuordnen. Für diesen Zweck sind sie sinnvoll, und es ist dabei ziemlich unerheblich, ob sie nun per Sessioncookie oder durch die URL weitergereicht werden.

          genau so kann man auch eine Variable weiterleiten, die besagt, dass der User schon gestimmt hat...

          Das einzige, was man mit Sessions und einem schlauen User nicht schaffen kann ist: Ihn sozusagen zu brandmarken, daß er nicht mehr abstimmen darf.

          Das ist klar... Browser zu und neuen Browser auf und fertig...

          Sowas funktioniert nur mit eindeutigen Merkmalen, die der User nicht selbst beeinflussen kann. Die IP-Adresse wäre dafür ein Beispiel., die kann er nicht selbst ändern.

          Zumindest nicht so schnell wie die Session.

          Für den Hausgebrauch dürfte meine Methode aber durchaus ausreichen. :) Deine vielleicht auch, solange man irgendwie die Session untrennbar am Browser festtackern kann. Wer Cookies ablehnt, dürfte da schon ein Problem darstellen.

          Jep, es ist einfach nur so lange gut, bis der Benutzer den Browser schliesst.

          Es geht beides.... Geschmackssache.

          Gruss Michael

    2. Moin!

      Tag!

      Für eine simple Umfrage sollte das genügend Unterscheidungsmerkmal sein. Speichere also die IP-Adresse...

      Schlechte Idee! Wenn ich von zu Hause aus im Internet Unterwegs bin, habe ich bei jeder Anfrage, die der Browser an den Server sendet eine andere IP- Adresse - keine davon gehört zu meinem Provider...

      1. Moin!

        Schlechte Idee! Wenn ich von zu Hause aus im Internet Unterwegs bin, habe ich bei jeder Anfrage, die der Browser an den Server sendet eine andere IP- Adresse - keine davon gehört zu meinem Provider...

        Was machst du bloß? Anonymizer?

        Naja, HTTP ist einfach für sowas nicht geeignet. Spezialfälle sind immer böse. Wer sich als verschiedene Zugreifer tarnt, dem wird man ohne Authentifizierung garnicht beikommen können - egal ob jetzt mit IP, mit User-Agent oder Session.

        - Sven Rautenberg