[PHP] Styleswitch werkt niet meer in directory

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Heya

Ik heb een zeer vervelend probleempje..

Ik heb dus een styleswitch scriptje gemaakt voor op mijn pagina.. Alles werkt goed en aardig op de pagina's wie in dezelfde directory staan als het styleswitchs script (bestaande uit header.php en Styleswitcher.php.. Maar zodra de style wil switchen van een pagina wie een map "verder" (dus een andere map) zit, werkt het scriptje niet meer.. Nu is mijn vraag, waarom het niet meer werkt.. En hoe ik dat op kan lossen..

Hier de codes

header.php
(alleen het stylesheet gedeelte)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- Stylesheet inlezen-->
<?php
//--> Controleren of de cookie bestaat
if(isset($_COOKIE['style']))
//--> Hij bestaat wel, laad de style uit een  cookie
$styleCookie = $_COOKIE['style'];
else
//--> Hij bestaat niet, laad de default stylesheet
$styleCookie = "style1" ;

$styleSheet  = "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.r3con.nl/nick/site/css/$styleCookie.css\" media=\"screen\" />\n";

echo $styleSheet;
?>
<!-- End ofStylesheet inlezen -->
table>
<tr>
    <td align="left" class="style"><a href="http://www.r3con.nl/nick/site/Styleswitcher.php?style=style1">[img]"http://www.r3con.nl/nick/site/images/wit.GIF"></a></td>
    <td[/img]<a href="http://www.r3con.nl/nick/site/Styleswitcher.php?style=style2">[img]"http://www.r3con.nl/nick/site/images/zwart.GIF"></a></td>
</tr>
</table[/img]


Styleswitcher.php
PHP:
1
2
3
4
5
6
7
<?php
$theStyle    = $_GET["style"];
setcookie("style", $theStyle, time()+36000, "/", "");
$referring_url = $_SERVER['HTTP_REFERER'];    // url waar je vandaan kwam
header("Location: $referring_url");
exit;
?>


Hier de betreffende paginas:
Hier werkt het wel: http://www.r3con.nl/nick/site/index.php
Hier niet: http://www.r3con.nl/nick/site/friends/ramon.php

Links naar stylesheets
http://www.r3con.nl/nick/site/css/style1.css
http://www.r3con.nl/nick/site/css/style2.css

Nog even voor de duidelijkheid, hier de mapstructuur

r3con.nl/nick/site/Styleswitcher.php
r3con.nl/nick/site/Header.php
r3con.nl/nick/site/index.php (werkt wel icm met style selector)
r3con.nl/nick/site/css/ -- Stylesheets
r3con.nl/nick/friends/ramon.php (werkt nieticm met style selector)

[ Voor 64% gewijzigd door Enfer op 22-11-2005 18:31 . Reden: Links erbij gezet ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Staat je script "een map verder", of je stylesheet? Ah, je script dus.

Kijkt je tweede script wel in een bestaande map naar die stylesheets?

[ Voor 49% gewijzigd door NMe op 21-11-2005 19:48 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Mijn stylesheets staan een map verder, dat is niet het probleem...

De pagina waar het niet op wil laden staat ook een map verder, en dat is volgens mij het probleem..


Yup, hij include namelijk de header.php, en daarin staat zoals je ziet de direct link naar de stylesheets..

[ Voor 27% gewijzigd door Enfer op 21-11-2005 19:50 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wanneer je een script include worden de paden relatief aan het script dat het script include. Dit is dus gewoon gedrag by design. Neem gewoon een extra variabele op voor de directory, of lees die uit met een PHP-functie.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Ik heb nu mijn header veranderd naar dit
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//--> Controleren of de cookie bestaat
if(isset($_COOKIE['style']))
//--> Hij bestaat wel, laad de style uit een  cookie
$styleCookie = $_COOKIE['style'];
else
//--> Hij bestaat niet, laad de default stylesheet
$styleCookie = "style1" ;

$link        = "http://www.r3con.nl/nick/site/css/";
$styleSheet  = "<link rel=\"stylesheet\" type=\"text/css\" href=\"$link$styleCookie.css\" media=\"screen\" />\n";

echo $styleSheet;
?>


Ik heb nu dus zoals -NMe- zei, de directory in een variabele gezet, maar dat wil nog niet echt helpen merk ik?
Ik kan namelijk nog steeds niet van style switchen...
Wanneer je een script include worden de paden relatief aan het script dat het script include.
Is dit ook zo wanneer je, zoals ik, directe links naar de bestanden hebt staan?

[ Voor 31% gewijzigd door Enfer op 21-11-2005 20:26 . Reden: Reactie op antwoord van -NMe- ]


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
[schop]
Heeft echt niemand een ideetje?

K heb er ook al met een vriend naar gekeken.. maar we kwamen er niet uit...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als je style2 selecteert, dan wordt je cookie niet goed gevuld. Hij drukt namelijk nog steeds gewoon style1 af. Je zal dus het zetten van die cookie even moeten controleren en wat gaan debuggen. Wat staat er daadwerkelijk in $_COOKIE['style']? Wordt dat wel goed overgezet vanuit de querystring? Is de code ergens conditioneel, waardoor je in een verkeerde vertakking van je script komt? Kortom, debuggen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
De cookie wordt wel goed gezet (ik heb met firefox de inhoud van de cookie bekeken), kijk eens wat de $_COOKIE variabele bevat bij het ophalen (mbv var_dump ofzo). Wordt de $_COOKIE variabele misschien eerder op je pagina (ramon.php) leeggemaakt ofzo?

[ Voor 23% gewijzigd door Borizz op 22-11-2005 22:43 ]

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Nee, het enige wat met cookies gebeurt heb ik hier gepost..
Ik verwacht sowiezo dat het probleem het in de map-structuur zit.. Als ik namelijk in header.php een variabele zet, en die wil ik openen op een pagina in een map verder (bv ook in ramon.php) werkt het ook niet, terwijl de variabele wel werkt op een pagina in dezelfde map als header.php....

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Het puur in een variabel gooien van je directory heeft natuurlijk geen voordeel boven het direct gebruiken van die waarde. Als beide stylesheets in een andere directory staan zou ik het gehele pad in de cookie (en default waarde) zetten.

Gebruik verder eens var_dump of print_r en print statements om alle waarden van je variabelen uit te printen. Dan zie je welke var welke waarde heeft en heb je het probleem vrij snel opgelost. Kijk daarnaast eens naar de source van je pagina en kopieer de url van je stylesheet in de adresbalk om te testen of het bestandje wel echt gevonden wordt.

Trouwens, mischien een handig constructie voor je:
PHP:
1
$styleCookie = isset($_COOKIE['style']) ? $_COOKIE['style'] : "default/stylesheet.css";

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
ok..

op ramon.php (een pagina waar de style niet werkt) heb ik vardump gedaan...
PHP:
1
var_dump ($styleSheet);

en de output was:
code:
1
NULL

Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Ik heb een oplossing gevonden..

Ik zet nu in elke directory gewoon de header.php....
Het is wel een beetje omslachtig, maar ik weet zo geen andere oplossing...

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Lijkt me toch duidelijk wat het probleem is? Je geeft in die pagina $styleSheet gewoon nergens een waarde.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
PHP:
1
2
3
$styleSheet  = "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.r3con.nl/nick/site/css/$styleCookie.css\" media=\"screen\" />\n";

echo $styleSheet;


zie ook beginpost..

Dit staat dus in mijn include (header.php) wie ik op elke pagina van mijn site zet...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En header.php include je in een functie? Waar doe je precies die var_dump dan?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Die var dump heb ik in ramon.php gezet...

[ Voor 5% gewijzigd door Enfer op 25-11-2005 16:40 . Reden: op=in ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Voor of na de include? Als je die var_dump na de include hebt gedaan, dan kun je onmogelijk NULL als uitvoer krijgen, mits je in dezelfde scope werkt, en niet ergens in een andere vertakking van je code zit.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Sorry, maar ik heb um echt NA de include gezet

zoiets dus...

PHP:
1
2
include ('header.php');
var_dump ($styleSheet);


edit:

K ga nu ff eten, dus reageer ietsjes later ;)

[ Voor 24% gewijzigd door Enfer op 25-11-2005 16:50 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Daarmee zeg je nog niets over de scope en de mogelijkheid van conditionele statements die de flow van je programma kunnen beïnvloeden. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Op mijn site werkt het nu btw wel.. omdat ik mijn oplossing heb toegepast.. maar ik ben altijd in voor een handiger, betere, nettere en makkelijkere oplossing :)

ok ik zal wel ff mijn hele header en ramon.php plaatsen.. en mijn footer.php

header.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html> 
<head> 
<meta http-equiv="content-type" 
content="text/html; charset=ISO-8859-1">
<meta name="keywords" content="">
<title></title>
<!-- Stylesheet inlezen-->
<?php
//--> Controleren of de cookie bestaat
if(isset($_COOKIE['style']))
//--> Hij bestaat wel, laad de style uit een  cookie
$styleCookie = $_COOKIE['style'];
else{
//--> Hij bestaat niet, laad de default stylesheet
$styleCookie = "style1" ;
}

$styleSheet  = "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.r3con.nl/nick/site/css/$styleCookie.css\" media=\"screen\" />\n";

echo $styleSheet;
?>
<!-- End ofStylesheet inlezen -->
</head>
<body>
<!--start  smileys-->
<?
$p = '[img]"http://www.r3con.nl/nick/site/smiley/=p.gif">';
?>
<!--end[/img]
<!-- Menu begint hier -->
<table align="center">
<tr>
    <td class="menu"><a href="http://www.r3con.nl/nick/site/index.php">Home</a></td>
    <td></td>
    <td class="menu"><a href="http://www.r3con.nl/nick/site/foto.php">Foto's</a></td>
    <td></td>
    <td class="menu"><a href="http://www.r3con.nl/nick/site/friends.php">Vrienden</a></td>
</tr>
</table>
<!-- Menu eindigt hier -->
<table>
<tr>
    <td>Kies hier de style van de site:</td>
</tr>
</table>
<table>
<tr>
    <td align="left" class="style"><a href="http://www.r3con.nl/nick/site/Styleswitcher.php?style=style1">[img]"http://www.r3con.nl/nick/site/images/wit.GIF"></a></td>
    <td[/img]<a href="http://www.r3con.nl/nick/site/Styleswitcher.php?style=style2">[img]"http://www.r3con.nl/nick/site/images/zwart.GIF"></a></td>
</tr>
</table>
<hr[/img]
<table class="container">
<tr><td>


ramon.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
include ('http://www.r3con.nl/nick/site.php');
echo "
<table class='ramoncontainer'>
<tr><td>
<table class='ramonpic'>
<tr>
    <td class='plaatje'>
    [img]'Ramon.jpg'>
    </td>
</tr>
</table>
<table[/img]
<tr>
    <td class='ramon'>
    Wie ben je?
    </td>
    <td class='ramon'>
    Ramon
    </td>
</tr>
<tr>
    <td class='ramon'>
    Waar woon je?
    </td>
    <td class='ramon'>
    Overdinkel
    </td>
</tr>
<tr>
    <td class='ramon'>
    Wat voorn studie doe je nu?
    </td>
    <td class='ramon'>
    6VWO
    </td>
</tr>
<tr>
    <td class='ramon'>
    Heb je op dit moment een relatie (zoja, met wie)
    </td>
    <td class='ramon'>
    Ja, met Ilse (L)
    </td>
</tr>
<tr>
    <td class='ramon'>
    Grootste blunder ooit? 
    </td>
    <td class='ramon'>
    Maak ik niet
    </td>
</tr>
<tr>
    <td class='ramon'>
    Wat wil je later doen, als je groot bent?
    </td>
    <td class='ramon'>
    Iets met scheikunde
    </td>
</tr>

<tr>
    <td class='ramon'>
    Van wat voorn soort muziek houd je?
    </td>
    <td class='ramon'>
    Death metal, trash metal, r&b en nog andere soorten metal soms
    </td>
</tr>
<tr>
    <td class='ramon'>
    Wat is je lievelingsband?
    </td>
    <td class='ramon'>
    Slayer
    </td>
</tr>
<tr>
    <td class='ramon'>
    Wat is je lievelingslied allertijden?
    </td>
    <td class='ramon'>
    System of a down - Aerials
    </td>
</tr>
<tr>
    <td class='ramon'>
    Hoelaat ga je doordeweeks slapen?
    </td>
    <td class='ramon'>
    22:30-23:30
    </td>
</tr>
<tr>
    <td class='ramon'>
    Hoeveel uur per dag zit je achter de pc(gemiddeld)?
    </td>
    <td class='ramon'>
    3-4 uur ofzo
    </td>
</tr>
<tr>
    <td class='ramon'>
    Wat doe je onder andere als je achter de pc zit?
    </td>
    <td class='ramon'>
    Msn, runescape, downloaden
    </td>
</tr>
<tr>
    <td class='ramon'>
    Nog iets te melden?
    </td>
    <td class='ramon'>
    Nee $p
    </td>
</tr>
<tr>
    <td class='ramon'></td>
    <td class='ramon'>
    Dankje voor het interview $p
    </td>
</tr>
</table>
</td></tr>
</table>";

include ('http://www.r3con.nl/nick/site/footer.php');
?>


footer.php
[html]
</td></tr>
</table>
</body>
</html>
[/html]

[ Voor 112% gewijzigd door Enfer op 15-05-2015 19:40 . Reden: deze lijn: $styleCookie = isset($_COOKIE['style']) ? $_COOKIE['style'] : "default/stylesheet.css"; uit mijn code gehaald, die hoort daar niet.... ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Doe in plaats van var_dump($styleSheet); eens var_dump($GLOBALS); en kijk of hij er tussen staat. Er is iets heel raars aan de hand wil je echt NULL als output krijgen als je hem wel eerder een waarde hebt gegeven. Zet bovendien eens error_reporting(E_ALL); ergens in het begin van het uitvoeren van je script. Dan krijg je errors bij dingen die niet goed gaan (zoals een niet bestaande variabel).

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Vind je het gek dat het niet werkt? Je include je files via het HTTP protocol. Wat je dan krijgt is niet een stukje PHP script, maar een stukje HTML. Daar zitten geen variabelen in, sterker nog, daar kun je helemaal niets mee in PHP. :X

Gebruik relatieve paden in plaats van een URL, en dan zou je probleem wel eens opgelost kunnen zijn.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Ikw eet wel zeker dat het dan opgelost is , -NME- heeft helemaal gelijk!

If I can't fix it, it ain't broken.

Pagina: 1