login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP taalselectie

Offline rochtus - 20/01/2009 22:51 (laatste wijziging 20/01/2009 22:54)
Avatar van rochtusNieuw 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:

  1. <?php
  2.  
  3. if(isset($_COOKIE['taal'])) {
  4. switch($_COOKIE['taal']) {
  5. case 'nl':
  6. header('location: http://www.bencora.com/nl');
  7. break;
  8. case 'eng':
  9. header('location: http://www.bencora.com/eng');
  10. break;
  11. case 'fr':
  12. header('location: http://www.bencora.com/fr');
  13. break;
  14. }
  15. }
  16. ?>

DAN DE 3 ANDERE PAGINA's in de mappen met de talen (dus 3 keer) hebben als script:

  1. <?php
  2. setcookie("taal", "nl", time()+2678400);
  3. ?>

Nochtans onthoud het niet de selectie? Iemand een idee waarom?

Mvg,
 

titjes schreef:
Codetags!!!

8 antwoorden

Gesponsorde links
Offline GJ2086 - 20/01/2009 22:59 (laatste wijziging 20/01/2009 23:01)
Avatar van GJ2086 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 ?

  1. <?php
  2.  
  3. if(!$_COOKIE['taal']){
  4. setcookie("taal", "fr", time()+2678400);
  5. header('Location: '. $_SERVER['PHP_SELF']);
  6. }
  7.  
  8. if(isset($_COOKIE['taal'])) {
  9. switch($_COOKIE['taal']) {
  10. case 'nl':
  11. header('location: http://www.bencora.com/nl');
  12. break;
  13. case 'eng':
  14. header('location: http://www.bencora.com/eng');
  15. break;
  16. case 'fr':
  17. header('location: http://www.bencora.com/fr');
  18. break;
  19. }
  20. }
  21. ?>
Offline rochtus - 21/01/2009 17:00 (laatste wijziging 21/01/2009 17:03)
Avatar van rochtus 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?
Offline Stijn - 21/01/2009 17:22
Avatar van Stijn PHP expert Je kiest nederlands zeg je. Dat betekent dus dat je op een knop of link hebt geklikt.

  1. if( isset($_GET['taal']) ) {
  2. setcookie('taal' , $_GET['taal'] , time()+2678400);
  3. }


Om naar de correcte pagina te gaan.

  1. if( isset($_COOKIE['taal']) ) {
  2. switch...
  3. } else {
  4. //goto default taal
  5. }
Offline DenMette - 21/01/2009 17:58
Avatar van DenMette 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.
Offline rochtus - 21/01/2009 18:38 (laatste wijziging 21/01/2009 19:27)
Avatar van rochtus Nieuw lid Dus als ik het goed begrijp zeggen jullie dat het script zoals hieronder beter is??? Klopt dit??

  1. <?php
  2.  
  3. if( isset($_GET['taal']) ) {
  4. setcookie('taal' , $_GET['taal'] , time()+2678400);
  5. }
  6.  
  7. if( isset($_COOKIE['taal']) ) {
  8. switch($_COOKIE['taal']) {
  9. case 'nl':
  10. header('location: http://www.bencora.com/nl');
  11. break;
  12. case 'eng':
  13. header('location: http://www.bencora.com/eng');
  14. break;
  15. case 'fr':
  16. header('location: http://www.bencora.com/fr');
  17. break;
  18. }
  19. }
  20. ?>


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!
Offline DenMette - 21/01/2009 21:05 (laatste wijziging 21/01/2009 21:10)
Avatar van DenMette PHP gevorderde
  1. <?php
  2. if (isset ($_GET['taal']))
  3. {
  4. switch ($_GET['taal'])
  5. {
  6. case 'nl':
  7. $sTaal = 'nl';
  8. break;
  9. case 'eng':
  10. $sTaal = 'eng';
  11. break;
  12. case 'fr':
  13. $sTaal = 'fr';
  14. break;
  15. default: // Als de bezoeker een flauw plezante is die bijvoorbeeld PL gebruikt ofzo veban je deze naar eng :p
  16. $sTaal = 'eng';
  17. break;
  18. }
  19. 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
  20. header('location: http://www.bencora.com/' . $sTaal);
  21. }
  22. ?>

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.
Offline rochtus - 22/01/2009 00:29 (laatste wijziging 22/01/2009 09:11)
Avatar van rochtus 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
Offline DenMette - 22/01/2009 09:23
Avatar van DenMette 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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.251s