Archief - PHP: Cookie voor taal

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Strangler

Legacy Member
hallo,

Ik heb een vraagje i.v.m. cookies.
Deze code heb ik gebruikt om een cookie in te stellen, maar ik krijg altijd hetzelfde antwoord:
Code:
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\htdocs\newopti\test.php:2) in C:\Program Files\xampp\htdocs\newopti\test.php on line 5

Dit is mijn code:
PHP:
<?php
if(!isset($_COOKIE["taal"])){
	if (isset($_POST["taal"])){
		setcookie("taal", $_POST["taal"], time()+60*60*24*365); //cookie wordt een jaar bewaard
		echo 'Je hebt gekozen voor '.$_POST["taal"];
	}else{
?>
		<form method="post" action="<?php echo $PHP_SELF ?>">
			Kies je taal: <br />
			<input type="submit" value="Nederlands" name="taal" />
			<input type="submit" value="Français" name="taal" />
		</form>
<?php
	}
}else{
	echo 'Je hebt gekozen voor '.$_COOKIE["taal"];
}
?>

Ik zou zoiets willen als op de telenet website, dat je maar 1 keer hoeft te kiezen welke taal je wilt, maar dat je achteraf wel nog kunt veranderen.

Mvg,

Jelle

RpR

Legacy Member
Cookies moet je zetten voor je iets hebt geoutput.
Set je een cookie var na een echo of html taal dan zal het niet werken!

Strangler

Legacy Member
zoals bij sessie's dus.
Maar hoe kun je een cookie instellen als je nog geen informatie hebt over wat je er wilt insteken?

RpR

Legacy Member
Strangler zei:
zoals bij sessie's dus.
Maar hoe kun je een cookie instellen als je nog geen informatie hebt over wat je er wilt insteken?
gewoon naar een pagina laten posten en eenmaal op die pagina terug een redirect naar de home page.
Of je kan de post laten gebeuren naar de eigen pagina en bij het begin van de pagina checken of hij van dat formulier komt en anders cookie zetten.

Daarvoor is een template engin zeer handig. Je scheidt je html altijd van uw php en uw php gebeurd altijd voor uw html.

Strangler

Legacy Member
Heb het nu zo gedaan:
PHP:
<?php
if(!isset($_COOKIE["taal"])){
	if (isset($_POST["taal"])){
		setcookie("taal", $_POST["taal"], time()+60*60*24*365); //cookie wordt een jaar bewaard
			?>
	<html>
		<head>
			<meta http-equiv="Refresh" content="5; URL=index.php?language=<?php echo $_POST["taal"]; ?>">
		</head>
		<body>
			<?
			if($_POST["taal"] == "Nederlands"){
				
				echo 'Je hebt gekozen voor '.$_POST["taal"].' en wordt nu doorverwezen naar onze website.';
				
			}else{
				echo 'Vous avez choississez '.$_POST["taal"].' [frans]en wordt nu doorverwezen naar onze website.[/frans]';
			}
		?>
		</body>
	</html>
<?php
	}else{
?>
<html>
	<head>
	</head>
	<body>
		<form method="post" action="<?php echo $PHP_SELF ?>">
			Kies je taal: <br />
			<input type="submit" value="Nederlands" name="taal" />
			<input type="submit" value="Français" name="taal" />
		</form>
	</body>
</html>
<?php
	}
}else{
?>
<html>
	<head>
		<meta http-equiv="Refresh" content="5; URL=index.php?language=<?php echo $_COOKIE["taal"]; ?>">
	</head>
	<body>
		<?php
			if($_COOKIE["taal"] == "Nederlands"){
		?>
				Je wordt doorverwezen naar onze website.
		<?php
			}else{
		?>
				frans: Je wordt doorverwezen naar onze website.
		<?php
			}
		?>
	</body>
</html>
<?php
}
?>
Werkt Perfect! :D

omfg

Legacy Member
je kan ook helemaal bovenaan je pagina (voor alles)
ob_start();
zetten
en helemaal onderaan
ob_end_flush();
dan heb je nooit dat probleem met "headers already sent"

killgore

Legacy Member
en is vrij extreem lelijke code.

en das dikke bs: ge kunt gij perfect nog steeds headers already sent krijgen.

bv.

PHP:
<html>
<?php
ob_start();
echo "boe";
session_start();
ob_end_flush();
?>
</html>

werkt met die output buffering en zal nog steeds niet werken.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan