Erreur phpboost6 et langue [Réglé]

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Reprise du message précédent
Bonjour,Citation :Je viens de reproduire le problème
Je n' y arrive plus

Même le curl qui plantait ne plante plus quand accept-language est défini à ru ...
Mais je pense que la fonction get_default_lang ne retourne pas toujours une valeur, ce qui me parait problèmatique.

vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
Ci joint le bug déclaré : https://www.phpboost.com/bugtracker/detail/2064-mauvaise-gestion-de-la-langue-entrainant-une-erreur-web
Je pense qu'il ne faut pas une IP FR ou Anglaise en plus de la langue d'affichage de la page web qui ne doit pas être fr ou en. il faut repartir sur une session vide pour reproduire le soucis.
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5

vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
Finalement, comme toujours, nic80 avait raison.

Je viens d'appliquer la correction suivante que je vais remonter à l'équipe phpboost pour que ce soit inclut dans leur solution :
Dans le fichier LangLoader.class.php , ligne 71 :
Code TEXT :
public static function get_default_lang() { $browser_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)) : ''; $browser_lang = !$browser_lang && isset($_SERVER['HTTP_X_COUNTRY_CODE']) ? strtolower($_SERVER['HTTP_X_COUNTRY_CODE']) : $browser_lang; $browser_lang = !$browser_lang ? strtolower(AppContext::get_request()->get_location_info_by_ip()) : $browser_lang; $langs = self::get_available_langs(); if ($browser_lang) { foreach ($langs as $lang) { $lang_config = parse_ini_file(PATH_TO_ROOT . '/lang/' . $lang . '/config.ini'); if (($lang == 'english' && $browser_lang == 'en') || (isset($lang_config['identifier']) && $lang_config['identifier'] == $browser_lang)) return $lang; /*Correction apporté par les admins mlo dans l'attente d'une correction de phpbboost*/ else return $langs[0]; /*fin correction*/ } } else return $langs[0]; }
Artenaki, peux tu me confirmer que cela corrige tes soucis ..
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Personnellement, j' aurais mis le return $langs[0] en sortie de la boucle foreach (donc après le } fermant du foreach.
En effet, ici j' ai l' impression que l' on ne fait qu' une seule itération avec juste l' anglais (ou le français selon ce que retourne $langs[0]), le return doit être un retour si et seulement si aucune correspondance n' est trouvable après exploration de toutes les langues installées.
Ceci dit cela n' explique pas pourquoi je n' arrive plus à reproduire le bug. En principe mêmes conditions, même retour non ?
Édité par nic80 Le 20/01/2024 à 10h29

vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
Tu as encore raison ! . j'ai corrigé en ce sens :
Code TEXT :
public static function get_default_lang() { $browser_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)) : ''; $browser_lang = !$browser_lang && isset($_SERVER['HTTP_X_COUNTRY_CODE']) ? strtolower($_SERVER['HTTP_X_COUNTRY_CODE']) : $browser_lang; $browser_lang = !$browser_lang ? strtolower(AppContext::get_request()->get_location_info_by_ip()) : $browser_lang; $langs = self::get_available_langs(); if ($browser_lang) { foreach ($langs as $lang) { $lang_config = parse_ini_file(PATH_TO_ROOT . '/lang/' . $lang . '/config.ini'); if (($lang == 'english' && $browser_lang == 'en') || (isset($lang_config['identifier']) && $lang_config['identifier'] == $browser_lang)) return $lang; } /*Correction apporté par les admins mlo dans l'attente d'une correction de phpbboost*/ return $langs[0]; /*fin correction*/ } else return $langs[0]; }
En tout cas, je n'ai plus d'erreur dans mes journaux apache !!
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Citation :En tout cas, je n'ai plus d'erreur dans mes journaux apache !!
Il est trop tôt pour statuer sur le fait que cela corrige le problème...
En effet, plus d' erreur peut être synonyme que plus personne ne fait de tests

En plus les bots d' indexation des moteurs n' indexent pas en permanence le site mais le font de manière périodique ( et ici on peut supposer que la détection de la langue se fait sur l' ip plus que sur un paramétrage sur le langage accepté ( sauf si * est utilisé ( mais dans ce cas aucune correspondance ne peut être trouvée !


Visiteur
Visiteur

vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
Pour information notre travail commun a porté ses fruits. Le bug a été corrigé dans phpboost :
https://github.com/PHPBoost/PHPBoost/commit/1110cd641dbd06ed1a4f8e4321c7a1cfe2e7bf7a
On a aura ses correctifs dans la branche 6.0.3
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie