Autor Zpráva
leprra
Profil
Zdravím přítomné - mám prosbu o radu ohledně přepínače stylů
tvořím ho pomocí návodu na stránkách
http://www.alistapart.com/articles/phpswitch/

to znamená
1. vytvořím cosi co si zapíše do cookies - můj vybranej styl
---------------------------------------------------------------------- --
switcher.php

<?php
setcookie ('sitestyle', $set, time()+31536000, '/', 'yourdomain.com', '0'); header("Location: $HTTP_REFERER");
?>

(((yourdomain.com = mojestranky.cz))))


2. ve stránkách naklobu něco pro výběr žádaného stylu
-----------------------------------------------------------------
<form action="switcher.php" method="post">
<select name="set">
<option value="default" selected>Default</option>
<option value="red">Crazy Red</option>
</select>
<input type="submit" value="Change Style">
</form>

(((tomu rozumím takto:
vyberu styl >> pošle se to do switcher.php >>
ten to zapise do cookies a ja musím mít na stránkách uložený soubory
default.css / red.css / experiment.css - aby to mělo z čeho vybrat)))

tohle všechno funguje protože kouknu do cookies a vidím tam zapsaný zvolený hodnoty

3. musím do hlavičky všech stránek umístit něco co detekuje ono cookies
-----------------------------------------------------
<link rel="stylesheet" type="text/css" media="screen" title="User
Defined Style" href="<?php echo (!$sitestyle)?'defaultstyle':$sitestyle ?>.css" />

no a tady bude asi nějaká zlá věc, neboť.. se mi stránky nenačtou ani s tím stylem default - zkrátka z?stávají bez stylu
(nevím přesně co definuje to sitestyle - .. (zkoušela uložit jako css defaultstyle.css a taky nic)
=> mohl by mi někdo do situace vnésti trochu světla - zdá se že mi to nějako nemůže ten styl najít
- mám ho danej hned vedle indexu.html

dekuji moc-li
Leprra
krteczek
Profil
jasně:-) register_globals... místo $sitestyle použij $_COOKIE['sitestyle'], mělo ba to fungovat
hm koukám že cookie asi bude nastavena, ale nebude v ní nic... skus dát echo $_COOKIE['sitestyle']; co to vypíše? Podle dosavadního předpokládám že nic :-(
krteczek
leprra
Profil
- mno.. tak jsem přišla na to, že sem do souboru nenapsala .php - je tam <? ?> - tak to je jasný a funguje to
- a přepíná přesně podle návodu

nicméně ja sem nechtěla u každě stránky příponu .php
koukala sem že pixy - to děla tak, že má styl.php a stránky může mít v klidu pořád v html
(http://www.pixy.cz/pixylophone/2003_11_archiv.html#1068200165 )

TEDY: když bych chtěla zachovat návod výše popsanej
(http://www.alistapart.com/articles/phpswitch/ )
musím z každé stránky odkazovat na styl.php

a do stranky styl.php - umístím něco co mi zjišťuje to cookies a najde podle toho styl
=> jde tam použít to od pixyho? - (nebo to jestě nějak zaonačit?)

$css = $HTTP_COOKIE_VARS['Moje-CSS-Cookie'];
if (!$css) $css = 'default.css';
header ("Location: $css");
die();
?>

diky za radu
Leprra
rabbit
Profil
Moc se mi nechce věřit tomu, že má pixy všechny stránky statické a tedy opravdu ".html". Spíš bych to viděl na rewrite_mode.

Oddělení definice stylu do externího souboru má imho 2 funkce. První je oddělení obsahu od formy a druhou je snížení datové náročnosti. Tzn. soubor se styly se "kešuje", nestahuje se při každém načtení stránky ze serveru. Pokud však budeš řešit změnu stylů v externím css souboru "styl.php", nemůžeš ho "kešovat", musíš ho natahovat pokaždé.
error414-
Profil *
1.
$css = $HTTP_COOKIE_VARS['Moje-CSS-Cookie']; je zastaraly zapis pouzivej $_COOKIE

2.
setcookie ('sitestyle', $set, time()+31536000, '/', 'yourdomain.com', '0'); header("Location: $HTTP_REFERER");

yourdomain.com misto tohodle patri domena na ktere to jede, nemusi byt vyplneno, a ta nula take bez secure je vychozi nastaveni.

3.
Postup pro ladeni: stahni si rozsireni do FF na prohlizeni cookies, potom se podivej jestli cookies byl ulozena. A jakou ma hodnotu. Pokud je ulozena spravne zkontroluj jestli je pristupna v php scriptu.

4.
header("Location: $HTTP_REFERER"); je slepe duverovani http protokolu ze nam klent posle svuj referer, napriklad kerio referer filtruje. Proto je lepsi v pripade absence refereru presmerovat na nejakou defaultni stranku

header("Location: ".$target = isset($HTTP_REFERER) ? $HTTP_REFERER : "index.php");
Palmik
Profil *
Ahoj...
Snažil jsem se použít to samé, ale mám problém a to následující, všechno jde jak má, až na to, že se mi neukládají cookies. Když si cookie ručně vytvořím, tak to jde. Jinak ne.
Předem děkuji za nápad...

Jinak
...
<link rel="stylesheet" type="text/css" media="screen" title="User Defined Style" href="<?php echo (!$_COOKIE['sitestyle'])?'default':$_COOKIE['sitestyle'] ?>.css" />
...

...
<li><a href="switcher.php?set=Dark">Dark</a></li>
<li><a href="switcher.php?set=Light">Light</a></li>
...

...
<?php
setcookie ('sitestyle', $set, time()+31536000,
'/', 'blah.com/bloch', '0');
header("Location: $HTTP_REFERER");
?>
...
Toto téma je uzamčeno. Odpověď nelze zaslat.