Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd logiczny...
Forum PHP.pl > Forum > PHP
IMP
Witam

Napisalem skrypt ktory z zalorzenia ma dzialac w ten oto sposob ze po nacisnieciu na link przenosi mnie do tej samej strony tyle tylko ze z innym css. Wykozystalem do tego ciasteczka i GET.
Oto srkrypt:
  1. <?php
  2. if (empty($_COOKIE['ciacho_css']) && empty($_GET['get_css']))
  3. {
  4. $css = 'style';
  5. setcookie('ciacho_css', $css , time()+60*60*24*7);
  6. }
  7.  else {
  8.  IF (!empty($_GET['get_css']))
  9. {
  10. $css = $_GET['get_css'];
  11. setcookie('ciacho_css', $css , time()+60*60*24*7);
  12. }
  13.  
  14.  }
  15. ?>



a w samym html :

  1. <?php
  2. echo '<link rel="Stylesheet" type="text/css" href="'. $_COOKIE['ciacho_css'] .'.css" >';
  3. ?>



Niestety cos nie dziala, naciskam na link i przenosi mnie znowu do tej samej strony i dopiero po 2 nacisnieciu css sie zmienia. To dziala w obie strony.

www.e-mkk.org strona na ktorej umieszczony jest kod.
Exek
Cytat z naszej kochanej dokumentacji php:

Common Pitfalls:
  • Cookies will not become visible until the next loading of a page that the cookie should be visible for. To test if a cookie was successfully set, check for the cookie on a next loading page before the cookie expires. Expire time is set via the expire parameter. A nice way to debug the existence of cookies is by simply calling print_r($_COOKIE);.
Po polskawemu: ciacha widoczne dopiero po następnym załadowaniu strony.
IMP
Macie jakas propozycje jak to rozwiazac?? sad.gif
Exek
  1. <?php
  2. if (isset($_REQUEST['stylesheet'])) 
  3. {
  4. $stylesheet = $_REQUEST['stylesheet'];
  5. }
  6. else
  7. {
  8. $stylesheet = 'domyslny_arkusz_styli';
  9. }
  10. echo '<link rel="Stylesheet" type="text/css" href="'.$stylesheet.'.css" >';
  11. ?>


  1. <?php
  2. if (isset($_GET['stylesheet'])) 
  3. {
  4. setcookie('stylesheet', $_GET['stylesheet'], time()+60*60*24*7);
  5. }
  6. ?>

To chyba będzie działać (pisane z palca)
IMP
Niestety nie działa:/
Exek
a zmieniłeś link?
twojastrona.php?stylesheet=moj_styl
IMP
Jeju zeczywiscie. Dzeki wielki. Jak moglbym cie prosic o wytlumaczenie jak to dziala bo raczej nie rozumiem:)
Exek
  1. <?php
  2. //sprawdzamy czy do skryptu zostala przekazana zmienna o nazwie stylesheet (np z _GET, _COOKIE)
  3. //czyli po kliknieciu na linka odbierze wartosc z _GET, a po przeladowaniu strony 
    zaczną działać ciacha
  4. if (isset($_REQUEST['stylesheet'])) 
  5. {
  6. //jesli tak to ustawiamy arkusz styli z tej zmiennej
  7. $stylesheet = $_REQUEST['stylesheet'];
  8. }
  9. else
  10. {
  11. //jesli nie to wypisujemy domyslny
  12. $stylesheet = 'domyslny_arkusz_styli';
  13. }
  14. echo '<link rel="Stylesheet" type="text/css" href="'.$stylesheet.'.css" >';
  15. ?>


  1. <?php
  2. // jezeli przekazano zmienna _GET np. z linka
  3. if (isset($_GET['stylesheet'])) 
  4. {
  5. // to ustaw ciacho
  6. setcookie('stylesheet', $_GET['stylesheet'], time()+60*60*24*7);
  7. }
  8. ?>
IMP
Jednak cos jest nie tak. www.e-mkk.org pierwsze menu z lewej, pierwszy link przenosi zmienan get po nacisnieciu jego zmienia sie menu ale jak juz sie zmieni i jestesmy na tej zmienionej podstronie i naciskamy kazzdy inny link lub wejdziemy na nowo na strone to wraca spowrotem do poprzedniego stanu. Jakby ciasteczka juz nie obowiazywaly.
Exek
A ciastko wysyłasz na początku strony, przed czymkolwiek, czy jak mi się wydaje wpierniczyłeś wszystko w blok menu?
IMP
Nie nie skadze, setcooki dalem wczesniej do index.php (jest to cms) a reszte do TPL swojej skurki.  Blad poprawilem ale teraz znowu jest tak jak wczesniej tzn trzeba 2 razy kliknac:/
Exek
  1. <?php
  2. if (isset($_GET['stylesheet'])) 
  3. {
  4. $stylesheet = $_GET['stylesheet'];
  5. }
  6. elseif (isset($_COOKIE['stylesheet'])) 
  7. {
  8. $stylesheet = $_COOKIE['stylesheet'];
  9. }
  10. else
  11. {
  12. $stylesheet = 'domyslny_arkusz_styli';
  13. }
  14. echo '<link rel="Stylesheet" type="text/css" href="'.$stylesheet.'.css" >';
  15. ?>


Heh.. moj szczwany sposób z REQUEST nie działał po 2gim kliknięciu w linka winksmiley.jpg... ide kawe sobie zrobic tongue.gif
IMP
OŁ MEEEN WIELDZIE BUZIAKI CI SIE NALEZA ::************ winksmiley.jpg

Dzieki:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.