[php]ip loggen in txt file, 3x stemmen met zelfde ip ipv 1x

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • CdRwin
  • Registratie: Juni 2001
  • Laatst online: 27-09-2024
Ik heb een klein probleempje met een scripje. Ik gebruik het script wat hieronder staat voor een ander doeleinde waar het oorspronkelijk voor was gemaakt (een poll). Ik gebruik dit script alleen om te kijken of iemand al gestemd heeft, maar niet op een poll maar op iets heel anders, maar dat is niet belangrijk.

Als men 1x op de submit butten klikt wordt het ip adres van de klikker in de tekst file geplaatst, wanneer men nog een keer wil klikken dan zegt deze dat het niet kan (ip staat namelijk al in de txt file).

Maar wat ik graag wil is dat men bijvoorbeeld 3x kan klikken ipv 1x, dus dat er pas bij 3x het zelfde ip adres in het txt bestand wordt vermeld dat je niet meer kan klikken. En als het even kan, dat je na iedere klik ziet hoevaak je nog kan klikken ""bv Bedankt voor uw stem, u kunt nog X keer stemmen"

Kan iemand deze PHP dummy helpen?

PHP:
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
<?php 

//de gegevend ophalen uit het bestand 
$stemmen = explode("|",file_get_contents($db),6); 
$ip = explode("|",$stemmen['5'],2); 
$stemmen['5'] = $ip['0']; 
//$m = "<u>Totaal aantal stemmen:</u> <b>".array_sum($stemmen)."</b>"; 

//kijken of iemand heeft gestemd 
if ($_SERVER['REQUEST_METHOD']=="POST") 
//$m = php include("getdata_01.php"); 
{ 
//controleren of degene met dit ip adres al heeft gestemd 
    if (!ereg($_SERVER['REMOTE_ADDR'],$ip['1'])) 
    { 
        for ($i = 1; $i <= 6; $i++) 
        { 
            if (isset($_POST[$i])) $stemmen[($i-1)] = $stemmen[($i-1)]+1; 
        } 
//nieuwe waarden weer opslaan en ip adres toevoegen 
        $handle = fopen($db, 'w'); 
        fwrite($handle, implode("|", $stemmen)."|".$ip['1'].$_SERVER['REMOTE_ADDR']."|"); 
        echo "Bedankt voor uw stem";
        fclose($handle); 

        
    } else { 
          $m = "<u>U heeft vandaag al 1x gestemd, Morgen kunt u weer een nieuwe stem uitbrengen.</u>"; 

    } 
}


echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td colspan=\"3\"><b>".$stelling."</b></td></tr>\n"; 

for ($i = 0; $i <= count($keuze)-1; $i++) 
{ 
    $procent[$i] = ($stemmen[$i]!=0) ? round(($stemmen[$i]/array_sum($stemmen))*100,1) : 0;
    echo "<tr><td><input type=\"button\" value=\"Bevestig nu uw stem\" name=\"".($i+1)."\" onclick=\"this.form.submit()\">&nbsp</td><td><i>"; 
} 

echo "<tr><td colspan=\"3\">".$m."</td></tr></td></table></form>\n"; 

?>

www.Qbox.nl


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Waarom in godsnaam een tekstbestand, en niet gewoon een database?

Dan kunnen er ook meerdere mensen tegelijk stemmen ;)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • CdRwin
  • Registratie: Juni 2001
  • Laatst online: 27-09-2024
Tja dit script was voor mij makkelijk te modden voor een ander systeempje waar ik het in wil verwerken. Namelijk dat je als bezoeker 3 stemmen hebt die je mag uit brengen per dag op de 3 leukste foto's naar keuze.
CodeCaster schreef op dinsdag 19 februari 2008 @ 00:50:
Waarom in godsnaam een tekstbestand, en niet gewoon een database?

Dan kunnen er ook meerdere mensen tegelijk stemmen ;)

www.Qbox.nl


Acties:
  • 0 Henk 'm!

  • Blorgg
  • Registratie: Juni 2001
  • Niet online
We moeten natuurlijk allemaal ergens beginnen, maar zoals CodeCaster al zei: waarom geen database?

Zo moeilijk is het niet om met een database om te leren gaan. Voor deze oefening zou een hele simpele database met daarin een tabel met kolommen IP en tijd volstaan. Als iemand de site bezoek tel je even hoe vaak hij al gestemd heeft, en als het er drie zijn mag er niet meer gestemd worden.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
CdRwin schreef op dinsdag 19 februari 2008 @ 00:54:
Tja dit script was voor mij makkelijk te modden voor een ander systeempje waar ik het in wil verwerken. Namelijk dat je als bezoeker 3 stemmen hebt die je mag uit brengen per dag op de 3 leukste foto's naar keuze.
Dit loopt compleet in het honderd als je meerdere bezoekers tegelijkertijd hebt. Dan krijg je concurrency problemen omdat 2 processen naar dezelfde file willen schrijven. Het gebruiken van een database is echt heel simpel, en je met SQL queries kun je doodeenvoudig beredeneren hoevaak iemand vandaag gestemd heeft, iets wat veel omslachtiger is om in de code te doen.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Je kunt idd beter een database gebruiken. Wil je het toch met een tekstbestand doen, gebruik dan iig flock :)

[ Voor 3% gewijzigd door user109731 op 19-02-2008 10:20 ]


Acties:
  • 0 Henk 'm!

  • CdRwin
  • Registratie: Juni 2001
  • Laatst online: 27-09-2024
Bedankt voor jullie reactie's ik ga toch maar eens kijken of het me lukt om ipv een txt bestand te werken met een mysql database.

ik kom vast nog wel met wat vraagjes

www.Qbox.nl

Pagina: 1