cookies probleem
Code (php)
nu heb ik het geprobeerd de functie boven de html tag te plaatsen, en dat lukt ook heel goed.
maar mijn probleem is nu dat ik een template gebruik, een head en een foot voor de pagina, dus de 'setcookie' gaat ook niet werken als ik hem gebruik op de pagina.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php require_once('tmpl/head.xhtml'); ?>
<h2>test</h2>
<p>
<?php
setcookie("testcookie", 'dit is een testcookie', time()+(24*3600*365));
?>
</p>
<?php require_once('tmpl/foot.xhtml'); ?>
<h2>test</h2>
<p>
<?php
setcookie("testcookie", 'dit is een testcookie', time()+(24*3600*365));
?>
</p>
<?php require_once('tmpl/foot.xhtml'); ?>
hier krijg ik dus dezelfde error als in de vorige pagina.
nu is mijn vraag of ik op geen andere manier toch de cookie aan het werken kan krijgen?
http://www.phphulp.nl/php/faq/#2
De oplossing is om de functie setcookie helemaal bovenin je script te zetten. Dus voordat er ook maar iets daar de gebruikers gestuurd word.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
claus:
nu heb ik het geprobeerd de functie boven de html tag te plaatsen, en dat lukt ook heel goed.
mijn probleem is dat ik een footer en een header gebruik (externe files dus)
ik kan niet de setcookie code boven de require_once() zetten want 'setcookie()' moet pas worden uitgevoerd na een vergelijking =\
Je kunt dan setcookie toch wel na de vergelijking uitvoeren?
Tip: Gebruik een template-engine, bv. Smarty, en zet de output op de laatste regel van je code. Nooit problemen met cookies, sessies en/of headers.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php require_once('tmpl/head.xhtml'); ?>
<h2>test</h2>
<p>
<?php
$a = 5;
$b = 5;
if($a == $b) {
setcookie("testcookie", 'dit is een testcookie', time()+(24*3600*365));
}
?>
</p>
<?php require_once('tmpl/foot.xhtml'); ?>
<h2>test</h2>
<p>
<?php
$a = 5;
$b = 5;
if($a == $b) {
setcookie("testcookie", 'dit is een testcookie', time()+(24*3600*365));
}
?>
</p>
<?php require_once('tmpl/foot.xhtml'); ?>
dit geef ik nu als voorbeeldje, dit gaat niet werken omdat de setcookie niet bovenaan in het script staat.
dit is allemaal simpel voorgesteld, maar normaal heb ik hier nog een hele code rond staan etc.
ik had geprobeerd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function setc ($status) {
setcookie("testcookie", $status, time()+(24*3600*365));
}
?>
<?php require_once('tmpl/head.xhtml'); ?>
<h2>Welkom</h2>
<?php
$a = 5;
$b = 5;
if($a == $b) {
setc('hello wereld!');
}
?>
<?php require_once('tmpl/foot.xhtml'); ?>
function setc ($status) {
setcookie("testcookie", $status, time()+(24*3600*365));
}
?>
<?php require_once('tmpl/head.xhtml'); ?>
<h2>Welkom</h2>
<?php
$a = 5;
$b = 5;
if($a == $b) {
setc('hello wereld!');
}
?>
<?php require_once('tmpl/foot.xhtml'); ?>
Een andere oplossing is er echt niet. (leugentje om je eigen bestwil, is namelijk niet helemaal waar)
Edit: Met het begrip 'functie' wordt de php-functie setcookie() bedoelt. Het heeft geen zin om deze nog weer in een andere functie op te nemen die niet meer doet dan setcookie() gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
maarjah, setcookie bovenaan het script zetten kan ik niet want ik moet setcookie pas uitvoeren als de if constructie TRUE is...
samen met de setcookie komt dan een echo. en als die echo word weergegeven boven de head template dan klopt de layout kompleet niet meer.
De if() kan bovenin, de echo kan altijd later nog.
srry, 'k volg even niet, kan je voorbeeldcode geven van wat je bedoelt?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$a = 5;
$b = 5;
if($a == $b) {
setcookie("testcookie", 'hello wereld!', time()+(24*3600*365));
}
require_once('tmpl/head.xhtml'); ?>
$a = 5;
$b = 5;
if($a == $b) {
setcookie("testcookie", 'hello wereld!', time()+(24*3600*365));
}
require_once('tmpl/head.xhtml'); ?>
<h2>Welkom</h2>
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
pgFrank:
if(1 == 1){
setcookie();
}
else {
$a = 2;
}
// en nog 1000 regels met van alles en nog wat
echo $a;
echo '<html><title>boe</title></html>';
setcookie();
}
else {
$a = 2;
}
// en nog 1000 regels met van alles en nog wat
echo $a;
echo '<html><title>boe</title></html>';
nu word de echo zowieso weergegeven, het is de bedoeling dat die alleen verschijnt als de vergelijking waar is
Gewijzigd op 01/01/1970 01:00:00 door claus
edit:
Quote:
Smarty, hopelijk doe je daar iets mee, het lost je probleem in elk geval op.
Presentatie van business code scheiden, is altijd goed idd.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
die echo heeft er wel mee te maken want die zou anders verkeerd op de pagina terechtkomen.
hoe ik het opgelost?
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$a = 5;
$b = 5;
if ($a == $b) {
setcookie(blablabla);
$text = 'a is gelijk aan b';
}
else {
$text = 'a is niet gelijk aan b';
}
require_once('tmpl/head.xhtml');
?>
<h2>welkom</h2>
<p>
<?php
echo $text;
?>
</p>
<?php
require_once('tmpl/foot.xhtml');
?>
$a = 5;
$b = 5;
if ($a == $b) {
setcookie(blablabla);
$text = 'a is gelijk aan b';
}
else {
$text = 'a is niet gelijk aan b';
}
require_once('tmpl/head.xhtml');
?>
<h2>welkom</h2>
<p>
<?php
echo $text;
?>
</p>
<?php
require_once('tmpl/foot.xhtml');
?>