PHP taalselectie
rochtus - 20/01/2009 22:51 (laatste wijziging 20/01/2009 22:54)
Nieuw lid
Beste mensen,
Ik heb lang gezocht... maar ik vind niet wat ik fout doe...
Op mijn site staat op de allereerste pagina een script voor 3 talen
de sites in 3 verschillende talen, zitten in 3 mappen (/nl /fr /eng)
De allereerste pagina heeft als script:
<?php
ob_start();
if(isset($_COOKIE['taal'])) {
switch($_COOKIE['taal']) {
case 'nl':
header('location: http://www.bencora.com/nl');
break;
case 'eng':
header('location: http://www.bencora.com/eng');
break;
case 'fr':
header('location: http://www.bencora.com/fr');
break;
}
}
?>
<?php
if ( isset ( $_COOKIE [ 'taal' ] ) ) { switch ( $_COOKIE [ 'taal' ] ) {
case 'nl' :
header ( 'location: http://www.bencora.com/nl' ) ; break ;
case 'eng' :
header ( 'location: http://www.bencora.com/eng' ) ; break ;
case 'fr' :
header ( 'location: http://www.bencora.com/fr' ) ; break ;
}
}
?>
DAN DE 3 ANDERE PAGINA's in de mappen met de talen (dus 3 keer) hebben als script:
<?php
setcookie("taal", "nl", time()+2678400);
?>
Nochtans onthoud het niet de selectie? Iemand een idee waarom?
Mvg,
titjes schreef:
Codetags!!!
8 antwoorden
Gesponsorde links
GJ2086 - 20/01/2009 22:59 (laatste wijziging 20/01/2009 23:01)
Nieuw lid
probeer dit eens. Waarschijnlijk is de cookie nog niet geset wanneer jouw statement aangeroepen word.
Andere mogelijkheid wanneer dit wel het geval is. is dat jij je cookies uit hebt staan ?
<?php
ob_start();
if(!$_COOKIE['taal']){
setcookie("taal", "fr", time()+2678400);
header('Location: '. $_SERVER['PHP_SELF']);
}
if(isset($_COOKIE['taal'])) {
switch($_COOKIE['taal']) {
case 'nl':
header('location: http://www.bencora.com/nl');
break;
case 'eng':
header('location: http://www.bencora.com/eng');
break;
case 'fr':
header('location: http://www.bencora.com/fr');
break;
}
}
?>
<?php
if ( ! $_COOKIE [ 'taal' ] ) {
header ( 'Location: ' . $_SERVER [ 'PHP_SELF' ] ) ; }
if ( isset ( $_COOKIE [ 'taal' ] ) ) { switch ( $_COOKIE [ 'taal' ] ) {
case 'nl' :
header ( 'location: http://www.bencora.com/nl' ) ; break ;
case 'eng' :
header ( 'location: http://www.bencora.com/eng' ) ; break ;
case 'fr' :
header ( 'location: http://www.bencora.com/fr' ) ; break ;
}
}
?>
rochtus - 21/01/2009 17:00 (laatste wijziging 21/01/2009 17:03)
Nieuw lid
ik heb die code aangepast, en idd het werkt
ECHTER
Ik kies nederlands, en het heeft frans onthouden... Nu doe ik coockies verwijderen... en die wordt precies niet verwijderd?
Stijn - 21/01/2009 17:22
PHP expert
Je kiest nederlands zeg je. Dat betekent dus dat je op een knop of link hebt geklikt.
if( isset($_GET['taal']) ) {
setcookie('taal' , $_GET['taal'] , time()+2678400);
}
if ( isset ( $_GET [ 'taal' ] ) ) { }
Om naar de correcte pagina te gaan.
if( isset($_COOKIE['taal']) ) {
switch...
} else {
//goto default taal
}
if ( isset ( $_COOKIE [ 'taal' ] ) ) { switch ...
} else {
//goto default taal
}
DenMette - 21/01/2009 17:58
PHP gevorderde
Als je toch op een link klikt. Is het dan niet beter om direct de taal te kiezen dan met de GET en geen overbodige refresh te doen. En door middel van de Get de COOKIE te plaatsen.
Waarom raad ik dit aan:
Ten eerste beperk je de refresh wat tamelijk irritant is
Ten tweede duurt het minder lang voor de bezoeker om de website te bekijken.
Ik hoop dat je er iets aan had.
rochtus - 21/01/2009 18:38 (laatste wijziging 21/01/2009 19:27)
Nieuw lid
Dus als ik het goed begrijp zeggen jullie dat het script zoals hieronder beter is??? Klopt dit??
<?php
ob_start();
if( isset($_GET['taal']) ) {
setcookie('taal' , $_GET['taal'] , time()+2678400);
}
if( isset($_COOKIE['taal']) ) {
switch($_COOKIE['taal']) {
case 'nl':
header('location: http://www.bencora.com/nl');
break;
case 'eng':
header('location: http://www.bencora.com/eng');
break;
case 'fr':
header('location: http://www.bencora.com/fr');
break;
}
}
?>
<?php
if ( isset ( $_GET [ 'taal' ] ) ) { }
if ( isset ( $_COOKIE [ 'taal' ] ) ) { switch ( $_COOKIE [ 'taal' ] ) {
case 'nl' :
header ( 'location: http://www.bencora.com/nl' ) ; break ;
case 'eng' :
header ( 'location: http://www.bencora.com/eng' ) ; break ;
case 'fr' :
header ( 'location: http://www.bencora.com/fr' ) ; break ;
}
}
?>
En wat moet er dan op de index.php komen in de mappen /nl /fr en /eng??
sorry voor de codetags, nu weet ik hoe het moet!
DenMette - 21/01/2009 21:05 (laatste wijziging 21/01/2009 21:10)
PHP gevorderde
<?php
if (isset ($_GET['taal']))
{
switch ($_GET['taal'])
{
case 'nl':
$sTaal = 'nl';
break;
case 'eng':
$sTaal = 'eng';
break;
case 'fr':
$sTaal = 'fr';
break;
default: // Als de bezoeker een flauw plezante is die bijvoorbeeld PL gebruikt ofzo veban je deze naar eng :p
$sTaal = 'eng';
break;
}
setcookie ('taal', $sTaal , time() + (31 * 24 * 60 * 60)); // 31 * 24 * 60 * 60 => Zo weet je op het einde dat het 31 dagen zijn :p anders moet je teveel denken
header('location: http://www.bencora.com/' . $sTaal);
}
?>
<?php
if ( isset ( $_GET [ 'taal' ] ) ) {
switch ( $_GET [ 'taal' ] )
{
case 'nl' :
$sTaal = 'nl' ;
break ;
case 'eng' :
$sTaal = 'eng' ;
break ;
case 'fr' :
$sTaal = 'fr' ;
break ;
default : // Als de bezoeker een flauw plezante is die bijvoorbeeld PL gebruikt ofzo veban je deze naar eng :p
$sTaal = 'eng' ;
break ;
}
setcookie ( 'taal' , $sTaal , time ( ) + ( 31 * 24 * 60 * 60 ) ) ; // 31 * 24 * 60 * 60 => Zo weet je op het einde dat het 31 dagen zijn :p anders moet je teveel denken header ( 'location: http://www.bencora.com/' . $sTaal ) ; }
?>
Hopelijk is het een beetje duidelijk
Op je indexen moet je na gaan dat de gebruiker is en anders terug sturen naar de pagina waar hij de taal kan kiezen.
rochtus - 22/01/2009 00:29 (laatste wijziging 22/01/2009 09:11)
Nieuw lid
Hartelijk bedankt zover...!!
Het lijkt nog niet te werken; vermoedelijk in de variabele taal denk ik:
Ik heb als index.php:
Plaatscode: 75807
En in de mappen (die index.php):
<?php
setcookie("taal", "eng", time()+3600);
?>
of "nl of "fr" uiteraard he!
Maar er klopt nog iets niet, ik vermoed iets met de taal variabele dus, maar ik zie het niet direct... Soory als die html ook in een ighlight hoort...
Citaat:
Lappen code langer dan 60 a 65 regels op www.plaatscode.be
DenMette - 22/01/2009 09:23
PHP gevorderde
Je werkt met een form en deze heeft de actie POST en niet GET hoe jij dit in u script hebt geplaatst.
Dus verander de $_GET naar $_POST. Volgens mij zal deze code dan werken
Gesponsorde links
Dit onderwerp is gesloten .