stivi
18.05.2008, 14:35:58
So mal wieder n Noob in Sachen php hier.
Ich hab mir den Code für die Umfrage von selfphp rüber kopiert und die wichtigsten Dinge erstmal so abgeändert wie ich sie gerne hätte.
Es klappt auch alles wunderbar bis auf die Sperre..
So sieht jetzt mein Code aus:
<?php
if (isset($_POST["ergebnis"])) {
setcookie("abgestimmt","ja",time()+60*60*3);
}
$thema = "Hitparade";
$auswahl = array("Super","Sehr Gut","Gut","Naja","Schlecht");
$anzahl = count($auswahl);
?><h3><?php echo $thema ?></h3>
<form method='post' action='<?php echo $PHP_SELF; ?>'>
<p>
<?php
foreach ($auswahl as $key=>$eintrag) {
echo "<input type='radio' name='ergebnis' value='$key'> $eintrag<br>\n";
}
?>
</p>
<?php
if (empty($_COOKIE["abgestimmt"]) && !isset($_POST["ergebnis"])) {
// Submit nur zeigen, wenn Formular noch nicht abgeschickt wurde
echo "<input type='submit' value='Abstimmen'>";
} else {
echo "<p>Danke für deine Stimme!</p>\n";
// Formular abgeschickt? Aber bisher noch nicht abgestimmt?
if (empty($_COOKIE["abgestimmt"]) && isset($_POST["ergebnis"])) {
// Dateiname in Variable speichern
$datei="daten/stimmen.txt";
// Datei vorhanden?
if (file_exists($datei)) {
$fp=fopen($datei,"r+");
} else {
$fp=fopen($datei,"w");
}
// Datei einlesen
$stimmen=fread($fp,filesize($datei));
// String aus Datei in Array zerlegen
$stimmen=explode(",",$stimmen);
// Der gewählte Punkt wird um 1 erhöht!
$stimmen[$_POST["ergebnis"]]++;
// Stimmen in einem String zusammensetzen
for ($i=0;$i<$anzahl;$i++) {
$total .= $stimmen[$i] .",";
}
// Neuen String in Datei schreiben
rewind($fp);
fputs($fp,$total);
fclose($fp);
}
}
?>
</form>
Wenn ich das ganze richtig verstanden habe müsste es ja danach eine Sperre von 3 Stunden geben bis man wieder abstimmen kann..?
Wenn ich allerdings den Link neu öffne (Nach z.B 5 Sekunden) kann ich schon wieder abstimmen.
Habe es auch mit dem vorgegebenen Beispiel von 60*60*24*30 versucht, was laut Beschreibung 30 Tage wäre. Auch das hat nicht geklappt.
Kann mir jemand sagen wo hier der Wurm drinn ist?
Schonmal danke im Voraus
PS: Die Umfrage findet ihr hier:
www.radio-powerplay.org/hitparade_umfrage.php
Ich hab mir den Code für die Umfrage von selfphp rüber kopiert und die wichtigsten Dinge erstmal so abgeändert wie ich sie gerne hätte.
Es klappt auch alles wunderbar bis auf die Sperre..
So sieht jetzt mein Code aus:
<?php
if (isset($_POST["ergebnis"])) {
setcookie("abgestimmt","ja",time()+60*60*3);
}
$thema = "Hitparade";
$auswahl = array("Super","Sehr Gut","Gut","Naja","Schlecht");
$anzahl = count($auswahl);
?><h3><?php echo $thema ?></h3>
<form method='post' action='<?php echo $PHP_SELF; ?>'>
<p>
<?php
foreach ($auswahl as $key=>$eintrag) {
echo "<input type='radio' name='ergebnis' value='$key'> $eintrag<br>\n";
}
?>
</p>
<?php
if (empty($_COOKIE["abgestimmt"]) && !isset($_POST["ergebnis"])) {
// Submit nur zeigen, wenn Formular noch nicht abgeschickt wurde
echo "<input type='submit' value='Abstimmen'>";
} else {
echo "<p>Danke für deine Stimme!</p>\n";
// Formular abgeschickt? Aber bisher noch nicht abgestimmt?
if (empty($_COOKIE["abgestimmt"]) && isset($_POST["ergebnis"])) {
// Dateiname in Variable speichern
$datei="daten/stimmen.txt";
// Datei vorhanden?
if (file_exists($datei)) {
$fp=fopen($datei,"r+");
} else {
$fp=fopen($datei,"w");
}
// Datei einlesen
$stimmen=fread($fp,filesize($datei));
// String aus Datei in Array zerlegen
$stimmen=explode(",",$stimmen);
// Der gewählte Punkt wird um 1 erhöht!
$stimmen[$_POST["ergebnis"]]++;
// Stimmen in einem String zusammensetzen
for ($i=0;$i<$anzahl;$i++) {
$total .= $stimmen[$i] .",";
}
// Neuen String in Datei schreiben
rewind($fp);
fputs($fp,$total);
fclose($fp);
}
}
?>
</form>
Wenn ich das ganze richtig verstanden habe müsste es ja danach eine Sperre von 3 Stunden geben bis man wieder abstimmen kann..?
Wenn ich allerdings den Link neu öffne (Nach z.B 5 Sekunden) kann ich schon wieder abstimmen.
Habe es auch mit dem vorgegebenen Beispiel von 60*60*24*30 versucht, was laut Beschreibung 30 Tage wäre. Auch das hat nicht geklappt.
Kann mir jemand sagen wo hier der Wurm drinn ist?
Schonmal danke im Voraus
PS: Die Umfrage findet ihr hier:
www.radio-powerplay.org/hitparade_umfrage.php