ďťż
Podstrony
|
telcocafeOtóż 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 |
|||
Sitedesign by AltusUmbrae. |