comment passez ma variable a une autre page?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : comment passez ma variable a une autre page?

par webgalerien » 19 mai 2009, 17:49

nickel c parfait

ha pour information

j ai mis le site en ligne chez ovh pour tester et
il m a fallu changer le "FR" et "EN" et "fr" et "en"
?????
es ce du a une intolérance a la casse chez eux ????

en tous cas merci beaucoup

je comprend mieux le principe des sessions..
//switch qui sert à placer la langue en session, suivant le lien qui a été cliquez//
switch ($lang) {
    case "fr":
        $_SESSION['choixlang'] = 'fr';

        break;
    case "fr":
        $_SESSION['choixlang'] = 'en';
        break;
je teste tous sa et je repasse vous tenir au courant..

++


bon ben je viens de tester en local
en entrant l adresse direct d une pages sans passer par index.php

j ai eu une erreur

donc j ai rajouter ceci

<?php
//je demarre une session
session_start();
...

...
 
else //sinon
{
    // Si la session $_SESSION["choixlang"] n'est pas renseignée
    // Alors j'inclus la langue par défaut
    $_SESSION['choixlang'] = 'fr';//<===== ceci
    include('lang/fr-lang.php');
}
?>
cela résous le problème en local

mais en ligne
cela me sort une url sur les liens de ce genre

Code : Tout sélectionner

http://monsite.com/acceuil.php?lang=fr&PHPSESSID=80d3a495fff8365994e6bebc45d39da7
tu vois ce que cela peu être ?????
et question subsidiaire comment je fais pour avoir 3 choix de langues
j ai réussi a modifier pour que cela fonctionne

en rajoutant
    case "nl":
        $_SESSION['choixlang'] = 'nl';
        break;
...

...
$choixlangue = "<a href=" . $url01 . '?lang=fr title=' .$titre01 . ">Le site FR</a><br>";
$choixlangue .= "<a href=" . $url01 . '?lang=en title=' .$titre01 . ">Le site EN</a><br>";
$choixlangue .= "<a href=" . $url01 . '?lang=nl title=' .$titre01 . ">Le site NL</a><br>";
...

...
$en = "<a href=" . $url01 . '?lang=en title=' . $titre01 .
    ">texte en anglais</a>";
$nl = "<a href=" . $url01 . '?lang=nl title=' . $titre01 .
    ">texte en hollandais</a>";
mais sur le choix
la j ai pas trouver
$language = isset($_SESSION['choixlang']) ? $_SESSION['choixlang'] : '' ;
$lien_langue = ($language == 'fr') ? $en : $fr;

par dunbar » 19 mai 2009, 17:24

Comme ceci je pense :
$language = isSet($_SESSION['choixlang']) ? $_SESSION['choixlang'] : '' ;
$lien_langue = ($language == 'fr') ? $en : $fr;
tu remplace la ligne 36 par ce code

par webgalerien » 19 mai 2009, 17:14

un très grand merci a vous pour vos réponses,

j ai appliqué vos exemples et script du mieux que j ai pu mais je ne suis pas douer.

voila ce que j ai réussi a faire.

le fichier index.php avec ce code
<?php
session_start();
$url01 = 'acceuil.php';
$titre01 = 'test_vers_acceuil';
//$_SESSION['choixlang'] =;
//Initialisation de la variable $_GET['lang'].//
if (isset($_GET['lang'])) {
    $lang = htmlspecialchars($_GET['lang']);
} else {
    $lang = '';
}
//switch qui sert à placer la langue en session, suivant le lien qui a été cliquez//
switch ($lang) {
    case "FR":
        $_SESSION['choixlang'] = 'fr';

        break;
    case "EN":
        $_SESSION['choixlang'] = 'en';
        break;
}

//Menu par defaut tant que la variable $_SESSION['choixlang'] est vide.//
$choixlangue = "<a href=" . $url01 . '?lang=FR title=' .$titre01 . ">Le site FR</a><br>";
$choixlangue .= "<a href=" . $url01 . '?lang=EN title=' .$titre01 . ">Le site EN</a><br>";

//Lien des deux langues.//

$fr = "<a href=" . $url01 . '?lang=fr title=' . $titre01 .
    ">texte en fran&ccedil;ais</a>";
$en = "<a href=" . $url01 . '?lang=en title=' . $titre01 .
    ">texte en anglais</a>";

//Suivant la valeur en session est vide on affiche soit le menu par defaut sinon le lien contraire a celui en session.//
//Donc si il clique sur en c'est le lien fr qui apparait et inversement.//
$lien_langue = ($_SESSION['choixlang'] == 'fr') ? $en : $fr;
$menu        = isset($_SESSION['choixlang']) ? $lien_langue : $choixlangue;
echo $menu;
?>
qui appel le fichier acceuil.php

<?php
include ("choix_lang.inc.php"); //SESSION pour le choix de la langue
include ("lien.inc.php"); //fichier de lien pour le report sur plusieurs pages
include  ("include.inc.php"); //fichier include avec variable pour le report sur plusieurs pages
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>mon site en deux langues</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="css/styles.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<!--&nbsp;-->
<!-- header begins -->
<div id="header">
        <div id="logo">
                <h1><a href="#">titre de l article</a></h1>
                <h2><a href="#"></a></h2>
                <br />

        </div>
        <div id="menu">
          <?php echo $menu_h ?>
        </div>
</div>
<div id="main">
<!-- header ends -->
<!-- content begins -->
<div id="top">
        <div id="bottom">
        <div id="right">
<?php echo $change_langue ?>
                        <h3>ICI des liens a definir</h3>
<?php echo $menu_v ?>
                        <h3>Lorem ipsum dolor</h3>
                        <p>Laoreet dolore magna aliquam erat volutpat.
                        Exerci tation ullamcorper suscipit lobort ex ea commodo consequat.
                        Duis autemr in het laoreet dolore magna aliquam erat volutpat.
                        <br />
                        <br />
                        Ut wisi enim ad minim veniam, quis ullamcorper suscipit lobortis
                        nisl ut commodo consequat. Duis autemr in he
                        <a href="#">Lire la suite...</a></p>
                        <br />
                                </div>
        <div id="left">
                <h2>
<?php echo TXT_ACCUEIL_INDEX; ?>
                </h2><br />
                        <h4><a href="#">
                         <br>
                         </h2><br>
                        </a></h4><br />

                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
                            Suspendisse potenti. Cras leo nibh, aliquet nec, interdum et,
                            consequat sed, nulla. Praesent nec quam quis augue auctor pulvinar.

        </div>

<!--content ends -->
        <div id="footer">
        </div>
<!--footer begins -->
</div>
</div>
</div>
        <!-- footer ends-->
</body>
</html>
menu_h menu_v et change_langue
sont dans le fichier include.inc.php
<?php
//menu de navigation principal horizontal haut
$menu_h = "
<ul><li>
<a href=".$url01.'?lang='.$_SESSION['choixlang']." title=".$titre01.">".URL_MENU_1."</a>
</li><li>
<a href=".$url02.'?lang='.$_SESSION['choixlang']." title=".$titre02.">".URL_MENU_2."</a>
</li><li>
<a href=".$url03.'?lang='.$_SESSION['choixlang']." title=".$titre03.">".URL_MENU_3."</a>
</li><li>
<a href=".$url04.'?lang='.$_SESSION['choixlang']." title=".$titre04.">".URL_MENU_4."</a>
</li></ul>
";

//menu de navigation principal vertical droit
$menu_v = "
<ul><li>
<a href=".$url05.'?lang='.$_SESSION['choixlang']." title=".$titre05.">".URL_MENU_5."</a>
</li><li>
<a href=".$url06.'?lang='.$_SESSION['choixlang']." title=".$titre06.">".URL_MENU_6."</a>
</li><li>
<a href=".$url07.'?lang='.$_SESSION['choixlang']." title=".$titre07.">".URL_MENU_7."</a>
</li><li>
<a href=".$url08.'?lang='.$_SESSION['choixlang']." title=".$titre08.">".URL_MENU_8."</a>
</li><li>
<a href=".$url09.'?lang='.$_SESSION['choixlang']." title=".$titre09.">".URL_MENU_9."</a>
</li></ul>
";

// liens de selection de langue sur page
$change_langue = "
<a href=\"?lang=fr\">
<img border=\"0\" src=\"design/france.jpg\" alt=\"site en francais\" width=\"20\" height=\"20\">
Francais </a>
<br />
<a href=\"?lang=en\">
<img border=\"0\" src=\"design/english.jpg\" alt=\"site in english\" width=\"20\" height=\"20\">
Anglais </a>
";
?>
et le choix de la langue dans choix_langue.inc.php
<?php
//je demarre une session
session_start();
//$lang ='en';//je defini la langue fr pour francais et en pour anglais
$_SESSION['choixlang'] = $_GET['lang'] ;//j ouvre une session "choixlang"

if(isset($_SESSION['choixlang']))
{
    // Si la session ["choixlang"] existe
    // On recupere la variable pour l'ajouter au choix de fichier
    // Attention la variable doit avoir la meme appelation que le debut du nom du fichier
    // "fr" => fr_lang.php et "en" => en_lang.php
      include('lang/'.$_SESSION['choixlang'].'-lang.php');
    //la je teste si c ok par un echo
    //echo 'La variable "choixlang" existe et le fichier langue est :' . $_SESSION['choixlang'];
    //echo '<br>';
}
else //sinon
{
    // Si la session $_SESSION["choixlang"] n'est pas renseignée
    // Alors j'inclus la langue par défaut
    include('lang/fr-lang.php');
}
?>

la seule chose que je ne comprend pas vraiment c comment je fais pour ne pas avoir ce message

sur le page index.php(lors du 1er chargement)

Code : Tout sélectionner

Notice: Undefined index: choixlang in m:\easyphp1-8\www\cbm-fruk\index.php on line 36
es ce parce que choix lang n est pas déclaré au 1er chargement

si oui, que dois je modifier, j ai tenter plusieurs trucs sans être vraiment sur du résultat

et la je bloque vraiment

d avance merci ;-)

par dunbar » 18 mai 2009, 18:59

Ou une autre possibilité :idea:
<?php
session_start();
//$url01 = '';
//$titre01 = '';
//Initialisation de la variable $_GET['lang'].//
if (isset($_GET['lang'])) {
    $lang = htmlspecialchars($_GET['lang']);
} else {
    $lang = '';
}

//switch qui sert à placer la langue en session, suivant le lien qui a été cliquez//
switch ($lang) {
    case "FR":
        $_SESSION['choixlang'] = 'fr';

        break;
    case "EN":
        $_SESSION['choixlang'] = 'en';
        break;
}

//Menu par defaut tant que la variable $_SESSION['choixlang'] est vide.//
$choixlangue = '<a href="testphpfrance.php?lang=FR">Le site fr</a><br>';
$choixlangue .= '<a href="testphpfrance.php?lang=EN">Le site en</a><br>';

//Lien des deux langues.//

$fr = "<a href=" . $url01 . '?lang=fr title=' . $titre01 .
    ">texte en fran&ccedil;ais</a>";
$en = "<a href=" . $url01 . '?lang=en title=' . $titre01 .
    ">texte en anglais</a>";

//Suivant la valeur en session est vide on affiche soit le menu par defaut sinon le lien contraire a celui en session.//
//Donc si il clique sur en c'est le lien fr qui apparait et inversement.//
$lien_langue = ($_SESSION['choixlang'] == 'fr') ? $en : $fr;
$menu        = isset($_SESSION['choixlang']) ? $lien_langue : $choixlangue;
echo $menu;
?>
Donc par défaut il y a deux choix FR et en une fois que tu clique sur un des deux le choix se place en $_SESSION et n'apparaît plus que le lien opposer à la session donc le lien FR si en session c'est en et inversement, bon j'ai fais ça en vitesse mais ça fonctionne. :wink:

par mbernard » 18 mai 2009, 18:01

Hello,

En début de fichier tu vérifie si la langue est passée par l'URL (si oui, c'est que l'utilisateur a cliqué sur un lien pour changer de langue) :

Code : Tout sélectionner

$languages = array( 'FR' => 'Français', 'EN' => 'English' ); if (isset($_GET['lang']) && array_key_exists($_GET['lang'], $languages)) { $_SESSION['lang'] = $_GET['lang']; } if (!isset($_SESSION['lang'])) { $_SESSION['lang'] = 'fr'; }
En passant, on stocke les langues autorisées dans un array, ce qui permet d'y stocker les label, et d'éviter les failles de sécurité en filtrant les langues passées par l'URL.
La 2ème partie permet d'initialiser la langue par défaut à 'Français'.


Ensuite, tu inclues ton fichier comme ca :

Code : Tout sélectionner

include('lang/'.$_SESSION['lang'].'.php');

En enfin dans ton fichier HTML tu ajoutes les liens suivants pour que les utilisateurs puissent changer de langue :

Code : Tout sélectionner

<a href="acceuil.php?lang=fr"> <?php echo $languages['FR']; ?> </a> <a href="acceuil.php?lang=en"> <?php echo $languages['EN']; ?> </a>

par webgalerien » 18 mai 2009, 17:13

Merci Dunbar mais, même si j ai noté ce code qui me sera utile , cela n ai pas vraiment ce que je cherche a faire.
  • bon alors la j y comprend vraiment rien du tout......ouin!!!!

    je voudrai que sur la même page, lors du clic sur un lien,

    la valeur de "$lang" de la session "choixlang" change et donc qu'elle puisse ensuite être transmise dans la session.

    pour le moment je n ai compris que le principe de la session

    mais seulement en déclarant la valeur de "$lang" au début du script.

    comment faire pour que mon lien change cette valeur.

    avec ce code j ai bien le lien qui change dans le navigateur mais pas la valeur "$lang" de la session
    $fr = "<a href=".$urltest.'?lang='.$_SESSION['choixlang'] = 'fr'.' title='.$titretest.">texte en fran&ccedil;ais</a>";
    $en = "<a href=".$urltest.'?lang='.$_SESSION['choixlang'] = 'en'.' title='.$titretest.">texte en anglais</a>";
    
    
    $lien_langue = ($_SESSION['choixlang'] = 'fr') ? $en : $fr ;
    
    echo  $lien_langue ;
    
    et si je ne la renseigne pas
    cela mais forcement une erreur ,

    qui peux m expliquer ou est mon erreur ?
    si je remplace $lang='fr" par $lang ='en'
    le reste des pages change bien de langue

    donc ma session reçoit bien la valeur $lang

    mais comment écrire un lien qui va changer cette valeur ?
    dans la même page
<?php
//demarrer une session
session_start();
$lang ='fr';
//$lang ='en';
$_SESSION['choixlang'] = $lang ;

if(isset($_SESSION['choixlang']))
{
    // Si la session ["choixlang"] existe
    // On recupre la variable pour l'ajouter au choix de fichier
    // Attention la variable doit avoir la meme appelation que le debut du nom du fichier
    // "fr" => fr_lang.php et "en" => en_lang.php
      include('lang/'.$_SESSION['choixlang'].'-lang.php');
      echo 'La variable "choixlang" existe et le fichier langue est :' . $_SESSION['choixlang'];
      echo '<br>';
}
else
{
    // Si la session $_SESSION["choixlang"] n'est pas renseignée
    // Alors j'inclus la langue par défaut
    include('lang/fr-lang.php');
}
include ("lien.inc.php");
?>

Help please!!!!!!!!

par dunbar » 18 mai 2009, 14:12

Salut,
Comme ceci peut-être
<?php
$fr = "<a href=".$url01.'?lang=fr title='.$titre01.">texte en fran&ccedil;ais</a>";
$en = "<a href=".$url01.'?lang=en title='.$titre01.">texte en anglais</a>";
 
$lien_langue = ($_SESSION['choixlang'] == 'fr') ? $en : $fr ;

echo  $lien_langue ;
?>

Si la langue de session est fr c'est le lien en qui s'afiche et inversement.

par webgalerien » 18 mai 2009, 13:44

  • salut ,

    donc sur ton conseil

    j ai teste avec les sessions, ne connaissant pas leurs utillisation
    (je debute, est t il utile de le preciser ;-) )

    j ai pas mal chercher
    et j ai trouver un cours assez clair pour moi

    voila ce que j ai fais:
<?php
//je demarre une session
session_start();
$lang ='fr';//je defini la langue fr pour francais et en pour anglais

$_SESSION['choixlang'] = $lang ;//j ouvre une session "choixlang"

if(isset($_SESSION['choixlang']))
{
    // Si la session ["choixlang"] existe
    // On recupere la variable pour l'ajouter au choix de fichier
    // Attention la variable doit avoir la meme appelation que le debut du nom du fichier
    // "fr" => fr_lang.php et "en" => en_lang.php
      include('lang/'.$_SESSION['choixlang'].'-lang.php');
    //la je teste si c ok par un echo
      echo 'La variable "choixlang" existe et le fichier langue est :' . $_SESSION['choixlang'];
      echo '<br>';
}
else //sinon
{
    // Si la session $_SESSION["choixlang"] n'est pas renseignée
    // Alors j'inclus la langue par défaut
    include('lang/fr-lang.php');
}
include ("lien.inc.php"); // mon fichier de lien pour le report sur plusieurs pages
?>
  • avec ce code sur la 1er page j ai le texte en francais
    je reporte le code sur les autres pages en supprimant
$lang ='fr';//je defini la langue fr pour francais et en pour anglais
  • ensuite dans la 1er page si je change la valeur de "$lang" pour "en"
$lang ='en';//je defini la langue fr pour francais et en pour anglais
  • j ai bien toute mes pages en anglais
    donc tout va bien MAIS....

    comment dois je modifier mes liens de selection de langue sur chaque page pour permettre
    a l utilisateur de changer a sa guise la langue????

    avant j avais c 'est 2 liens qui changer la valeur pour chaque page mais qui ne transmettais pas
    a la page suivante

Code : Tout sélectionner

<a href="acceuil.php?lang=fr"> Francais </a> <br /> <a href="acceuil.php?lang=en"> Anglais </a>
j ai testé ceci
<?php
echo "<a href=".$url01.'?lang=fr title='.$titre01.">texte en fran&ccedil;ais</a>";
echo "<br />";
echo "<a href=".$url01.'?lang=en title='.$titre01.">texte en anglais</a>";
?>
  • mais cela ne marche pas
    j ai besoin d une explication sur la methode pour faire changer
    la valeur de $lang dans ma session par un lien.

    en resumé :
    je veux que sur la 1er page la langue par defaut soit le francais
    que le visiteur puisse changer pour anglais
    mais que si sur une seconde page il souhaite revenir en francais
    il change cela par un lien.

    j'espere que je suis clair parce que je me perd un peu dans le php la.
d avance merci de vos reponses.

par Sodams » 14 mai 2009, 20:35

Pourquoi veux-tu rajouter celà?
($_GET['lang']=='fr');
Si tu veux que ta variable porte sur toutes les pages, utilises alors les $_SESSION

par webgalerien » 14 mai 2009, 14:53

ok j ai apris plein de truc la , et j ai deja une meileure lecture de ce qui se passe ...
mais (et oui toujours un mais avec moi...lol)

si ma variable lang n'est pas defini comment puis je dire qu elle soit par defaut sur la 1er page avec la valeur fr ?

voila ce que j ai retaper cela marche seulement une fois que jai declare "lang"

sauf que au 1er chargement j 'ai ,forcement une erreur.

j ai tente de rajouter cela mais sans succes...
<?php
if (isset($_GET["lang"])) {
    // Si la variable $_GET["lang"] existe
    // On recupre la variable pour l'ajouter au choix de fichier
    // Attention la variable doit avoir la meme appelation que le debut du nom du fichier
   // pour que le choix se fasse
    // "fr" => fr-lang.php et "en" => en-lang.php
    include('lang/'.$_GET["lang"].'-lang.php');
}
else {
    // Si la variable $_GET["lang"] n'existe pas
    // Alors j'inclus la langue par défaut (ou je redirige vers la page choix de la langue)
    include('lang/fr-lang.php');
    ($_GET['lang']=='fr');   //ce que jai tente de rajouter mais ...
}
?>
merci de vos reponses....

par Sodams » 14 mai 2009, 09:24

Commence par vérifier que la variable langue existe, si oui, alors tu peux ajouter le fichier de la langue.
if(isset($_GET["lang"]))
{
    // Si la variable $_GET["lang"] existe
    include('lang/'.$_GET["lang"].'-lang.php');
}
else
{
    // Si la variable $_GET["lang"] n'existe pas
    // Alors j'inclus la langue par défaut (ou je redirige vers la page choix de la langue)
    include('lang/fr-lang.php');
}
Attention : Je ne fais pas de vérification sur le contenu de la variable $_GET["lang"], si l'utilisera change l'adresse et ajoute lang=another_language,
include('lang/'.$_GET["lang"].'-lang.php')
va te retourner une erreur.

par thehawk » 14 mai 2009, 08:20

    else {($_GET['lang']=='fr') {        // si aucune langue n'est déclarée on  choisi FR et on inclut le fichier fr-lang.php par défaut
    include('lang/fr-lang.php');
   }
Ton souci viens de : {($_GET['lang']=='fr') {

dans le else tu n'a besoin que des {}

je m'explique
if (...) {

}
elseif () {


}
else {


}
Bye Hawk

par webgalerien » 14 mai 2009, 03:14

parfait cela fonctionne
merci pour cette reponse rapide...

j ai 2 autres question , la 1er est es ce que ma syntaxe est bonne
<?php echo "<a href=".$url01.'?lang='.$_GET['lang']." title=".$titre01.">".URL_MENU_1."</a>"; ?>
et la 2eme c que sur la premiere page la valeur 'lang' n est pas declare donc j ai un message d erreur ????

j ai tenter

sa
<?php
require("decide-lang.php");
include ("lien.inc.php");
$_GET['lang']=='fr';
?>
mais pareil
parcontre des que je clique sur mon lien de selection de langue , la plus de probleme

comment je peux renseigner cette valeur ?

j ai tenter aussi de mettre cela

<?php
   if ($_GET['lang']=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
   include('lang/fr-lang.php');
   }
    else if ($_GET['lang']=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
    include('lang/en-lang.php');
   }
    else {($_GET['lang']=='fr') {        // si aucune langue n'est déclarée on  choisi FR et on inclut le fichier fr-lang.php par défaut
    include('lang/fr-lang.php');
   }
?>
et forcement cela marche pas non plus
j ai
Parse error: parse error in m:\easyphp1-8\www\decide-lang.php on line 8

qu'est ce que je peux tenter ?

j 'ai pense que si ja vais une page d acceuil avant et que je passe la valeur par le lien cela reglerai le probleme (je v tester demain) mais il y t il une solution pour que la page declare cette valeur lors de son 1er chargement ?

d avance merci si quelqu un peux eclairer ma lanterne.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par dunbar » 13 mai 2009, 19:30

Dans ton cas je pense que ceci fera l'affaire
echo '<a href="blabla2.php?lang='.$_GET['lang'].'">blabla2</a>';

par orgerix » 13 mai 2009, 19:27

Dans ce cas, il vaut mieux travailler avec les sessions.

En gros, si ta variable $_GET['lang'] existe, tu inclue le fichier langue correspondant et tu la stocke dans une variable de session.

Si elle n'existe pas, tu regarde si la variable de session a été définie et dans ce cas tu l'utilise. Sinon, tu utilise une langue par défaut.