PHP styleswitch werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Ik wil een styleswitch op mijn site implementeren, maar het werkt niet. Het enige wat ik zie is een lege pagina.

Op de pagina waarnaar de stylesheet verwezen wordt:
PHP:
1
<link rel="stylesheet" type="text/css" href="<?php echo (!$style)?'stylegreen':$style ?>.css" />


styleswitch.php:
PHP:
1
2
3
4
<?php 
setcookie('style', $style, time()+31536000, '/', domein.com, '0');
header("Location:"$_SERVER['HTTP_REFERER']");
?>


Links om de style te switchen:
PHP:
1
2
<a href="styleswitch.php?style=stylegreen">Green</a><br />
<a href="styleswitch.php?style=styleblack">Black</a>


Als ik op één van de de links klik, krijg ik dus een lege pagina te zien. Op de één of andere manier wordt de cookie niet gezet, maar ik weet niet waarom. Wat zie ik over het hoofd?

EDIT:
Ik heb:
PHP:
1
header("Location:"$_SERVER['HTTP_REFERER']");

vervangen door:
PHP:
1
header('Location: '.$_SERVER['HTTP_REFERER']);


Ik word nu wel terug gebracht naar de pagina waarvan ik vandaan kwam, maar de style is niet veranderd. stylegreen.css en styleblack.css staan wel gewoon in de root.

[ Voor 17% gewijzigd door Ruzor op 05-02-2007 22:00 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Je hebt een fout in je code:

PHP:
1
2
3
setcookie('style', $style, time()+31536000, '/', domein.com, '0');
header("Location:"$_SERVER['HTTP_REFERER']");
                ^^^

[ Voor 8% gewijzigd door Room42 op 05-02-2007 21:58 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Ja dat zag ik ook toen ik de code postte. Maar dat heb ik veranderd en nog werkt het niet :/

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Is het trouwens wel handig om de referer te gebruiken? Die kan geblokkeerd worden door firewalls enzo. Je kunt misschien beter de referer als cookie of als GET-variabelen meesturen.
Misschien is dat trouwens ook wel jouw probleem. Doe eens een echo $_SERVER['HTTP_REFERER'].

Edit: Oh ok, hij redirect dus wel nu.
stylegreen.css en styleblack.css staan wel gewoon in de root.
En jouw script dus ook? Anders moet je even een "/" tussen href=" en <?php echo zetten

[ Voor 29% gewijzigd door Room42 op 05-02-2007 22:11 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 21:11
aanvulling op sjaakduhuuhl
quote uit php.net
http://www.php.net/manual...reserved.variables.server
'HTTP_REFERER'
The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.

Acties:
  • 0 Henk 'm!

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Als je de $style nu eens ophaalt met $_GET['style'], in het geval je dat nog niet gedaan hebt.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Rowanov: $_COOKIE bedoel je neem ik aan? ;)

En dit hoort uiteraard in Programming ...

[ Voor 33% gewijzigd door crisp op 05-02-2007 23:00 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Ik zat nog een stap daarvoor, met het ophalen van de variabele uit de querystring, maar dat zou idd de volgende zijn :P

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

ah ja, in setcookie.php moet dat uiteraard $_GET zijn; gevalletje register_globals dus weer...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Ik ben erachter dat de cookie simpelweg niet gezet wordt. Ik wel een andere manier proberen om de cookie uit te lezen, maar als deze niet gezet wordt, heeft dat nog even geen zin.

Voor de redirect zal ik een andere oplossing zoeken, hij doet het wel, maar die schijnt dus niet betrouwbaar te zijn. Vooralsnog gebruik ik even een andere location.

Het script staat inderdaad ook in de root, maar waarom wordt die cookie niet gezet?

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Met dank aan de opmerkingen hierboven heb ik het zo opgelost:

Op de pagina waarnaar de stylesheet verwezen wordt:
PHP:
1
2
3
4
5
6
7
8
9
10
<link rel="stylesheet" type="text/css" href="<?php
if(isset($_COOKIE['sitestyle']))
{
 echo ($_COOKIE['sitestyle']);
}
 else 
{
 echo "green";
} ?>.css" 
/>


styleswitch.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$style = $_GET['style'];
    
//array with existing styles
$existing_styles = Array('green', 'black');

if( in_array($style,$existing_styles) ) {
setcookie("sitestyle", $style, time()+31536000, '/', 'domein.com', '0');
}
else {
setcookie("sitestyle", green, time()+31536000, '/', 'domein.com', '0');
}

header('Location: '.$_SERVER['HTTP_REFERER']);
?>


Nu nog even een alternatief voor die HTTP_REFERER zoeken. Iig bedankt!

[ Voor 4% gewijzigd door Ruzor op 06-02-2007 01:01 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 21:11
Misschien doormiddel van
PHP:
1
$_SERVER['PHP_SELF']

op de pagina en die dan mee sturen naar styleswitch.php via post,get of session ofzo?
Pagina: 1