tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
630
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    piti66 piti66 ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    421
    Hallo,

    ich hab mal wieder ne frage! Und zwar hab ich ein votescript geschrieben! Dort kann soll man aber nur einmal werten können.
    Da hab ich mir gedacht ich setze einfach einen cookie und mache die Prüfung dann mit zur Bedingung!
    Aber irgendwie schreibt er immer in die Datenbank obwohl der cookie gesetzt ist!
    Hier mal der Quelltext:
    Also hier wird er gesetzt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
      if (isset($_COOKIE["VoteID".$vote_id]))
      {
      $echo=1;}
      else  {
      [b]setcookie("VoteID".$vote_id,xxx,time()+3600,"/neusinnlos/text/witz/");[/b]
      $echo=0;
             }

    Und hier wird geprüft ob er vorhanden ist!
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
          if (isset($_COOKIE["VoteID".$vote_id]))
             {
             $eintragen=0;
                  }
          else
                  {
             $eintragen=1;
             }

    Und hier wird der vote dann in die Datenbank geschrieben:
    Code :
    1
    
      if($vote > "0" && $eintragen==1 && $_GET["action"] =="voting") ...

    Weiß jemand woran dass liegt?

    mfg
     

  2. #2
    diggity diggity ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    227
    Nur mal so eine Frage, wieso willst du das mit Cookies lösen wenn du eh mit einer Datenbank arbeitest?

    Mach dir eine Tabelle vote_ips mit den Feldern IP und Zeit, und bevor du den Code fürs Eintragen ausführst, prüfst du eben ob diese IP schon in der Db steht. Mit der Zeit könntest du dann eine Zeit-Sperre machen.

    Aber zu deinem Problem:

    Wieso ürüfst du beim Eintragen die Variable $vote, wenn du oben den Wert in $echo speicherst?

    PHP-Code:
      if (isset($_COOKIE["VoteID".$vote_id]))  {
      
    $vote 1;
    }  else     {
      
    setcookie("VoteID".$vote_id,xxx,time()+3600,"/neusinnlos/text/witz/");
      
    $vote 0;

    Und tausche diese Zeile gegen folgendes aus:

    PHP-Code:
    if($vote == && $eintragen == && $_GET["action"] == "voting") ... 
    €dit: Und Mamphil hat Recht, eine Variable sollte man niemals nach einer Funktion benennen ...
    Geändert von diggity (02.08.05 um 12:33 Uhr)
     

  3. #3
    Registriert seit
    Jun 2004
    Ort
    Garching b. München
    Beiträge
    602
    Hi!

    Eine Variable "$echo" zu nennen, ist höchst ungeschickt, da es eine Funktion gibt, die genauso heißt.

    Mamphil
     
    Lösungsvorschlag: Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!

    Artikel & Tutorial: Wie realisiere ich eine Umkreissuche nach Postleitzahlen mit der kostenlosen OpenGeoDB in PHP?

  4. #4
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Das mit der IP ist zwar moeglich, aber im Grunde genommen Unsinn.
    Immerhin aendert sich die IP von wahrscheinlich mehr als 90% Deiner Besucher bei jeder Einwahl.

    Wenn es darum geht, dass eingeloggte User voten sollen, dann kannst Du die UserID oder den Usernamen speichern.
    Der Cookie ist auf jeden Fall keine so schicke Loesung da es ja auch User gibt die keine Cookies akzeptieren.
    Die koennen dann voten bis der Arzt kommt.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  5. #5
    piti66 piti66 ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    421
    Also danke erstmal!
    Die Variable $echo steht in einem andern script! Wo nur ein kleines fenster aufgeht ob gevotet werden darf oder nicht! Aber werde sie für euch trotzdem umbenennen!
    Die $vote bekomme ich aus einen Formular, darum steht sie bei den Bedingungen! Hätte den Quellcode wohl ausführlicher machen sollen!
    Also was wäre denn nun die beste variante wenn man nicht will dass jeder tausend mal voten darf! Es sind keine eingeloggten User sondern einfach nur Besucher auf der Seite!
    Oder was wäre den bei meinen weg falsch!

    mfg
     

  6. #6
    diggity diggity ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    227
    Dann machst Du halt beides, Cookies & Datenbank mit IP und Zeit. Wenn der User keine Cookies akzeptiert, weichst Du auf die Variante mit der Datenbank aus.
    Und wenn wir dir quelltexttechnisch helfen sollen, poste bitte den ganzen rein!
     

  7. #7
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Bei nicht eingeloggten Usern ist es grundsaetzlich problematisch so etwas festzuhalten.
    Beide Wege, Cookies und IP in der DB, sind nicht optimal, wie ich ja bereits erlaeutert habe.
    Du hast ja nichts woran Du jemanden wirklich eindeutig identifizieren kannst.
    Bei der IP-Methode gibt's dann z.B. folgendes:
    Wenn jemand heute votet und morgen hab ich die IP die er heute hatte kann ich nicht voten.

    Bei der Cookie-Methode hingegen:
    Wenn meine Cookies deaktiviert sind kann ich so oft voten wie ich lustig bin.
    Ausser Du baust vorher eine Ueberpruefung ein ob Cookies akzeptiert werden und laesst dann niemanden voten der keine Cookies annimmt. Aber auch nicht grad fein.
    Ausserdem ist es ja auch nicht gerade schwierig ein Cookie wieder zu loeschen.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  8. #8
    piti66 piti66 ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    421
    Also hier mal der ganze Quelltext!
    1.Datenbankdatei
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    
      <?PHP
      $anzahl=10; //Anzahl der Eintr&auml;ge pro Seite
      include("connect.php");
      $show = $_GET["show"];
      $table = "witzfr";
      if(!$show) {
        $show=1;
          }
          $limit=$show*10;
          $limitanfang=($show-1)*10;
          $abfrage1=Mysql_query("select * from ".$table."");
          $number=mysql_num_rows($abfrage1);
                  function starrating($durchschnitt)
               {
          $half_round = number_format(round(($durchschnitt*2), 0)/2,1,'.','');
         $durchschnitt = '<img src="../../images/stern/'.str_replace('.','',$half_round).'5.gif" width="75" height="13" border="0" />';
          return $durchschnitt;
          }
          ?>
          <table width="100%" cellspacing="0" cellpadding="0" align="center">
            <tr>
              <td width="33%" valign="top" bgcolor="#ededed" align="left">
              <?PHP
              if($limitanfang > 0) { echo "<a href=\"javascript:history.back()\">Vorherige Seite</a>";  }
              ?>
              </td>
              <td width="34%" valign="top" bgcolor="#ededed" align="center">
              <?
              echo "Seite ".$show. " von ".ceil($number/10) ;
              ?>
              </td>
              <td width="33%" valign="top" bgcolor="#ededed" align="right">
              <?PHP
              $seiten=$show+1;
             if($number - $limit > 0) { echo "<a href=\"".$table.".php?show=$seiten\">N&auml;chste Seite</a>"; }
              ?>
              </td>
            </tr>
          </table>
          <?
          $query1="select * from ".$table." order by datum desc limit ".$limitanfang.",".$anzahl;
          $abfrage1=Mysql_query($query1);
          while($row=mysql_fetch_object($abfrage1)) {
          $datu = getdate($row->datum);
          $datum = $datu[mday].".".$datu[mon].".".$datu[year];
          $vote_id=$row->id;
          if (isset($_COOKIE["VoteID".$vote_id]))
             {
             $eintragen=0;
                  }
          else
                  {
             $eintragen=1;
             }
                  echo $_COOKIE["VoteID".$vote_id];
           echo $row->text;
               echo "<p></p>";
               $voteid=$row->id;
          ?>
          <form action="<? echo $PHP_SELF; ?>" method="get">
               <? echo (starrating($row->durchschnitt)); ?>
               <font>Bewerten:</font>
         <select name="vote" onChange="this.form.submit();window.open('vote.php?voteid=<? echo $row->id;?>&table=<? echo $table; ?>','_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=125,height=100,top=0,left=0');location.reload();" style="width:77px; font-family:verdana; color:#000000; font-size:7pt">
           <option value="0">----------</option>
           <option value="1">sehr gut</option>
           <option value="2">gut</option>
           <option value="3">befriedigend</option>
           <option value="4">ausreichend</option>
           <option value="5">mangelhaft</option>
           </select>
          <input type="hidden" name="id" value="<?php echo $row->id; ?>">
          <input type="hidden" name="show" value="<?php echo $show; ?>">
           <input type="hidden" name="action" value="voting">
         <a href="print.php?id=<? echo $row->id; ?>&table=<? echo $table ?>" onclick="window.open(this.href,'_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=300,height=200,top=0,left=0'); return false" target="_blank"><img src="../../images/drucker.gif" border="0" height="18px" title="Witz drucken"></a>
         <a href="send.php?id=<? echo $row->id; ?>&table=<? echo $table ?>" onclick="window.open(this.href,'_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=400,height=600,top=0,left=0'); return false" target="_blank"><img src="../../images/email.gif" border="0" height="12px" title="Witz an Freund senden"></a>
               </form>
           <?
             if($vote > "0" && $eintragen==1 && $_GET["action"] =="voting"){
             $query="update ".$table." SET vote_gesamt = vote_gesamt + '".$vote."', vote_anzahl = vote_anzahl + 1, durchschnitt = vote_gesamt/vote_anzahl WHERE id=".$id."";
               $abfrage=mysql_query($query);
                                        }
           }
           ?>
           <p></p>
          <table width="100%" cellspacing="0" cellpadding="0" align="center">
            <tr>
              <td width="33%" valign="top" bgcolor="#ededed" align="left">
              <?PHP
              if($limitanfang > 0) { echo "<a href=\"javascript:history.back()\">Vorherige Seite</a>";  }
              ?>
              </td>
              <td width="34%" valign="top" bgcolor="#ededed" align="center">
              <?
              echo "Seite ".$show. " von ".ceil($number/10) ;
              ?>
              </td>
              <td width="33%" valign="top" bgcolor="#ededed" align="right">
              <?PHP
              $seiten=$show+1;
             if($number - $limit > 0) { echo "<a href=\"".$table.".php?show=$seiten\">N&auml;chste Seite</a>"; }
              ?>
              </td>
            </tr>
          </table>

    2.Vote Datei:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
      <?php
      $vote_id=$_GET['voteid'];
      if (isset($_COOKIE["VoteID".$vote_id]))
        {
             $echo=1;}
      else  {
        setcookie("VoteID".$vote_id,xxx,time()+3600,"/neusinnlos/text/witz/");
        $echo=0;
             }
      
      ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Megasinnlos.de - die Reise in den Wahnsinn</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <meta name="description" content="">
      <meta name="language" content="de">
      <meta http-equiv=" content-language" content="de">
      <meta lang="de" name="keywords" content="">
      <meta name="copyrights" content="Sebastian Schmiedel">
      <meta name="Robots" content="index,follow">
      <meta name="revisit-after" content="3 days">
      <meta name="Audience" content=" Alle ">
      <link rel="shortcut icon" href="http://www.megasinnlos.de/favicon.ico">
      <link rel="stylesheet" type="text/css" href="../../style/format.css" media="all">
      <link rel="stylesheet" type="text/css" href="../../style/schrift.css" media="all">
      </head>
      <body onLoad="setTimeout('window.close()', 3000)">
      <div align="center">
      <font>
      <?php
      if ($echo ==0)
        {echo "Vielen Dank f&uuml;r Ihre Bewertung!";}
      else  {echo "Sie k&ouml;nnen nur einmal bewerten!";}
      ?>
      </font>
     <input type="button" value="Schließen" onClick="window.close()" style="font-family:verdana; color:#000000; font-size:7pt"></input>
      <br>
      <font class="klein">Das Fenster schließt sich in 3 Sekunden automatisch.</font>
      </div>
      </body>
      </html>

    mfg
     

  9. #9
    piti66 piti66 ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    421
    Was ist denn nun?
    Wäre nett wenn jemand weiß an was dass liegt?

    mfg
     

  10. #10
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    1.
    Zitat Zitat von Bibel
    Und der Herr sprach Du sollst keine Threads pushen.
    2. Was ist denn genau Dein Problem?
    Wir beraten Dich ueber Moeglichkeiten, dann postest Du Quelltext und jetzt meckerst Du, dass keiner was schreibt.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  11. #11
    piti66 piti66 ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    421
    Den Quelltext sollte ich posten! wollt ich ja eigentlich nicht!
    Na hab ja immer noch dass problem dass er trotz dass er den cookie hat trotzdem die werte verändert!
    mfg

    sorry!
     

  12. #12
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Warum wolltest Du den Source nicht posten?

    Nutze naechstes Mal bitte die [ php ]-Tags, dann ist der Code leichter zu lesen.

    Uebrigens solltest Du ein Ablauf-Datum angeben, sonst wird der Cookie geloescht wenn der Browser geschlossen wird.
    Siehe setcookie().
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  13. #13
    piti66 piti66 ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    421
    Ja mach ich!
    Ich gebe doch die zeit an! Er soll in einer stunde verfallen!
    aber es der rest geht nicht! Die Cookies werden zwar geschrieben, aber bei der Bedingung, dass der Cookie nicht gesetzt sein darf wenn geschrieben werden soll wird immer geschrieben.

    mfg
     

  14. #14
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Huch, irgendwie hab ich vorhin gedacht Du setzt keine Zeit.
    Sorry, mein Fehler.

    Setz den Cookie mal so:
    PHP-Code:
     setcookie("VoteID".$vote_id,"xxx",time()+3600); 
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  15. #15
    piti66 piti66 ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    421
    Bringt auch nichts! Dass Problem ist wahrscheinlich nicht beim setzen sondern bei der if abfrage:

    Code :
    1
    2
    3
    4
    5
    
       if($vote > "0" && !isset($_COOKIE["VoteID".$vote_id]) && $_GET["action"] =="voting")
       {
     $query2="update ".$table." SET vote_gesamt = vote_gesamt + '".$vote."', vote_anzahl = vote_anzahl + 1, durchschnitt = vote_gesamt/vote_anzahl WHERE id=".$id."";
       $abfrage=mysql_query($query2);
        }

    Hier will ich halt dass er nur in die Datenbank schreibt, wenn der Cookie nicht gesetzt ist!

    mfg
     

Ähnliche Themen

  1. Applescript: Vorhandensein einer Datei prüfen
    Von einfach nur crack im Forum Coders Talk
    Antworten: 1
    Letzter Beitrag: 14.09.09, 15:46
  2. Prüfen, ob Cookies aktiviert sind
    Von Sasser im Forum PHP
    Antworten: 5
    Letzter Beitrag: 16.12.08, 15:52
  3. Oracle: Objekt auf vorhandensein in einen varray prüfen
    Von sceppi im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 01.07.08, 12:55
  4. Klassen-Attribute auf vorhandensein Prüfen
    Von mojitoweb im Forum PHP
    Antworten: 2
    Letzter Beitrag: 29.11.05, 14:12
  5. Verfügbarkeit von cookies prüfen!
    Von MBK Kold Baccula im Forum PHP
    Antworten: 3
    Letzter Beitrag: 08.08.04, 21:01