2010-04-18 6 views
1

Salut, je crée deux fichiers pour changer mon forum (Langue chinois et en anglais)quelque temps SetCookie() ne fonctionne pas

enForum.php

<?php 

    function foo() { 
     global $_COOKIES; 
     setcookie('ForumLangCookie', 'en', time()+3600, '/', '.mysite.com'); 
     echo 'running<br>'; 
     $_COOKIES['ForumLangCookie'] = 'en'; 
     bar(); 
    } // foo() 


    function bar() { 
     global $_COOKIES; 
     if (empty($_COOKIES['ForumLangCookie'])) { 
       die('cookie_name is empty'); 
      } 
      echo 'Language =' . $_COOKIES['ForumLangCookie']; 
      echo "<br>"; 
    } // bar() 

    foo(); 


?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>forum EN Version</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 

please be patient ... 
<script LANGUAGE='javascript'> 

    location.href='http://www.mysite.com/forum/index.php'; 

</script> 


</body> 
</html> 

cnForum.php

<?php 

    function foo() { 
     global $_COOKIES; 
     setcookie('ForumLangCookie', 'cn', time()+3600, '/', '.mysite.com'); 
     echo 'running<br>'; 
     $_COOKIES['ForumLangCookie'] = 'cn'; 
     bar(); 
    } // foo() 


    function bar() { 
     global $_COOKIES; 
     if (empty($_COOKIES['ForumLangCookie'])) { 
       die('cookie_name is empty'); 
      } 
      echo 'Language =' . $_COOKIES['ForumLangCookie']; 
      echo "<br>"; 
    } // bar() 

    foo(); 


?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>forum CN Version</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head> 

<body> 

please be patient ... 
<script LANGUAGE='javascript'> 

    location.href='http://www.mysite.com/forum/index.php'; 

</script> 
</body> 
</html> 

Il y a quelques dossiers comprenant include template('logon');, include template('regist'); etc., j'écris certains c ode pour obtenir la valeur Cookie et contrôler le flux pour charger différents fichiers modèles.

$lang = $_COOKIE["ForumLangCookie"]; 
// for Debug 
// echo '$lang is '.$lang; 
// echo '<br/>'; 

if ($lang == "cn"){ 
    include template('logon'); 
} 
else if ($lang == "en"){ 
    include en_template('logon'); 
} 

Mais parfois le SetCookie() ne fonctionne pas. Ai-je besoin d'ajouter Sleep(someSeconds); pour mon code?

+0

$ Il n'y a pas besoin d'utiliser '_COOKIE' global $ - ce tableau est l'un des [plusieurs] superglobales prédéfinies (http://php.net/manual/ fr/language.variables.superglobals.php) et il est accessible de partout. – Crozin

+0

Vous pourriez inclure un seul des exemples de code dans la question, car ils semblent être presque les mêmes. – mkj

+0

@mkj, je suppose que l'utilisateur clique sur le lien de l'URL pour triger la configuration de la langue différente. C'est pourquoi j'ai créé deux fichiers. –

Répondre

1

Les cookies sont accessibles avec $_COOKIE, et non $_COOKIES.

EDIT: Désolé pour malentendu. Je vous suggère de changer la variable $_COOKIES comme une autre commune afin que les gens puissent comprendre votre question correctement.

+0

@SpanwnCxy, Merci pour votre suggestion. –

0

nom du tableau PHP est $ _COOKIE, non _COOKIES