ich möchte eine anonyme Umfrage durchführen, ohne Angabe von Name, E-Mail-Adresse und sonstigen Angaben. Das Formular wird per E-Mail gesendet und manuell ausgewertet, ohne Datenbankanbindung.
Es sollte für eine Onlinesitzung nur einmal abgesendet werden dürfen.
Wie kann ich das am besten realisieren, mit einer session_id oder IP-Auswertung in Verbindung mit einer Zählervariable?
Oder gibt es andere Möglichkeiten das Formular nur einmal abzusenden?
Vielen Dank schon mal im Voraus für Ihre kompetente Rückantwort.
Da von Sessions schon die Rede, war könnte man dies wie folgt lösen :
Beim Start der Session könnten man eine (globale)Session-Variable mit $_SESSION[‚geschickt‘]=0 ;
registrieren .
Wenn das Formular verschickt werden soll, dann prüft man die Variable $_SESSION[‚geschickt‘] auf ihren Inhalt .
Ist de Inhalt 0 dann wird das Formular verschickt und der Inhalt der Variable auf 1 gesetzt .
Wird versucht das Formular erneut zu verschicken, dann scheitert der Versuch bei der Prüfung der Session-Variablen, da diese nun den Wert 1 hat .
Ich hoffe ich hab alles richtig verstanden .
mfg
Jogi
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Da von Sessions schon die Rede, war könnte man dies wie folgt
lösen :
Beim Start der Session könnten man eine
(globale)Session-Variable mit $_SESSION[‚geschickt‘]=0 ;
registrieren .
Wenn das Formular verschickt werden soll, dann prüft man die
Variable $_SESSION[‚geschickt‘] auf ihren Inhalt .
Ist de Inhalt 0 dann wird das Formular verschickt und der
Inhalt der Variable auf 1 gesetzt .
Wird versucht das Formular erneut zu verschicken, dann
scheitert der Versuch bei der Prüfung der Session-Variablen,
da diese nun den Wert 1 hat .
Ich hoffe ich hab alles richtig verstanden .
mfg
Jogi
Hallo,
jawoll, genau das möchte ich erreichen.
Da ich aber noch nie mir globalen Session Variablen gearbeitet habe, da ich ja noch PHP-Anfänger bin, weiß ich nicht so genau, wie ich diese Variablen ansprechen, aufrufen und zuweisen kann.
Ich hab jetzt mal folgendes realisiert, da passiert aber leider nicht wirklich viel. Ein Profi wird wohl jetzt lächelnd drüberschauen und direkt den Fehler erkennen. Für den richtigen Programmcode wäre ich überglücklich und bedanke mich schon mal im Voraus.
Das habe ich mit wenig Erfolg fabriziert:
<?PHP session_start(); $\_SESSION['geschickt']=0 ;
echo "sessionid=$PHPSESSID";
echo "geschickt=$\_SESSION['geschickt']";
?\>
Parse error: parse error, unexpected T\_ENCAPSED\_AND\_WHITESPACE, expecting T\_STRING or T\_VARIABLE or T\_NUM\_STRING
<?PHP if ($_SESSION['geschickt']==0) { sende die nachricht ab und danach setze
$\_SESSION['geschickt']=1 ;
}
?\>
Mit freundlichen Grüßen
Thorsten Eberhardt
Sie sollten dieses Script mal auf ihrem Server ausführen.
So sollte es eigentlich gehen .
Wenn sie die Session Id ausgeben möchten , dann liefert ihnen die Funktion Session_id() die Session ID zurück(siehe oben ).
Wenn Sie eine Variable ausgeben , dann sollten Sie das wie folgt machen :
vielen Dank für die Hilfe und freundliche und kompetente Erklärung.
Sie haben nicht nur ein bischen geholfen, sondern viel.
Das ist genau das, was ich gebraucht habe und jetzt klappt auch alles, so wie ich mir das vorgestellt habe.
Sie haben wieder einen Menschen glücklich gemacht, vielen Dank!
wenn ich noch kurz anmerken darf: die Lösung ist zwar auf den ersten Blick funktionsfähig, doch was ist, wenn der Benutzer einfach die Session im Adressfeld des Browsers löscht? Dann kann er die ganze Umfrage öfters machen. Oder irre ich mich da und habe etwas übersehen (gebe zu, dass ich nicht alles genau gelesen habe).
Eine andere Lösung kann ich im Moment auch nicht anbieten, denn so viel ich weiß, ist es - auch laut der dclp-faq - nicht möglich eine „schummelsichere“ Umfrage zu machen.
Wenn die Umfrage anonym sein soll, dann ist „schummelsicher“ fast unmöglich.
Wenn ein User mehrmals die Umfrage machen möchte, dann kann er auch einfach den Browser schliessen und die Seite erneut aufrufen. Dieses Spiel kann er machen bis der Strom ausfällt.
Schummelsicher wird es nur, wenn man die Daten des Benutzer speichert, und prüft, ob dieser an der Umfrage schon teilgenommen hat .
-> nicht mehr anonym
Die SessionID muss garnicht in der Adresszeile des Browsers stehen.
Gruss jochen
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]