Bonjour, bonsoir à tous.
Premièrement si je poste dans la mauvaise section je vous prie de m'excuser et si cela est possible aux modérateurs de bouger le topic je leur en serait gré.
Je développe un site multilingue et j'aimerais sauvegarder la valeur de la langue dans une session afin que lorsque l'utilisateur visite le site, toutes les pages soient dans la même langue.
Malheureusement, là où le problème se pose c'est que la session ne conserve pas le paramètre. Comme vous pouvez le voir (édit: lien supprimé), la langue se réinitialise à chaque changement de page.
(La langue par défaut étant l'anglais).
Voici la partie du code où se trouve le formulaire permettant à l'utilisateur de choisir sa langue:
Et voici la partie la plus importante, là où on regarde la valeur lang_selecter:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <header> <nav> <a href="/index.php">home</a> <a href="/rsc/html/content/dev.php">dev</a> <a href="/rsc/html/content/i.php">I</a> <a href="/rsc/html/content/contact.php">contact</a> </nav> <div id="lang_selecter"> <!--<script src="/rsc/js/lang_selecter.js"> To fix :) </script>--> <!--<noscript>--> <?php $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";?> <form action="<?php echo $actual_link;?>" method="post"> <button type="submit" name="lang_selecter" value="en">EN</button> <button type="submit" name="lang_selecter" value="fr">FR</button> <button type="submit" name="lang_selecter" value="jp">JP</button> </form> <!--</noscript>--> </div> </header>
Ces deux fichiers sont inclus sur toutes les pages.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 <?php if(session_id() == '') { session_start(); } echo $_REQUEST['lang_selecter']; switch($_REQUEST['lang_selecter']){ case "en": $_SESSION['lang'] = "en"; break; case "fr": $_SESSION['lang'] = "fr"; break; case "jp": $_SESSION['lang'] = "jp"; break; default: $_SESSION['lang'] = "en"; break; } $fileList = get_included_files(); $filename = str_replace(".php",".inc",basename($fileList[0])); if(basename($fileList[0]) == 'index.php'){ require_once('config.php'); }else{ require_once("../../../config.php"); } switch($_SESSION['lang']){ case "en": require_once(ROOT_DIR."/rsc/lang/en/header.inc"); require_once(ROOT_DIR."/rsc/lang/en/".$filename); require_once(ROOT_DIR."/rsc/lang/en/footer.inc"); break; case "fr": require_once(ROOT_DIR."/rsc/lang/fr/header.inc"); require_once(ROOT_DIR."/rsc/lang/fr/".$filename); require_once(ROOT_DIR."/rsc/lang/fr/footer.inc"); break; case "jp": require_once(ROOT_DIR."/rsc/lang/jp/header.inc"); require_once(ROOT_DIR."/rsc/lang/jp/".$filename); require_once(ROOT_DIR."/rsc/lang/jp/footer.inc"); break; default: require_once(ROOT_DIR."/rsc/lang/en/header.inc"); require_once(ROOT_DIR."/rsc/lang/en/".$filename); require_once(ROOT_DIR."/rsc/lang/en/footer.inc"); break; } $filename = str_replace(".php",".css",basename($fileList[0])); ?> <!DOCTYPE html> <html> <head> <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_header.css"> <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_main.css"> <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_footer.css"> <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_<?php echo $filename;?>"> <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_header.css"> <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_main.css"> <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_footer.css"> <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_<?php echo $filename;?>"> <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_header.css"> <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_main.css"> <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_footer.css"> <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_<?php echo $filename;?>"> <link rel="icon" href="/favicon.gif"> <meta charset="UTF-8"> <title>Blaoi's corner</title> <script src="/rsc/js/jquery/jquery-3.2.1.min.js" type="text/javascript"></script> <script src="/rsc/js/msdropdown/jquery.dd.min.js" type="text/javascript"></script> <script src="/rsc/js/init.js"></script> <link rel="stylesheet" type="text/css" href="/rsc/css/msdropdown/dd.css" /> </head>
L'hébergeur Free annonce un PHP 5.6 pourtant j'ai une fonction indéfinie lorsque je tente d'utiliser:
Après avoir lu de nombreux forums et autres j'ai essayé l'encodage utf-8 sans bom (pourtant les accents sont mal affichés en français... ?).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (session_status() == PHP_SESSION_NONE) { // PHP >= 5.4 session_start(); }
Je n'arrive pas à trouver d'où pourrait venir l'erreur, auriez-vous des pistes à suggerer ?
Je vous remercie de votre patience.
Partager