Mailinglisten-Archive |
Nochmal mit aussagekräftigerem Subjekt: Hallo Leute, habe ein großes Problem, ich hab eine Passwortgeschützte Umfrage gestartet, nur leider läßt sich der Schutz ohne Probleme umgehen. Das Problem ist, wenn kein Passwort eingetragen wird, lehnt er eine Eintragung ab, wenn irgendwas eingetragen wird, gehts aber, ohne das der Vergleich mit der Datei $titel.pwd geklappt haben kann... Ach ja, die Passwort-Datei enthält alle Passwörter, getrennt durch ein µ. Diese Passwörter wurden an die Newsletterempfänger, die an dem Voting teilnehmen dürfen verschickt... Also wenn ihr mir helfen könntet, es ist sehr dringend, da einige schon diese "Lücke" nach gutdünken ausnutzen! Hier das Script in erweiterter Dokumentation: //Wenn noch keine Daten übermittel wurden: if(!isset($submit)){ ?> <b>Trefft eure Auswahl!</b><br><form action="<? $PHP_SELF; ?>" method="post"><table><tr><td> <? //Auswahldatei wird aufgerufen! $titelfile = "data/admin/$titel.dat"; $artitel =file($titelfile); $artitel[3]=explode("µ",$artitel[3]); // Passwortabfrage für den Fall "alle" umgehen $logok = (int)$artitel[2]; //Auswahlformular for($i=0;$i<$artitel[1];$i++){ echo '<input type="Radio" name="uservote" value="'.$i.'"> '.$artitel[3][$i]."<br>";} //Übermittlung des Titels echo '<input type="hidden" name="titel" value="'.$titel.'">'; //Übermittlung der Art der Umfrage echo '<input type="hidden" name="logok" value="'.$logok.'">'; //Passwortabfrage if ($logok == 1){ echo '<br>Bitte Passwort eingeben:'; echo ' <input type="Text" name="pwd" value="" size="6" maxlength="8"><br>'; } // Testausgabe //print_r($artitel); ?></td></tr></table><br><a href="allvotes.php">zurück</a> <input type="Submit" name="submit" value="Abstimmen"></form></center> <? } else { //wichtig, Datei mit Möglichkeiten auslesen $filename = "data/admin/$titel.dat"; $artitel = file($filename); if((int)$logok == 1) { //Daten auslesen $pwdfile = "data/admin/$titel.pwd"; $dateiarray = file($pwdfile); //Standardwerte für $i und $lokok1 setzen $i=0;$logok1=0; $dateiarray = explode("µ",$dateiarray[0]); $anzahl = count($dateiarray); //Passwort überprüfen (Die Fehlerschleife?!?) while($i<$anzahl && $logok1!=1){ if($pwd === $dateiarray[$i]){ $nummer = $i; $logok1=1; echo $i; } $i++;} //Logok =1 schalten, falls $logok1 =0 oder kein Passwort eingegeben! if(($logok1!=1) && ($pwd=="")){ echo "Passwort falsch, bitte versuche es noch einmal!<br> <a href=\"uservote.php?titel=$titel\">zurück</a>"; $logok=1;} // Für $logok1=1 wird $logok = 0 gesetzt und die Eintragung wird damit ernöglicht! else { //Löscht das eingegebene Passwort aus der Liste und speichert //die modifizierte Passwortdatei ab! unset($dateiarray[$nummer]); array_pop($dateiarray); $file = fopen($pwdfile,"w"); for($i=0;$i<count($dateiarray);$i++){ fputs($file,$dateiarray[$i]."µ");} fclose($file); $logok=0; }} if((int)$logok == 0) { echo "Vielen Dank für Deine Stimmabgabe!<br> <a href=\"allvotes.php\">zurück</a> | <a href=\"ergebnis.php?titel=$titel\">zum vorläufigen Stand</a>"; //Modifikation der Datei $titel.dat, aktualisierung des Votes $artitel[4] = explode("µ",$artitel[4]); $artitel[4][$uservote]++; $artitel[4] = implode("µ",$artitel[4]); //Abspeichern des aktualisierten Arrays $file = fopen($filename,"w"); for($i=0;$i<count($artitel);$i++){ fputs($file,$artitel[$i]); } fclose($file); } } ?> Gruß, Euer Till Schrader -- ** http://www.php-center.de ** Die PHP-Liste: mailto: php_(at)_phpcenter.de http://lists.phpcenter.de/mailman/listinfo/php
php::bar PHP Wiki - Listenarchive