Hallo allemaal.
Al enige tijd aan het stoeien met cookies t.b.v. vertaal systeempje.
Mijn bedoeling is, dat bezoekers kunnen kiezen voor hun taal. Dus cookie moet niet geset worden bij het laden van de pagina maar na het klikken op een link.

Gedeelte uit index.php

<a href="?" onclick="<?php eng() ?>">Engels</a>
<a href="?" onclick="<?php ned() ?>">Nederlands</a>


Deze include ik: functions.php

<?php
function eng() 
{
	setcookie("taal", "en", time()+3600, "/"); 
}

function ned()
{
	setcookie("taal", "nl", time()+3600, "/");
}
?>


Kan dit uberhoopt met Onclick? En kun je cookies op deze manier overschrijven?
Martin
PHP is een server side language, dat betekend dat alles wat op deze pagina tussen de php tags staat, direct word uitgevoerd.
Dat zal dus niet werken.

Voorbeeld hoe je dit werkend kan krijgen.

<a href="setcookie.php">set</a>

<?php

// set cookie
header("Location: ".$_SERVER['HTTP_REFERER'] );

?>

Edit: Howel Miky en ik een voorbeeld geven hoe het kan werken, zijn er nog tientallen andere mogelijkheden.
Php is een serverside-language, ofwel, alle php word eerst uit gevoerd, daarna heb je een pagina met slechts html en javascript over (clientside).
De javascript kan daarom de php niet zien.
Dus nee dit is niet mogelijk.

Wat je wel kan doen is je linkjes veranderen in:
<a href="?lang=en">Engels</a>
<a href="?lang=nl">Nederlands</a> 

En ergens bovenaan die pagina

<?php
$standaardtaal = 'nl';
if(isset($_GET['lang']))
{
if($_GET['lang'] == 'en')
{
setcookie("taal", "en", time()+3600, "/");
}
elseif($_GET['lang'] == 'en')
{
setcookie("taal", "nl", time()+3600, "/");
}
}
?>

Edit: Of icm met het idee van Johan ;)
Voor zover bedankt, guys het begint er op te lijken, maar werkt nog niet naar wens... Doe toch nog ergens iets fout, of ik denk te moeilijk ;)
index.php
<?php
if(isset($_GET['lang']))
{
    if($_GET['lang'] == 'nl')
    {
        setcookie("taal", "nl", time()+3600, "/"); 
    }
    elseif($_GET['lang'] == 'en')
    {
        setcookie("taal", "en", time()+3600, "/");
    }
}
if(isset($_COOKIE['taal'])) 
{
	$cookie = $_COOKIE['taal'];
	if($cookie == 'en')
	{
	include("./inc/en.php");
	} 
	else
	{
	include("./inc/nl.php");
	}
}
?>


en.php en nl.php zijn dan mijn tekstbestanden.
Er wordt nu een cookie juist aangemaakt, en/of gewijzigd, maar je moet de pagina wel 1x refreshen wil de tekst gewijzigd worden. :(
Iemand een ID?
Djemo schreef op 29.02.2008 20:41
Ajax?

Kan dit echt alleen met Ajax?
Laat maar mensen, het werkt inmiddels... Gebruik nu sessions
Heb het zo gedaan:

<?php
session_start();
if ( !isset($_SESSION['taal']) ) $_SESSION['taal'] = 'nl';

$allowed_languages = array('en', 'nl');

if ( isset($_GET['lang']) && in_array($_GET['lang'], $allowed_languages) ) {
   $_SESSION['taal'] = $_GET['lang'];
}
include("./inc/{$_SESSION['taal']}.php");
?>

Toch allemaal bedankt!
(Maar nu eerst een Heineken)

Reageren