Session ID et redirection
Bonsoir,
c'est mon premier message sur le forum, j'espère donc que je m'y prends bien ;)
J'ai dû reprendre un site internet pour une entreprise alors que je n'ai pas beaucoup d'expérience dans le PHP ou le web en général.
J'ai réussi à faire ce que je voulais jusqu'à présent, modifier l'aspect du site, etc...
Mon problème c'est qu'il y a du code PHP que j'ai du mal à comprendre. J'ai remarqué qu'au début de chaque page, le webmaster précédent avait mis un session_start(); j'ai bien compris que c'était pour faire démarrer le PHP et donc pouvoir utiliser des variables, etc.
Cela permet de savoir notamment s'il faut afficher le texte de la page en anglais ou en français.
Il y a un bout de code que j'ai du mal à comprendre, s'il n'y a pas de session ouverte, alors
Code:
1 2 3
| if(!isset($_SESSION['l'])){
header("Location: http://mapage.com");
} |
Là où je ne comprends pas, c'est qu'au début du fichier, il y a bien le session_start(); . Pourquoi du coup, il m'arrive d'être redirigé vers la page http://mapage.com ? Je remarque que ce problème n'arrive que sur Firefox lorsque l'utilisateur n'entre pas www dans l'url. Si l'utilisateur tape www.mapage.com et qu'il navigue sur les différents liens de la page, alors ça fonctionne.
J'ai essayé sur Chrome, Chromium, IE, etc et tout fonctionne très bien. Comment expliquer alors que ça ne fonctionne pas sur Firefox? De plus, je remarque que les utilisateurs naviguent de liens en liens très bien, mais il faut attendre à peu près qu'ils atteignent la 3e page visitée pour que PHPSESSID s'affiche dans l'url (pour le moment le fait que cela s'affiche n'est pas un problème, et c'est toujours seulement avec Firefox)
Pouvez-vous m'aider à comprendre cela ? Merci par avance
Suite et fin problème PHP SessionID et problème de redirection
Salut,
d'abord merci à papajoker et ABCIWEB pour m'avoir répondu ;)
J'ai essayé ce que vous m'avez proposé, d'abord savoir d'où venait la variable l, elle vient de là
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| function changer_de_langue($p,$langue){
// la page est dans $_SERVER['PHP_SELF']; ==> /page_.php
$mapage = explode("_",$p);
// => /index
if ($langue == "fr"){
$page = $mapage[0]."_en.php";
$_SESSION['langue'] = "en";
} else {
$page = $mapage[0]."_fr.php";
$_SESSION['langue'] = "fr";
}
return $page;
} |
En gros, le webmaster coupait le nom de la page pour savoir si la fin de l'url était en ou fr et du coup, cela chargeait une page dans la langue adéquate.
Mais, cela ne m'a pas aidé malheureusement pour mon problème.
J'ai donc essayé aussi ce que ABCIWEB m'avait proposé, mais en rajoutant les lignes au début du script, cela n'a rien affiché :(
Du coup, j'ai résolu mon problème en testant l'url depuis laquelle l'internaute provenait. S'il venait de ma_page_en.php alors afficher la page en anglais. Si non afficher en français. Et ça marche, je sais que c'est très moche comme solution et que techniquement ça ne résout pas le problème...
C'est juste que je ne sais pas pourquoi, pour Firefox seulement et seulement si les gens ne mettaient pas www devant ça ne marchait pas. Comme ça, même dans ce cas particulier, la redirection se fait bien
Voilà,
merci en tout cas pour votre aide,