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 :

Récupérer l'adresse actuelle et la modifier


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Par défaut Récupérer l'adresse actuelle et la modifier
    Bonjour,
    Je développe un site en français et en anglais, et je voudrais que lorsque l'on clique sur le drapeau anglais qui se trouve en haut de page sur une page en français qu'il m'envoi vers la version anglaise de cette même page, et que si une page au même nom n'existe pas, il renvoi sur l'index de la version anglaise (et vise versa).
    Je vais donner un exemple. L'utilisateur est sur la page www.monsite.com/fr/fiches/infos.php et clique sur le drapeau qui s'y trouve, si www.monsite.com/en/fiches/infos.php existe, c'est la que le liens va le rediriger, si il n'éxiste pas l'utilisateur sera redirigé vers www.monsite.com/en/.

    Je ne suis pas super doué en php. J'ai quelque idées mais je ne saurais pas comment procéder. J'essai de développer mon petit script sur la version française, il me suffira de le copier sur la version anglaise en inversant fr et en dans le code. Pour info mon drapeau anglais est dans un include qui est appelé dans toutes les pages française du site (pareil à l'inverse sur la version anglaise).

    Je me disais que je pourrais commencer par récupérer l'adresse actuelle de la façon suivzante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $current_adress = '../' . basename($_SERVER["PHP_SELF"]);
    je suppose que c'est bon.
    Après je ne sais pas comment faire pour qu'il me prenne la valeur de $current_adress, qu'il remplace le /fr/ par un /en/, et la mette dans une variable du nom de $target_adress.
    Ensuite je pense qu'une boucle permettrai de finir ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($current_adress existe sur le serveur) {
    alors echo <a href="$current_adress">
    }
    else echo <a href="/en/">
    La encore je ne sais comment formuler tout sa, ni quelle fonction utiliser pour qui vérifie si current adress existe.
    Est ce que quelqu'un saurais m'aider sur mon problème ?

    Merci d'avance

  2. #2
    Membre éclairé

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Par défaut
    Salut, je vois ton problème, je crois que tu peux faire comme cela (cela fonctionnera sur toutes les pages du site dans chaque dossier) :

    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
     
    // Pour afficher le drapeau
     
    $url = 'http://www.tonsite.com/"'.$_SERVER['PHP_SELF'];
     
    $a_url = explode('/',$url);
     
    $fr_ind = array_search('fr',$a_url);
    $en_ind = array_search('en',$a_url);
     
    $a_new_url = $a_url;
     
    if($fr_ind !== false) {
    $newUrl[$fr_ind] = 'en';
    $newUrl = implode('/',$a_newUrl);
    echo '<a href="'.$newUrl.'">Anglais</a>';
    }
    elseif($en_ind !== false) {
    $newUrl[$en_ind] = 'fr';
    $newUrl = implode('/',$a_newUrl);
    echo '<a href="'.$newUrl.'">Français</a>';
    }
    Je n'ai pas essayer mais cela devrait marcher..

    C'est un peu compliquer pour si peu, tu devrais faire un peu comme les templates avec un seul fichier pour les deux langues et un paramètre en GET
    comme : mapage.php?lang=fr

    puis dans ta page tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if($lang == 'fr' or $lang == 'en')
    require 'tonsite.com/'.$lang.'/'.basename($_SERVER['PHP_SELF']);
    else
    require 'tonsite.com/fr/'.basename($_SERVER['PHP_SELF']);

  3. #3
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut pas de variable
    On ne met jamais de variables dans un include(), include_once(), require() ou require_once() et ce pour une des failles de sécurité les plus connues si ce n'est LA plus connue.

    Cependant la solution proposée est bonne dans l'idée excepter le fait qu'il faille changer les variables par des constantes.

  4. #4
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Voici quelques idées pour les sites multilingues : http://php.developpez.com/faq/?page=...te-multilingue

    Pour ce qui est de ton adresse, il vaut mieux utiliser un paramètre en effet, c'est plus simple. Sinon si ton souci c'est juste d'avoir une URL avec un dossier en ou fr juste après la racine, tu peux faire de la réécriture de liens (mais c'est plus compliqué).

  5. #5
    Membre éclairé

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Par défaut
    Bien sur que ma solution est bonne tel quel tu as oublié de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if($lang == 'fr' or $lang == 'en')

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Par défaut
    Merci Oprichnik, j'ai repris ton code et je l'ai quelque peut modifié (à cause de variables qui changaient de nom et pour que sa se rapproche de ce que je voulais). Je te remercie énormément car je n'aurais pas su coder sa.

    Par contre je ne sais, si le code final a des failles de sécurité :
    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
     
    <?php
    $url = $_SERVER['PHP_SELF'];
    $a_url = explode('/',$url);
    case du table.
    $fr_ind = array_search('fr',$a_url);
    $en_ind = array_search('en',$a_url);
    $a_new_url = $a_url;
     
    if($fr_ind !== false) {
    $a_new_url[$fr_ind] = 'en';
    $newUrl = implode('/',$a_new_url);
    if (file_exists($_SERVER["DOCUMENT_ROOT"].$newUrl)) {
        echo '<a href="'.$newUrl.'"><img src="/fr/images/layout/picto_uk.gif" alt="English version"  class="txt-pre-header-right" /></a>';
    } else {
        echo '<a href="/en/"><img src="/fr/images/layout/picto_uk.gif" alt="English version"  class="txt-pre-header-right" /></a>';
    }
    }
    elseif($en_ind !== false) {
    $a_new_url[$fr_ind] = 'fr';
    $newUrl = implode('/',$a_new_url);
    if (file_exists($newUrl)) {
        echo '<a href="'.$newUrl.'"><img src="/en/images/layout/picto_fr.gif" alt="English version"  class="txt-pre-header-right" /></a>';
    } else {
        echo '<a href="/fr/"><img src="/en/images/layout/picto_fr.gif" alt="English version"  class="txt-pre-header-right" /></a>';
    }
    }
     
    ?>

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

Discussions similaires

  1. [C#] Récupérer son adresse IP sur Internet
    Par Thomas Lebrun dans le forum Windows Forms
    Réponses: 11
    Dernier message: 28/07/2014, 17h19
  2. Récupérer l'adresse actuel d'un swf.
    Par carton99 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 02/07/2012, 20h55
  3. [MFC]récupérer l'adresse MAC
    Par julien20vt dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 12h22
  4. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 15h27
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 18h26

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