Umfrage mit Cookie absichern

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

  • Umfrage mit Cookie absichern

    Salü zusammen.

    Also ich möchte folgendes machen:
    Ich habe eine Umfrage in PHP programmiert und möchte nun, dass man nur einmal abstimmen kann....irgendwie logisch oder?!?
    Mein Script 'merkt' sich nun bereits die IP, zur grösseren Sicherheit möchte ich nun aber auch noch ein Cookie setzen, sobald die Wahl getroffen wird...(die IP ändert sich ja bei jeder Neu-Einwahl ins Inet...)
    Nun, wenn ich nun mitten im Script ein Cookie senden möchte, geht das logischerweise nicht, da ein Cookie ja im Header, am Anfang gesendet wird...ich will das Cookie aber erst setzen, wenn der User auch abgestimmt hat, und nicht schon beim laden der Seite....geht das?!

    Bin für jede Hilfe dankbar...
    mfg
    SKar

    visit http://www.uht-traktor.ch

  • #2
    das script, das das voten verarbeitet muss ja auch einen header haben, und in diesem kannst du dann das cookie setzen.

    Code:
    <form method=post action="verarbeitung.php">
    ....
    </form>
    und das ganze dann in der "verarbeitung.php" setzen:
    Code:
    <?php
      setCookie("vote","schon abgestimmt")
    ?>
    <html>
    <head>
    ....
    
    <?php
      $counter_für_poll++;
    ?>
    so ungefähr müsste es klappen

    aber vorsicht: nicht alle user haben cookies aktiviert, und man kann cookies auch löschen. also wenn man wirklich will, kann man auch 2x abstimmen

    mfg mosez

    Kommentar


    • #3
      Danke für die schnelle Antwort.

      Folgendes Problem: Das Script besteht nur aus einer Datei...inder ist der Code für's anzeigen der Resultate, der Administration, usw...einfach alles.

      wenn das Script ohne 'Anhängsel' aufgerufen wird (also nur poll.php und nicht z.b. poll.php?action=admin&do= ....) kannst du abstimmen. sobald du nun auf den Abstimmen - Button drückst, startet ja eigentlich erst das eigentliche Zählscript. und auch erst da sollte ein Cookie gesetzt werden....geht das so nicht? muss ich das Script in mehrere Dateien aufsplitten?? so sieht das etwa aus :
      PHP-Code:
      <?php if ($action == ""
      {
          
          if (! 
      $vote && ! $result
          {
              
      // HTML - Formular wenn kein Button gedrückt wird
              //.....

          

          else
          {
              if (
      $vote)
              {    
                  
      // hier möchte ich eigentlich das Cookie setzen!!
                  //......
                  
      $ip $REMOTE_ADDR;
                  
      $datei "ips.txt";

                  
      $ipfile file($datei);
                  
      $x 0;
                  
                  
                  
                  
                  if (!(
      in_array($ip."\n"$ipfile)))
                  {
                      
      array_push($ipfile,$ip."\n"); 
                      
      $string join(""$ipfile);
                      
      $fd fopen($datei,"w+") or die(" Datei konnte nicht geöffnet werden! ");
                      
      flock($fd1);
                      
      fputs($fd$string); 
                      
      flock($fd3);
                      
      fclose($fd);
                  }
                  else
                  {
                      echo 
      "<table width='100%'><tr><td><center><br><br><br>Du hast bereits eine Stimme abgegeben!!<br><br><a href='php_poll.php' target='_self'>Zurück</a></center></td></tr></table>";
                      exit;
                  }
              }
              
                      
                  
      // Resultat sicher....usw
      hoffe, das war einigermassen verständlich..



      aber vorsicht: nicht alle user haben cookies aktiviert, und man kann cookies auch löschen. also wenn man wirklich will, kann man auch 2x abstimmen
      schon klar, aber für den 0815 - User sollte das genügen, und wenn nun halt einer zweimal abstimmt ist das auch nicht so schlimm...
      mfg
      SKar

      visit http://www.uht-traktor.ch

      Kommentar


      • #4
        Hi!
        Du kannst auch alles in einer Datei lassen.
        Wo Du den Befehl zum setzen eines cookies im php-script platzierst ist egal, Du nur darauf achten, daß vorher noch nichts ausgegeben wurde. Solange Du noch nichts ausgegeben hast, hast Du idR auch noch keinen header gesendet, also kannst Du noch einen cookie setzen.
        Einen cookie kannst Du mit der Funktion set_cookie() setzen.
        cu tj99de
        Of all things I've lost
        I miss my mind the most

        Kommentar


        • #5
          Hi.
          es wird aber schon was ausgegeben...die einfachste Lösung wird also sein, die vote - Funktion in eine eigene PHP - Datei zu verpacken, und dort gleich am Anfang zu testen ob bereits ein cookie gesetzt wurde. Falls ja darf er nicht voten und das script wird beendet, falls nein setcookie()...

          THX
          mfg
          SKar

          visit http://www.uht-traktor.ch

          Kommentar

          Lädt...
          X