Umfrage zeigt keine Ergebnisse an

xenomjay

Mitglied
Hallo Leute,

habe mir unter Anleitung ein Umfrage-Script gebastelt, aber wenn ich auf "Submit" klicke passiert gar nichts, noch nicht einmal 'ne Fehlermeldung. Die TXT-Dateien haben volle Rechte aber dort wird nichts gespeichert. Hat einer ne Idee? Danke im Voraus.

Hie der Code:
PHP:
<?PHP
function schreiben($datei,$mode) { 
   global $REMOTE_ADDR; 
   $fp = @fopen($datei,$mode); 
   flock($fp,2); 
   fwrite($fp,$REMOTE_ADDR."|".time()."\n"); 
   flock($fp,3); 
   fclose($fp); 
} 

function ip_sperre() { 
   global $REMOTE_ADDR; 
   $reloadlogdatei = "umfrage_eli_stone_ips.txt"; 
   $anzahleintraege = 50; // nach sovielen ip´s werden die alten gelöscht
   $zeitlimit = 3600; // solange bleibt eine ip gesperrt
    
   // prüfen ob datei existiert wenn nicht erstellen
   if(!file_exists($reloadlogdatei)) { 
      $datei = fopen($reloadlogdatei,"w+"); 
      fclose($datei); 
   } 
   $fp = file($reloadlogdatei); 
   $size = sizeof($fp); 

   // beschreibt die Datei, wenn Liste voll 
   if($size >= $anzahleintraege){ 
      schreiben($reloadlogdatei,"w"); 
      // Prüft, ob eine IP in der Liste steht 
   }
   else { 
      $ausgabe=false;
      for ($i=0;$i<$size;$i++) { 
         $zeile = explode("|",$fp[$i]); 
         if ($zeile[0] == $REMOTE_ADDR AND $zeile[1] > (time()-$zeitlimit)){ 
            // ip wird gefunden 
            $ausgabe = true; 
         }
      } 
      // protokolliert die ip 
      schreiben($reloadlogdatei,"a+"); 
   } 
   return $ausgabe; 
}  

// ein einfacher Vote/Poll mit PHP:
// --------------------------------

// Ziel dieses Tutorials: Eine Umfrage mit PHP

// Features:
// - Speichern der Daten in einer Textdatei
// - Balken- und Anzahlanzeige des Ergebnisses

////////////////////////////////////
// erstmal ein paar Einstellungen //
////////////////////////////////////

$frage = "Soll ich die Serie Eli Stone fortsetzen?";  // Thema der Abfrage

$anzahl = 2;  // Anzahl der Auswahloptionen

$option[0] = "Ja";  // Option 1
$option[1] = "Nein";  // Option 2

$farbe[0]="#0000FF";  // Farbe des 1. Balkens
$farbe[1]="#00FF00";  // Farbe des 2. Balkens

$datei = "umfrage_eli_stone.txt";  // Ergebnisdatei


//////////////////////////////////////////////////////////////////////////////////////////
// so, und hier das Script:                                                             //
//                                                                                      //
// zuerst oeffnen wir die Ergebnisdatei, bzw. legen diese neu an, falls nicht vorhanden //
//////////////////////////////////////////////////////////////////////////////////////////

if (file_exists($datei)) {  //existiert die Datei?
    $votes=file($datei);  //dann in Array "$votes" einlesen
}
else {  //wenn nicht
    $handle = fopen($datei, "w+");  //Datei anlegen
    $i=0;
    for ($i; $i<$anzahl; $i++) {  //fuer jede Option
        fputs($handle,"0\n");  //"0" in Datei schreiben (mit Zeilenvorschub)
    }
    fclose($handle);  //Datei wieder schliessen
    $votes=file($datei);  //Datei in Array "$votes" einlesen
}


//////////////////////////////////////////////////////////////////////////////////////////////////
// wurde abgestimmt? wenn ja, dann muessen wir das Ergebnis anpassen und in die Datei schreiben //
//////////////////////////////////////////////////////////////////////////////////////////////////

if (($submitvote) && (ip_sperre()==false))   {
    settype($votes[$radio],"integer");
    $votes[$radio]++;  //entsprechende Option um eins erhoehen
    $handle = fopen($datei, "w+");  //Datei oeffnen
    $i=0;
    for ($i; $i<$anzahl; $i++) {  //fuer jede Option
        settype($votes[$i],"integer");
        fputs($handle,"$votes[$i]\n");  //Anzahl in Datei schreiben (mit Zeilenvorschub)
    }
    fclose($handle);  //Datei wieder schliessen
}

////////////////////////////////////////////////////////////
// jetzt startet die Ausgabe! zuerst mal die Ueberschrift //
////////////////////////////////////////////////////////////

echo "<H4>".$frage."</H4>\n\n";  //Ueberschrift schreiben

////////////////////////////////////////
// dann das Ergebnis als Balkengrafik //
////////////////////////////////////////

$i=0;
for ($i; $i<$anzahl; $i++) {  //fuer jede Option
    $j=0;
    echo $option[$i]."&nbsp;&nbsp;&nbsp;<FONT COLOR=\"".$farbe[$i]."\">";  //Option ausgeben und Farbe setzen
    for($j; $j<$votes[$i]; $j++) {  //fuer Anzahl der Votes
        echo "|";  //je einen Strich ausgeben
    }
    echo "&nbsp;&nbsp;&nbsp;".$votes[$i]."</FONT><BR>\n";  //Balken zu ende, also Zeilenumbruch
}

////////////////////////////////////
// am Schluss das Auswahlformular //
////////////////////////////////////

echo "<FORM ACTION=\"".$PHP_SELF."\" METHOD=\"Post\">\n";  //Formular anfangen
$i=0;
for ($i; $i<$anzahl; $i++) {  //fuer jede Option
    echo "<INPUT TYPE=\"radio\" NAME=\"radio\" VALUE=\"".$i."\">".$option[$i]."<BR>\n";  //Radiobutton anzeigen
}

echo "<INPUT TYPE=\"Submit\" VALUE=\"Abstimmen\" NAME=\"submitvote\"></FORM>";  //Formularende
?>
 
Hallo xenomjay,

überprüfe mal mittels $_POST['submitvote'] ob das Formular abgesendet wurde, nicht nur mit $submitvote!
(Stichwort: register_globals)

MfG
 
Danke drucko, jetzt zeigt er schonmal nach dem Absenden das Ergebnis an. Aber immer "0", "0" und somit habe ich auch herausgefunden, dass die IP-Sperre nicht funktioniert. Ich bin frustriert.
 
Nun legt er zum Start, zwar 2mal "0" für beide Optionen in der TXT an und die IPs werden in der anderen TXT auch mitgeschrieben, trotzdem funktioniert eine Abstimmung weiterhin nicht.
 
Zuletzt bearbeitet:
Hmmm, also was mir jetzt noch aufgefallen ist, ist dass in $zeile[1] evtl. noch ein \n dranhängt und der timestamp dann nicht ausgewertet werden kann. Probier am Besten noch ne Weile rum ;)
Ich muss jetzt allerdings wech, ich schaue dann später wie weit du gekommen bist.
MfG
 
So sollte es funktionieren:
PHP:
<?PHP
function schreiben($datei,$mode) { 
   $_SERVER['REMOTE_ADDR']; 
   $fp = fopen($datei,$mode); 
   flock($fp,2); 
   fwrite($fp,$_SERVER['REMOTE_ADDR']."|".time()."\r\n"); 
   flock($fp,3); 
   fclose($fp); 
} 

function ip_sperre() { 
   $_SERVER['REMOTE_ADDR']; 
   $reloadlogdatei = "umfrage_eli_stone_ips.txt"; 
   $anzahleintraege = 50; // nach sovielen ip´s werden die alten gelöscht
   $zeitlimit = 3600; // solange bleibt eine ip gesperrt
    
   // prüfen ob datei existiert wenn nicht erstellen
   if(!file_exists($reloadlogdatei)) { 
      $datei = fopen($reloadlogdatei,"w+"); 
      fclose($datei); 
   } 
   $fp = file($reloadlogdatei); 
   $size = sizeof($fp); 

   // beschreibt die Datei, wenn Liste voll 
   if($size >= $anzahleintraege){ 
      schreiben($reloadlogdatei,"w"); 
      // Prüft, ob eine IP in der Liste steht 
   }
   else { 
      $ausgabe=false;
      for ($i=0;$i<$size;$i++) { 
         $zeile = explode("|",$fp[$i]); 
         if ($zeile[0] == $_SERVER['REMOTE_ADDR'] AND $zeile[1] > (time()-$zeitlimit)){ 
            // ip wird gefunden 
            $ausgabe = true; 
         }
      } 
      // protokolliert die ip 
      schreiben($reloadlogdatei,"a+"); 
   } 
   return $ausgabe; 
}  

// ein einfacher Vote/Poll mit PHP:
// --------------------------------

// Ziel dieses Tutorials: Eine Umfrage mit PHP

// Features:
// - Speichern der Daten in einer Textdatei
// - Balken- und Anzahlanzeige des Ergebnisses

////////////////////////////////////
// erstmal ein paar Einstellungen //
////////////////////////////////////

$frage = "Soll ich die Serie Eli Stone fortsetzen?";  // Thema der Abfrage

$anzahl = 2;  // Anzahl der Auswahloptionen

$option[0] = "Ja";  // Option 1
$option[1] = "Nein";  // Option 2

$farbe[0]="#0000FF";  // Farbe des 1. Balkens
$farbe[1]="#00FF00";  // Farbe des 2. Balkens

$datei = "umfrage_eli_stone.txt";  // Ergebnisdatei


//////////////////////////////////////////////////////////////////////////////////////////
// so, und hier das Script:                                                             //
//                                                                                      //
// zuerst oeffnen wir die Ergebnisdatei, bzw. legen diese neu an, falls nicht vorhanden //
//////////////////////////////////////////////////////////////////////////////////////////

if (file_exists($datei)) {  //existiert die Datei?
    $votes=file($datei);  //dann in Array "$votes" einlesen
}
else {  //wenn nicht
    $handle = fopen($datei, "w+");  //Datei anlegen
    for ($i=0; $i<$anzahl; $i++) {  //fuer jede Option
        fwrite($handle,"0\r\n");  //"0" in Datei schreiben (mit Zeilenvorschub)
    }
    fclose($handle);  //Datei wieder schliessen
    $votes=file($datei);  //Datei in Array "$votes" einlesen
}


//////////////////////////////////////////////////////////////////////////////////////////////////
// wurde abgestimmt? wenn ja, dann muessen wir das Ergebnis anpassen und in die Datei schreiben //
//////////////////////////////////////////////////////////////////////////////////////////////////

if (($_POST['submitvote']) && (ip_sperre()==false))   {
    settype($votes[$radio],"integer");
    $votes[$radio]++;  //entsprechende Option um eins erhoehen
    $handle = fopen($datei, "w+");  //Datei oeffnen
    for ($i=0; $i<$anzahl; $i++) {  //fuer jede Option
        settype($votes[$i],"integer");
        fwrite($handle,"$votes[$i]\r\n");  //Anzahl in Datei schreiben (mit Zeilenvorschub)
    }
    fclose($handle);  //Datei wieder schliessen
}
else{
echo 'bereits gevoted';
}

////////////////////////////////////////////////////////////
// jetzt startet die Ausgabe! zuerst mal die Ueberschrift //
////////////////////////////////////////////////////////////

echo "<H4>".$frage."</H4>\n\n";  //Ueberschrift schreiben

////////////////////////////////////////
// dann das Ergebnis als Balkengrafik //
////////////////////////////////////////


for ($i=0; $i<$anzahl; $i++) {  //fuer jede Option

    echo $option[$i]."&nbsp;&nbsp;&nbsp;<FONT COLOR=\"".$farbe[$i]."\">";  //Option ausgeben und Farbe setzen
    for($j=0; $j<$votes[$i]; $j++) {  //fuer Anzahl der Votes
        echo "|";  //je einen Strich ausgeben
    }
    echo "&nbsp;&nbsp;&nbsp;".$votes[$i]."</FONT><BR>\n";  //Balken zu ende, also Zeilenumbruch
}

////////////////////////////////////
// am Schluss das Auswahlformular //
////////////////////////////////////

echo "<FORM ACTION=\"".$PHP_SELF."\" METHOD=\"Post\">\n";  //Formular anfangen
$i=0;
for ($i; $i<$anzahl; $i++) {  //fuer jede Option
    echo "<INPUT TYPE=\"radio\" NAME=\"radio\" VALUE=\"".$i."\">".$option[$i]."<BR>\n";  //Radiobutton anzeigen
}

echo "<INPUT TYPE=\"Submit\" VALUE=\"Abstimmen\" NAME=\"submitvote\"></FORM>";  //Formularende
?>

MfG
 
Jetzt zeigt er schonmal ne Fehlermeldung an:
Die Pfade sind in Ordnung und ausreichend Rechte vorhanden

Code:
Warning: fopen(umfrage_080905.txt) [function.fopen]: failed to open stream: Permission denied in /var/www/web4/html/umfrage/umfrage.php on line 95

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/web4/html/umfrage/umfrage.php on line 97

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/web4/html/umfrage/umfrage.php on line 97

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/web4/html/umfrage/umfrage.php on line 99

Warning: file() [function.file]: Unable to access umfrage_080905.txt in /var/www/web4/html/umfrage/umfrage.php on line 100

Warning: file(umfrage_080905.txt) [function.file]: failed to open stream: No such file or directory in /var/www/web4/html/umfrage/umfrage.php on line 100
bereits gevoted
 
Code:
Warning: fopen(umfrage_080905.txt) [function.fopen]: failed to open stream: Permission denied in /var/www/web4/html/umfrage/umfrage.php on line 95

Danach zu urteilen sieht es aber nicht so aus, als ob genügend berechtigungen vorhanden sind
 
Zurück