ďťż

[PHP] Cookies

       

Podstrony


telcocafe

Otóż mam skrypt sondy, który po oddaniu głosu, przekierowuje nas na stronę z wynikami sondy i wysyła cookie do kompa.
Na stronach zaincludowałem ten dokument (sondę):
<? if ($sonda != 1) { echo ('<form method="post" action="sonda/dopisz.php">  Jaką partię polityczną popierasz?<br>  <input type="radio" name="odp" value="tak">PO<br>  <input type="radio" name="odp" value="nie">PIS<br>  <input type="radio" name="odp" value="nw">LPR<br>  <input type="radio" name="odp" value="sld">SLD<br>  <center><input type="submit" value="Głosuj" style="background-color: #3DAD1F; color: #000000; border-style: solid; border-color: #0F5618"></center>  </form>'); } else { echo('<br><BR><font color="darkred"><b>Dziękujemy za oddanie głosu!</b></font>'); } ?>
Powinno być tak, że po wykryciu cookie o wartości 1, wywala nam napis:

Dziękujemy za oddanie głosu!
Ale niestety nie wywala tego napisu. Nigdy.
Sprawdzałem, i przeglądarka przyjęła ciacho o wartości 1, tyle, że nie wywala mi napisu. Co tam jest źle?

Dodam, że ten u góry kod jest w katalogu sonda, a reszta, gdzie ma się wyświetlać jest na głównym katalogu (bez nazwy).
Użytkownik sauron edytował ten post 26 czerwiec 2006, 16:08


Zamiast if ($sonda != 1) daj if ($_COOKIE['sonda']!=1)

Hmmm. Imho działa, ale myślę, że mam coś skopane w katalogach.
W głównym katalogu mam pliki strony z zainkludowanym plikiem z sondą:
<html> <body> <? if ($_COOKIE['sonda']!=1) { echo ('<form method="post" action="../sonda/dopisz.php">  Jaką partię polityczną popierasz?<br>  <input type="radio" name="odp" value="tak">PO<br>  <input type="radio" name="odp" value="nie">PIS<br>  <input type="radio" name="odp" value="nw">LPR<br>  <input type="radio" name="odp" value="sld">SLD<br>  <center><input type="submit" value="Głosuj" style="background-color: #3DAD1F; color: #000000; border-style: solid; border-color: #0F5618"></center>  </form>'); } else { echo('<br><BR><font color="darkred"><b>Dziękujemy za oddanie głosu!</b></font>'); } ?> </body> </html>
Ten plik z sondą jest w folderze sonda. Po oddaniu głosu, przenosi Cię do pliku z wynikami, który także jest w folderze sonda, a w tym pliku jest polecenie setcookie. Jeśli dam adres:
http://www.mackowiak...onda/sondak.php
to wszytko działa. (wawala stosowny napis jeśli jest cookie), a jeśli chodzę sobie po głównym katalogu strony to ciągle jest wyświetlona sonda.
(http://www.mackowiak.net.pl) (w dolnym lewym rogu.)
Gdy przeglądałem cookiesy w przeglądarce to mam takie coś:

Ścieżka: /sonda/
Więc chyba te setcookie działa tylko do katalogu sonda, a do głównego nie działa. Co robić? :blink:
(ale namieszałem ;) )


...



Folder Sonda
dopisz.php
<?PHP $file = fopen("sonda.txt","r+"); /*otwieramy plik sonda.txt*/ $linia = fgets($file, 80); $tab = explode("#",$linia); /*zapisujemy linię do tablicy*/ $tbl["tak"] = $tab[0];/*którą zapisujemy do asocjacyjnej*/ $tbl["nie"] = $tab[1]; $tbl["nw"] = $tab[2]; $tbl["sld"] = $tab[3]; ++$tbl[$odp];/*zwiększamy o jeden ilość osób głosujących na daną odpowiedź*/ fseek($file, 0);/*przesuwamy strumień pliku do początku*/ fwrite($file, $tbl["tak"]."#".$tbl["nie"]."#".$tbl[ "nw"]."#".$tbl["sld"]); /*zapisujemy dane do pliku oddzielając je "#"*/ Header("Location: sonda.php");/*przeskakujemy do sonda.php*/ ?>
index.php
<html> <? $path=""; include($path."sondak.php"); ?> </html>
sonda.php
<? setcookie("sonda", "1"); ?> <?PHP $file=fopen("sonda.txt","r"); /*Otwieramy plik sonda.txt*/ $linia=fgets($file, 81); /*pobieramy linię*/ $tbl=explode("#", $linia); /*zamieniamy ją na tablicę*/ $tab["tak"]=$tbl[0]; /*którą zamieniamy na tablicę asocjacyjną*/ $tab["nie"]=$tbl[1]; $tab["nw"]=$tbl[2]; $tab["sld"]=$tbl[3]; $suma = $tab["tak"] + $tab["nie"] + $tab["nw"] + $tab["sld"]; /*wykonujemy obliczenia na zmiennych (wyliczamy procenty)*/ $tak = floor(($tab["tak"] / $suma) * 100); $nie = floor(($tab["nie"] / $suma) * 100); $nw = floor(($tab["nw"] / $suma) * 100); $sld = floor(($tab["sld"] / $suma) * 100); echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"1\"> <tr><td colspan=\"2\">Platforma Obywatelska</td></tr>\n"; echo "<tr><td width=\"255\"><img src=\"linia.GIF\" width=\"". 2*$tak ."\" height=\"10\"></td><td>". $tak ."% (<b>". $tab["tak"]. "</b>)</td></tr> <tr><td colspan=\"2\">Prawo i Sprawiedliwość</td></tr>\n"; echo "<tr><td width=\"255\"><img src=\"linia.GIF\" width=\"". 2*$nie ."\" height=\"10\"></td><td>". $nie ."% (<b>". $tab["nie"]. "</b>)</td></tr> <tr><td colspan=\"2\">LPR</td></tr>\n"; echo "<tr><td width=\"255\"><img src=\"linia.GIF\" width=\"". 2*$nw ."\" height=\"10\"></td><td>". $nw ."% (<b>". $tab["nw"]. "</b>)</td></tr> <tr><td colspan=\"2\">SLD</td></tr>\n"; echo "<tr><td width=\"255\"><img src=\"linia.GIF\" width=\"". 2*$sld ."\" height=\"10\"></td><td>". $sld ."% (<b>". $tab["sld"]. "</b>)</td></tr> <tr><td colspan=\"2\">Łącznie głosów: <b>$suma</b> </table>"; /*pokazujemy wyniki*/ ?>
sondak.php
<html> <body> <? if ($_COOKIE['sonda']!=1) { echo ('<form method="post" action="../sonda/dopisz.php">  Jaką partię polityczną popierasz?<br>  <input type="radio" name="odp" value="tak">PO<br>  <input type="radio" name="odp" value="nie">PIS<br>  <input type="radio" name="odp" value="nw">LPR<br>  <input type="radio" name="odp" value="sld">SLD<br>  <center><input type="submit" value="Głosuj" style="background-color: #3DAD1F; color: #000000; border-style: solid; border-color: #0F5618"></center>  </form>'); } else { echo('<br><BR><font color="darkred"><b>Dziękujemy za oddanie głosu!</b></font>'); } ?> </body> </html>
Zwykły katalog (wcześniejszy niż katalog sonda)
wszytkie pliki.php:
<? $path="sonda/"; include($path."sondak.php"); ?>

Jak dla mnie to chyba musisz wrzucić pliki sondy do głównego katalogu... Inaczej po prostu zapisuje cookie tylko dla katalogu sonda...

Możesz też wysłać cookie przed przejściem na stronę w katalogu sonda i tam tez wysłać cookie ;) Wtedy nie musisz plików przenosić (po prostu dla wysłania tego cookie robisz stronkę co wysyła cookie i od razu header (pamietaj o opóźnieniu buforowania), stronkę taką umieszczasz oczywiście w głównym katalogu) ;) BTW to jak wysyłasz cookie to nadaj mu jakiś czas istnienia bo takto to ono ginie po wyłączeniu przeglądarki i znowu można głosować ;)
Użytkownik .:DzIuDek:. ™ edytował ten post 26 czerwiec 2006, 22:17
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.