8791 sujets

Développement web côté serveur, CMS

Salut à tous !

Tout nouveau sur ce forum, je tiens à dire que je consulte depuis pas mal de temps vos tutoriaux très complets, mais hélas, aucun ne m'a permis de résoudre le problème que je rencontre aujourd'hui... Smiley confus

J'ai un site en .eu : www.monsite.eu.

Il s'agit d'un site dont les membres viennent de plusieurs pays, de plusieurs villes. Chaque utilisateur peut avoir accès aux infos de sa ville en entrant une adresse du type : lyon.monsite.eu.

Le hic : c'est qu'en s'identifiant, l'utilisateur ne pourra pas "voyager" d'une ville à une autre sans être obligé de s'identifier à nouveau...

Côté script php, j'ai alors utilisé le paramètre "domain" :

setCookie("nom","valeur",time()+5184000,"/",".mondomaine.eu");


Mais depuis, mon identification ne se fait que sur le domaine général (www.mondomaine.eu) et même plus dans les sous-domaine !


Je me suis renseigné, et je suis tombé là dessus :

a écrit :
Only hosts within the specified domain can set a cookie for a domain and domains must have at least two (2) or three (3) periods in them to prevent domains of the form: ".com", ".edu", and "va.us". Any domain that fails within one of the seven special top level domains listed below only require two periods. Any other domain requires at least three. The seven special top level domains are: "COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT".


Cela signifie donc que les domaines qui ne sont pas dans la liste à la fin doivent comporter que 2 points dans le paramètre "domaine" ?


En un mot : help...
D'abord, le nom de la fonction s'écrit tout en minuscules ; ensuite, essaie d'indiquer le domaine sans le point au début, comme suit :
setcookie ('nom', 'valeur', time () + 5184000, '/', 'mondomaine.eu');
Salut Victor et merci pour ta réponse. Smiley smile

Tout d'abord il faudrait que tu m'explique pourquoi le nom de la fonction s'écrit "tout en minuscule". Il me semble que php n'est pas sensible à la casse dans l'écriture de ses fonctions. Pour preuve, la fonction "setcookie" a toujours marché sur les sites que j'ai créé, écrite avec ou sans majuscules.

Ensuite peut-être existe-t-il une réglementation dans l'écriture en php, un peu à la façon de la validation en W3C. Mais dans ce cas elle doit être propre à chacun vu que le php est interprété côté serveur et n'est pas retranscrit au niveau du navigateur.

Concernant le domaine sans le point au début j'ai hélas bien essayé. Mais sans plus de succès Smiley bawling La doc PHP indique que le point n'est effectivement pas obligatoire mais reste vivement conseillé pour plus de compatibilité avec l'ensemble des navigateurs...

Retour à la case départ sniff...
Windmastr a écrit :
Ensuite peut-être existe-t-il une réglementation dans l'écriture en php, un peu à la façon de la validation en W3C. Mais dans ce cas elle doit être propre à chacun vu que le php est interprété côté serveur et n'est pas retranscrit au niveau du navigateur.

Il n'y a pas de réglementation, mais des conventions et des pratiques de codage qu'on est libre de suivre ou pas (comme le fait d'écrire le nom des constantes en majuscules, d'ajouter une espace avant la parenthèse ouvrante d'une fonction ou de part et d'autre d'un opérateur). Smiley cligne
Pour revenir à ton problème, une solution pourrait consister à envoyer simultanément autant de cookies que de sous-domaines.
// Un tableau listant tous les sous-domaines (la première partie seulement)
$sous_domaines = array (
  'lyon',
  'marseille',
  'paris'
);
// On effectue une boucle permettant d'envoyer un cookie applicable à chaque sous-domaine
foreach ($sous_domaines as $sous_domaine)
{
  setcookie ('nom ['.$sous_domaine.']', 'valeur ['.$sous_domaine.']', time () + 5184000, '/', $sous_domaine.'mondomaine.eu');
}

Reste à voir si les performances n'en pâtissent pas trop, surtout si tu as une centaine de sous-domaines. Smiley confused
Modifié par Victor BRITO (04 Jan 2010 - 08:53)
Hélas c'est ce que j'ai fait en attendant. Pas très propre mais au moins ça a le mérite de marcher en attendant.

Pour le moment on a que 11 groupes, mais on compte en avoir d'autres et là il faudra vraiment que je résolve le problème.

Je vais aussi essayer d'acheter un nom de domaine en ".com", même si ça me semble tordu si ça vient de là...

Merci en tout cas Smiley biggrin