18-02-2012, 17:42
- żeby oddać głos trzeba podać 5-znakowy kod z listy (lista w pliku z kodami, wygenerowanymi losowo ciągami 5 znaków, każdy kod w osobnej linii pliku, kody nie powtarzają się mechanizm sprawdza, czydany kod występuje na liście, a jeśli tak, zalicza głos i usuwa kod z listy)
- jedna osoba może oddać wiele razy głos, ale za każdym razem musi użyć nowego kodu
mam straszny problem żeby to zrobić wg. powyższych wytycznych;/
jak na razie zrobiłem tak:
zrobiłem tak, jednak nie działa do końca ;/
tu można zobaczyć jak to wygląda na stronie jak na razie:
http://p13.nsf.pl/sondaPHP/index.php
bardzo proszę o pomoc
- jedna osoba może oddać wiele razy głos, ale za każdym razem musi użyć nowego kodu
mam straszny problem żeby to zrobić wg. powyższych wytycznych;/
jak na razie zrobiłem tak:
Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="pl" />
<meta name="Author" content="RW" />
<title>Sonda</title>
</head>
<body>
<?php
// ustalenie szerokosci w pikselach,
// jesli plik graficzny ma 1 px szerokosci
$szerokosc=200;
function prezentacja($szerokosc)
{
// odczyt pliku z pytaniem i odpowiedziami do tablicy $tresc
$tresc=explode("||",file_get_contents("tresc.php"));
// wyznaczenie liczby wierszy, ktora stanowia ilosc odpowiedzi plus pytanie
$ilosc=count($tresc);
// odczyt pliku z glosami
$glos=explode("||",file_get_contents("glosy.php"));
$suma=0;
for($c=0;$c<$ilosc;$c++)
$suma=$suma+$glos[$c];
echo '<p>'.$tresc[0];
for($c=1;$c<$ilosc;$c++)
{
echo '<BR />'.$tresc[$c];
$c--;
echo '<BR /> [ '.$glos[$c].' ] <BR />';
// graficzne wyswietlenie wynikow
for($i=0;$i<$glos[$c]/($suma+1)*$szerokosc;$i++)
echo '<img src="img.php" alt="">';
$c++;
}
echo '<BR /><BR />Suma głosów: '.$suma.'.</p>';
}
// jezeli wyslano dane z formularza
if ($wybor)
{
// odczyt pliku z pytaniem i odpowiedziami
$tresc=explode("||",file_get_contents("tresc.php"));
$ilosc=count($tresc);
// odczyt pliku z glosami
$glos=explode("||",file_get_contents("glosy.php"));
// uaktualnienie liczby glosow w pliku glosy.php
$fp=fopen("glosy.php","w");
// zwiekszenie o "1" odpowiedniego elementu tablicy, na ktory zaglosowano
$glos[$wybor-1]=$glos[$wybor-1]+1;
// zapis do pliku
fwrite($fp,implode("||",$glos));
fclose($fp);
}
// odczyt pliku z pytaniem i odpowiedziami
$tresc=explode("||",file_get_contents("tresc.php"));
$ilosc=count($tresc);
// odczyt pliku z glosami
$glos=explode("||",file_get_contents("glosy.php"));
/*POKAZUJE SONDE*/
echo '<p>'.$tresc[0].'<map glosuj="glosuj">
<form action="" method="post">
<table align="center" style="text-align:center;">
<tr>
<td>1.<img src="./zdjecia/auto1.jpg" alt="" glosuj="ramka"/></td>
<td>2.<img src="./zdjecia/auto2.jpg" alt="" glosuj="ramka"/></td>
<td>3.<img src="./zdjecia/auto3.jpg" alt="" glosuj="ramka"/></td>
<td>4.<img src="./zdjecia/auto4.jpg" alt="" glosuj="ramka"/></td>
<td>5.<img src="./zdjecia/auto5.jpg" alt="" glosuj="ramka"/></td>
</tr>
<tr>
<td>6.<img src="./zdjecia/auto6.jpg" alt="" glosuj="ramka"/></td>
<td>7.<img src="./zdjecia/auto7.jpg" alt="" glosuj="ramka"/></td>
<td>8.<img src="./zdjecia/auto8.jpg" alt="" glosuj="ramka"/></td>
<td>9.<img src="./zdjecia/auto9.jpg" alt="" glosuj="ramka"/></td>
<td>10.<img src="./zdjecia/auto10.jpg" alt="" glosuj="ramka"/></td>
</tr>
</table>
<div>
<input type="radio" name="wybor" value="1" /> nr 1.
<input type="radio" name="wybor" value="2" /> nr 2.
<input type="radio" name="wybor" value="3" /> nr 3.
<input type="radio" name="wybor" value="4" /> nr 4.
<input type="radio" name="wybor" value="5" /> nr 5.
<input type="radio" name="wybor" value="6" /> nr 6.
<input type="radio" name="wybor" value="7" /> nr 7.
<input type="radio" name="wybor" value="8" /> nr 8.
<input type="radio" name="wybor" value="9" /> nr 9.
<input type="radio" name="wybor" value="10" /> nr 10.
</div>
<p></p><div><br/>Wpisz hasło:<br/><input type="text" name="haslo" /><input type="submit" name="glosuj" value="Głosuj" /><br/><br/></form></map></p>';
/*POKAZUJE WYNIKI*/
echo prezentacja($szerokosc);
/*------------------------------------ODTĄD MAM PROBLEM----------------------------------------------------------------*/
//TUTAJ KOD SPRAWDZA CZY JEST HASŁO W PLIKU kody.txt I JAK JEST TO USUWA JE STAMTĄD
$wpisanyKlucz = htmlspecialchars(trim($_POST['haslo']));
$kody = file('./kody.txt');
if($klucz = in_array($wpisanyKlucz, $kody))
{
unset($kody[$klucz]);
file_put_contents('./kody.txt', implode("\n", $kody));
// TUTAJ CHCIAŁEM ZROBIĆ ŻEBY PO KLIKNIĘCIU 'glosuj' SPRAWDZAŁO BŁĘDY I WYSYŁAŁO ERROR WARUNKOWO
$wyslij = $_POST['glosuj'];
$empty = '';
if($wyslij)
{
if (empty($haslo))
{
$error = "Nie wpisałeś hasła<br/>";
$haslo = $empty;
}
elseif (strlen($haslo) != 5)
{
$error .="hasło musi mieć 5 znaków<br/>";
$haslo = $empty;
}
if (empty($error))
{
$error .= "Twoja głos został oddany";
}
}
else
{
$error .= "Wystąpił błąd podczas głosowania, spróbuj później.";
}
}
//TU MIAŁBY SIĘ WYŚWIETLAĆ ERROR
echo $error;
?>
</body>
</html>
zrobiłem tak, jednak nie działa do końca ;/
tu można zobaczyć jak to wygląda na stronie jak na razie:
http://p13.nsf.pl/sondaPHP/index.php
bardzo proszę o pomoc