Problem mit Simplen Vote |
Bastian_W
Otto-Normal-Poster Threadstarter
Beiträge: 85 |
Hi,
ich habe ein Problem mit einem Vote System. Wie erreiche ich das ein User nur einmal Voten kann... ok... indem ich die IP-Adresse mitlogge (siehe) nur wird die Datei dann ja riesengroß, evtl. kann man die Einträge ja begrenzen und immer nur 1000 IP´s loggen und die erste dann wieder überschreiben?!?! Ich würde ja einen Cookie einsetzen. Allerdings kann man zeitgleich mehrere Votes durchführen. Hat jemand ne Idee... das Script sieht bis jetzt so aus (siehe unten) soll aber wenn ich das hinbekommen habe, das 1 User nur einmal Voten kann als MySQL laufen.
$varia=file("fragen.txt","r");
$frage=array_pop($varia);
echo "$frage";
echo "";
$z=file("antworten.txt","r");
if ($ant!='') {
$lvote=fopen("lastip.txt","r");
$lv=fgets($lvote,255);
fclose($lvote);
$ip=getenv("REMOTE_ADDR");
if ($lv!=$ip) {
$z[$ant-1]=$z[$ant-1]+1;
$datei=fopen("antworten.txt","w");
foreach ($z as $save) {fputs($datei,chop($save)."\n");}
fclose($datei);
$lvote=fopen("lastip.txt","w");
fputs($lvote,"$ip");
fclose($lvote);
}
}
$laenge=90;
$gesamt=0;
foreach($z as $zahl)
{ $gesamt=$gesamt+$zahl; }
$proz=array();
foreach ($z as $zahl) {
if ($gesamt!=0) {
$p=round($zahl/$gesamt*10000)/100;
array_push($proz,$p);
}
}
$max=1;
foreach ($z as $zahl) {
$zahl=$zahl*10/10;
if($zahl > $max) { $max=$zahl; }
}
$breite=array();
foreach ($z as $zahl)
{
$b=$zahl*$laenge/$max;
array_push($breite,$b);
}
$i=0;
while (isset($z[$i]))
{
echo "$varia[$i]
";
echo "";
$x=$laenge-$breite[$i];
echo "";
echo "$proz[$i]%";
echo "
";
$i++;
}
echo "
Stimmen: $gesamt (100%)";
?>
|
---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.
Diese Nachricht wurde geändert von: Bastian_W |
 Profil
Editieren
Zitieren
|
HG
Posting-Schinder
Beiträge: 520 |
Ich hatte immer den Eindruck, daß viele Votes einfach einen Cookie auf meiner Festplatte gespeichert haben, um mich von weiteren Abstimmungen abzuhalten.
IP-Sperren sind dafür vielleicht nicht so gut geeignet, weil die meisten User über dynamische IPs verfügen, und du damit wahrscheinlich auch User aussperrst, die abstimmen dürften.
---
www.kuminatano.de
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Bastian_W
Otto-Normal-Poster Threadstarter
Beiträge: 85 |
Jo... deshalb wollte ich von meiner IP Lösung auch weg. Nur nicht ganz. Ich werde das evtl. so machen, das ich die IP nur 10min Speichere + Cookie wird das ziemlich sicher sein, das den Vote niemand so schnell faken kann. Ist nur die Umsetzung:
Wie speichere ich cookies bzw. frage sie ab bei mehreren Umfragen?
---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.
|
 Profil
Editieren
Zitieren
|
HG
Posting-Schinder
Beiträge: 520 |
Da hast bei mehreren Votes wahrscheinlich eine Art "id" für jede Umfrage. Diese id müsstest du dann in einem Cookie speichern, und dann überprüfen, ob die ip in den letzten zehn minuten eine Antwort abgesandt hat.
Die Funkiton dafür ist setcookie: http://de2.php.net/manual/en/function.setcookie.php
---
www.kuminatano.de
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Bastian_W
Otto-Normal-Poster Threadstarter
Beiträge: 85 |
Die Cookie Funktion ist schon klar...
doch wenn ich 500Links habe und jeden Link Bewerten lassen will kann ich nicht 500Cookies schreiben . Deshalb meine Frage ob jemand eine Idee hat ob man in einen Cookie mehrere Werte Speichern kann. Evtl. währe ja auch das "updaten/neuspeichern" von dem Cookie möglich.
---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
du könntest einfach alle Werte hintereinander mit einem | getrennt schreiben und die dann mit explode beim Auslesen wieder auseinanderwurschteln.
|
 Profil
Editieren
Zitieren
|
Bastian_W
Otto-Normal-Poster Threadstarter
Beiträge: 85 |
Da bin ich auch gerade drann... ich werde alle Werte aus dem Cookie auslesen mit Explode auseinanderflücken den neuen Wert hinzufügen und alles wieder zurück in den Cookie schreiben. Bei 500 möglichen Votes aber ein "dickes" cookie aber mir fällt da spontan nix anderes ein.
Edit:Schreibfehler korigiert
---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.
Diese Nachricht wurde geändert von: Bastian_W |
 Profil
Editieren
Zitieren
|