IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème constantes non définies


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 90
    Points
    90
    Par défaut Problème constantes non définies
    Bonsoir,

    Je tente de faire un site multi langues en php.

    Pour cela j'ai créé deux fichiers simples :
    fr-lang.php et en-lang.php ou sont définies mes constantes.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('LIEN_ACCUEIL', 'Accueil');
    Dans mon index.php j'ai au tout debut de mon fichier un appel a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?
    require("decide-lang.php");
    ?>
    Ce fichier decide-lang.php est construit comme cela :
    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
    <?php
     
    if (isset($HTTP_COOKIE_VARS['lang'])) {
        $lang = $HTTP_COOKIE_VARS['lang'];
    } else {
        // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
        $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    }
     
    //script d'origine
    if ($lang == 'fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
        include('fr-lang.php');
    }
    elseif ($lang == 'en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
        include('en-lang.php');
    }
    else {
        include('fr-lang.php');
    }
    //fin du script d'origine
    //définition de la durée du cookie (1 an)
    $expire = 365 * 24 * 3600;
     
    //enregistrement du cookie au nom de lang
    setcookie("lang", $lang, time() + $expire);
    ?>
    Et pour finir j'appel dans mon index.php mes constantes comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo LIEN_ACCUEIL; ?>
    Seulement j'ai autant de NOTICE que de constantes :
    Notice: Use of undefined constant LIEN_ACCUEIL - assumed 'LIEN_ACCUEIL' in C:\wamp\www\site\index.php on line 44
    LIEN_ACCUEIL
    Mes constantes sont donc non définies, mais je ne vois pas le problème :/

    Si quelqu'un peut m'aider, je lui en serait très reconnaissant

    Merci

    EDIT : J'ai mis tous les fichiers au même niveau de hiérarchie dans mon dossier (a la racine de celui-ci).

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $HTTP_COOKIE_VARS et $HTTP_SERVER_VARS sont a remplacer respectivement par $_COOKIE et $_SERVER.

    En dehors de ce point non bloquant, tu es sur de ne pas avoir mélangé fr-lang.php et lang-fr.php ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 90
    Points
    90
    Par défaut
    Merci pour ta réponse.

    Non je ne me suis pas trompé mais j'ai effectivement fait une erreur en postant mon message précédent. Je rectifie ca de suite.

    Le problème est toujours présent...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai repris ton code tel que tu nous le montres et il n'y a pas d'erreurs.
    Tu n'aurais pas une mauvaise donnée restée dans le cookie ?
    Ajoute un
    en début de script pour être sur d'avoir toutes les erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 90
    Points
    90
    Par défaut
    Ah c'est étrange...

    J'ai effacé mes cookies et mis le bout de code en debut du script et rien n'a changé...

  6. #6
    Membre du Club Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Points : 64
    Points
    64
    Par défaut
    Pourquoi ne pas simplement utiliser des sessions et un détection de la langue par rapport au navigateur ?
    Membre actif de la Pouy@geTe@m.

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 90
    Points
    90
    Par défaut
    Je comprend pas trop ta question... J'essaye bien d'utiliser la langue par defaut du navigateur mais si on la trouve pas, par defaut ce sera en francais... Le probleme c'est pas au niveau du choix de la langue mais bien au niveau des constantes

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Fait un echo "Truc muche"; dans tes 2 fichier de langues (fr et en) pour constater que l'un des 2 est inclus.
    Ca se peu qu'aucun n'est inclus.


    As tu corrigé les $HTT_* par leur remplaçant $_POST, $_GET, $_SESSION, $_COOKIE, $_SERVER ?
    Petite remarque à ce sujet, c'est de faire attention au support que tu utilise pour apprendre Php, car les $HTT_* c'est du Php4, et ça fait une paye aujourd'hui.
    Attention au code obsolète.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?
    require("decide-lang.php");
    ?>
    Adopte une seule et unique façon de coder, d'ouvrir la balise Php, et si possible la plus sûr.
    La plus sûr est sans conteste : <?php
    Et pas <? dépendante de la valeur short_open_tag du php.ini.


    Et enfin, là ça peu paraitre un détail, mais la création du cookie (setcookie) serait mieux en mettant le code juste après avoir initialisé la langue ($lang), et donc avant d'inclure un des fichiers langues.


    La remarque Spin0us est judicieuse, je suis du même avis que les sessions seraient plus adaptées à stocker la langue qu'un cookie, même si ce n'est pas la nature de l'erreur.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 90
    Points
    90
    Par défaut
    Merci beaucoup.

    En effet le probleme venait du <?php, je l'ai mis et c'est rentré dans l'ordre

    Merci pour vos remarques sur les sessions, je vais voir de ce coté la

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème variable non définie macro Excel réalisation courrier
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/03/2014, 14h38
  2. Problème "fonction non définie"
    Par majudis dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/03/2011, 20h02
  3. PdfCreator, problème type non défini
    Par charliejo dans le forum Access
    Réponses: 1
    Dernier message: 04/03/2008, 11h42
  4. [Tableaux] PB constante non définie
    Par ouar dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2006, 18h19
  5. Problème Constante chaîne non terminée
    Par nborde dans le forum ASP
    Réponses: 5
    Dernier message: 25/12/2005, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo