Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]problem z sondą
shreker
post
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


Witam Panowie.
Mam problem ze skryptem sondy. Przerobiłem go co nieco z sondy czteroplikowej na dwuplikową, i z dwóch opcji do wyboru na 3 opcje, badz więcej. Mam jednak problem z ciasteczkiem które blokuje głosowanie - zaraz po uruchomieniu wywala mi że "już głosowałem". Kombinowałem, ale coś mi nie wychodzi, domyślam się że ciasteczko jest zapisywane w niewłaściwym momencie, tylko nie wiem już w którym miejscu skryptu ma ono być umieszczone.
Kod
if (isset($_COOKIE['mojasonda']))
{
   echo("Już głosowałeś!");
   /*warunek sprawdza czy istnieje w przeglądarce ciasteczko o nazwie
   "mojasonda", jeśli tak to nie pozwala na ponowne oddanie głosu*/
}
else

{
   /*Początek interpretowanego bloku */

$plik = fopen("wyniki.txt", "r");
/*otwarcie do odczytu pliku z wynikami*/

$dane = fread($plik, filesize("wyniki.txt"));
/*odczytanie z pliku z wynikami danych i zapisanie ich do
zmiennej $dane odczytanych zostanie tylko tyle znaków ile
istnieje w pliku, nie mniej, nie więcej*/

$wyniki = split(":", $dane);
/*wydzielenie dwóch wyników, rozdzielenie zawartości zmiennej
po znaku dwukropka*/

fclose($plik);
/*zamknięcie pliku*/

if($_POST['glos'] == 1)
    $wyniki[0] += 1;
/*jeśli użytkownik głosował "za" marchewką,
czyli zmienna "glos" ma wartość jeden to do
wyników za dopisywany jest jeden głos*/

else if ($_POST['glos'] == 2)
    $wyniki[1] += 1;
/*analogiczna operacja do poprzedniej, ale dodawany jest
głos "przeciw"*/

else if ($_POST['glos'] == 3)
    $wyniki[2] += 1;
    
else
    
/*instrukcja dla reszty przypadków, które teoretycznie nie
powinny nastąpić*/

$plik = fopen("wyniki.txt", "w");
/*ponowne otwarcie pliku z wynikami, tym razem do zapisu, plik
jest wyzerowany*/

flock($plik, 2);
/*zablokowanie pliku przed innymi skryptami, które będą chciały
zapisywać*/

fwrite($plik, "$wyniki[0]:$wyniki[1]:$wyniki[2]:", 200);
/*zapis wyników do pliku, 200 znaków z powodzeniem wystarczy*/

flock($plik, 3);
/*zdjęcie blokady z pliku*/

fclose($plik);
/*zamknięcie pliku*/


header("Location: sonda.php");
/*przekierowanie przeglądarki do pliku pokaz.php*/

/*koniec interpretowanego bloku*/
   setcookie("mojasonda", "glosowalem", time()+ 604800);
   /*to polecenie wysyła do przeglądarki ciasteczko o nazwie "mojasonda"
   i zawartości "glosowalem", ciasteczko będzie ważne 604800 sekund,
   czyli równy tydzień, po tygodniu będzie można znowu glosować*/

   header("Location: sonda.php");
}

echo '
<form action="sonda.php" method="post">
<p>Co sądzisz o gotowanej marchewce?<br />
<input type="radio" name="glos" value="1" />Uwielbiam<br />
<input type="radio" name="glos" value="2" />Nienawidzę<br />
<input type="radio" name="glos" value="3" />Niewiem<br />
<input type="submit" value="Zagłosuj" />
</p>
</form>
';


$plik = fopen("wyniki.txt", "r");
/*otwarcie pliku z wynikami do odczytu*/

$dane = fread($plik, filesize("wyniki.txt"));
/*odczytanie wszystkich bajtów z pliku*/

fclose($plik);
/*zamknięcie pliku*/

$wyniki = split(":", $dane);
/*rozdzielenie wyników*/

$suma = $wyniki[0] + $wyniki[1] + $wyniki[2];
/*zsumowanie wyników*/

?>

<table>
<tbody>

<tr><td>Lubiący gotowaną marchewkę:</td><td>
<?php
echo(round($wyniki[0]/$suma * 100));
/*wyświetlenie zaokrąglonej procentowej ilości głosów,
znak procenta jest w następnej linijce*/

?>
%</td><td>

<img src="pasek.gif" alt="pasek.gif"
title="Za marchewką!" height="10" width="
<?php
echo(round($wyniki[0]/$suma * 100));
/*podobnie jak wcześniej, tyle, że wyświetlona liczba będzie
szerokością graficznego paska, w tym wypadku liczba 100 jest
maksymalną szerokością paska */

?>
" /></td></tr>

<tr><td>Nienawidzący gotowanej marchewki:</td><td>
<?php
echo(round($wyniki[1]/$suma * 100));
?>
%</td><td>
<img src="pasek.gif" alt="pasek.gif"

title="Przeciw marchewce!" height="10" width="
<?php
echo(round($wyniki[1]/$suma * 100));
?>
" /></td></tr>

<tr><td>Nienawidzący gotowanej marchewki:</td><td>
<?php
echo(round($wyniki[2]/$suma * 100));
?>
%</td><td>
<img src="pasek.gif" alt="pasek.gif"

title="Przeciw marchewce!" height="10" width="
<?php
echo(round($wyniki[2]/$suma * 100));
?>
" /></td></tr>
</tbody>

</table>
<p>Ogołem oddano głosów: <?php echo($suma); ?>.</p>
Go to the top of the page
+Quote Post

Posty w temacie
- shreker   [PHP]problem z sondą   19.02.2009, 23:15:32
- - Foxx   1. Używaj prawidłowych znaczników bbcode, bardzo c...   20.02.2009, 00:17:11


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 19:08