Tälläinen gallup/poll ilman tietokantaa. Käyttää hyväkseen ihan tekstitiedostoa. Tekee vastauksen yhteydessä cookien, joka estää uudelleenvastaamisen, ei ole varmasti vaikea lisätä ip-osoitteen perusteella vastanneita. Demoa osoitteessa http://koti.mbnet.fi/punppis/koulusivut/poll.php
Muistakaa laittaa uusigallup.php:n salasanatarkistukseen oma hash.
Olen vielä aloittelija php:n parissa, joten kritiikkiä vastaanotetaan.
poll.php
<?php if(file_exists('kys.txt')) { $tiedosto = file('kys.txt'); $id = $tiedosto[0]; if($_COOKIE['vastannut'] == $id) { include('vastaukset.php'); } else { include('vastauslomake.php'); } echo "<br />"; } else { echo "\nKysymystiedostoa ei löytynyt!<br>\n"; } echo "\n<a href=\"uusigallup.php\">Tee uusi gallup!</a>"; ?>
gallupintekija.php
<?php if(isset($_GET['teegallup'])) { $id = time(); $fo = fopen("kys.txt", "w"); fwrite($fo, $id . "\n"); for($x=0;$x <= $_GET['vaihtoehtomaara']; $x++) { fwrite($fo, $_GET[$x] . "|0|\n"); } fclose($fo); } else { echo "ERROR!"; } chmod('kys.txt', 0777); header('location: poll.php'); ?>
kasittelija.php
<?php $tiedosto = file('kys.txt'); $id = $tiedosto[0]; if($_COOKIE['vastannut'] == $id) { echo "Olet vastannut jo!<br>\n"; echo "<a href=\"poll.php\">Takaisin</a>"; } else { $maara = count($tiedosto); $valinta = $_GET['valinta']; $fp = fopen('kys.txt', 'w'); fwrite($fp, "$id"); for($x=1; $x < $maara; $x++) { $osa = explode("|", $tiedosto[$x]); $vaihtoehto = $osa[0]; $vastaus = $osa[1]; if($x == $valinta || $x == 1) { $vastaus++; } fwrite($fp, "$vaihtoehto|$vastaus|\n"); } setcookie("vastannut", $id, time()+640800); fclose($fp); header("location: poll.php"); } ?>
uusigallup.php
<?php echo "\n<form action=\"uusigallup.php\" method=\"get\">"; echo "\n<table>"; echo "\n<tr><td>Salasana</td><td><input type=\"password\" name=\"passu\" /></td></tr>"; echo "\n<tr><td>Vaihtoehtojen lukumäärä</td><td> <input type=\"text\" name=\"vaihtoehtomaara\" /></tr>"; echo "\n<tr><td><input type=\"submit\" value=\"Seuraava vaihe!\" name=\"kakkosvaihe\" /></td></tr>"; echo "\n</table>"; echo "\n</form>"; if(isset($_GET['kakkosvaihe'])) { if(md5($_GET['passu']) == "**HASH TÄHÄN**") { echo "\n<form action=\"gallupintekija.php\" method=\"get\">\n"; echo "\n<table>\n"; echo "\n<tr><td>Aihe: </td><td><input type=\"text\" name=\"0\" /></td></tr>\n"; for($x=1;$x <= $_GET['vaihtoehtomaara']; $x++) { echo "\n<tr><td>Vaihtoehto $x: </td><td><input type=\"text\" name=\"$x\" /></td></tr>\n"; } echo "\n<tr><td><input type=\"submit\" name=\"teegallup\" value=\"Tee gallup!\" /></td></tr>\n"; echo "\n<input type=\"hidden\" name=\"vaihtoehtomaara\" value=\"" . $_GET['vaihtoehtomaara'] . "\" />"; echo "\n</table>\n"; echo "\n</form>\n"; } else { echo "\nSalasana ei kelpaa!<br>\n"; } } ?>
vastaukset.php
<?php $tiedosto = file('kys.txt'); $maara = count($tiedosto); $otsikko = explode("|", $tiedosto[1]); echo "\n<h3>Poll</h3>"; echo "\n<h3>".$otsikko[0]."</h3>"; print("\n<table>"); for($x=2; $x < $maara; $x++) { $osa = explode("|", $tiedosto[$x]); $vaihtoehto = $osa[0]; $vastaus = $osa[1]; $prosentti = round(($vastaus / $otsikko[1]) * 100, 2); echo "\n<tr><td>$vaihtoehto</td> <td><img src=\"bar.php?pituus=" . $prosentti*2 . "\"></td> <td>$vastaus</td><td>$prosentti%</td> </tr>"; } echo "\n<tr><td colspan=\"2\">Vastauksia yhteensä: " . $otsikko[1] . "<td></tr>"; echo "\n</table>"; ?>
vastauslomake.php
<html> <head><title>Poll:. Vastauslomake</title></head> <body> <?php $tiedosto = file('kys.txt'); $maara = count($tiedosto); $otsikko = explode("|", $tiedosto[1]); echo "\n<form action=\"kasittelija.php\" method=\"get\">"; echo "\n<table>"; echo "\n<tr><td>" . $otsikko[0] . "</td></tr>"; for($x=2; $x < $maara; $x++) { $osa = explode("|", $tiedosto[$x]); $vaihtoehto = $osa[0]; echo "\n<tr><td>$vaihtoehto</td> <td><input type=\"radio\" name=\"valinta\" value=\"$x\"></td></tr>"; } echo "\n<tr><td><input type=\"submit\" value=\"Vastaa!\" name=\"vastausnappula\"></td></tr></table></form>"; ?> </body> </html>
bar.php
<?php header('content-type: image/png'); $pituus = $_GET['pituus']; $korkeus = 9; if(!isset($pituus) || $pituus < 2) { $pituus = 2; } $kuva = imagecreate($pituus,$korkeus); $valkonen=imagecolorallocate($kuva,250, 250, 250); $vari=imagecolorallocate($kuva,0,0,0); imageline($kuva,0,0,0,$korkeus,$vari); imageline($kuva,$pituus-1,0,$pituus-1,$korkeus-1,$vari); imageline($kuva, 0, $korkeus-1, $pituus, $korkeus-1, $vari); imageline($kuva, 0, 0, $pituus, 0, $vari); imagepng($kuva); imagedestroy($kuva); ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.