Variables qui se perdent en route [Résolu]

Signaler
Messages postés
34
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
25 juin 2008
-
Messages postés
510
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
5 juillet 2009
-
Bonjour

j'ai un petit problème de variables qui se perdent durant la navigation !

En effet, j'ai une variable $client sur ma page client.php transmise a article.php de cette manière :
Code : PHP
1, echo "href="article.php?client=$ligne[1]


Puis je la met en variable de session :
Code : PHP
1
2, $client= $_GET['client'];
$_SESSION['client'] = $client ;


Ensuite, sur la page article.php et la page article2.php, aucun problème.

De même sur la page article3.php, mais cette page qui a pour but de
rediriger à nouveau vers la page article.php ne transmet plus la
variable, et donc n'apparait plus sur la page article.php lors du
second passage


Et je ne vois pas pourquoi ...

Si quelqu'un a une idée

Merci !

9 réponses

Messages postés
510
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
5 juillet 2009
2
article.php :
<?php
session_start();
if(isset($_GET["session_close"])) session_destroy();

$type = $_SESSION['type'] ;

---> $client= $_GET['client'];
---> $_SESSION['client'] = $client ;

if (isset($_GET['client'])) {
   $client = $_GET['client'];
   $_SESSION['client'] = $client;
} else {
   $client = $_SESSION['client'];
}
echo $client ;
?>

il y a :
$client= $_GET['client'];

$_SESSION['client'] = $client ;

en trop
Messages postés
510
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
5 juillet 2009
2
Tu as bien fait tes session_start() sur toutes tes pages ?

comment tu passes la variable entre article, article2 et article3 ?
Messages postés
34
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
25 juin 2008

Pour les session_start() : oui
Entre ces pages, j'ai juste remis $_SESSION['client'] = $client ; Cela fonctionne puisque mon echo $client s'affiche sauf au moment ou l'on retourne sur la page article.php
Messages postés
510
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
5 juillet 2009
2
Je crois voir d'ou vient le problème...

Dans article.php, tu fais $client = $_GET['client'], et quand tu reviens sur article.php depuis article3.php, ben $_GET['client'] n'a pas de valeur.

Suffit de te protéger (mettre un gros préservat _if_ )

if (isset($_GET['client'])) {
   $client = $_GET['client'];
   $_SESSION['client'] = $client;
} else {
   $client = $_SESSION['client'];
}

Désolé pour la blague foireuse...
Messages postés
34
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
25 juin 2008

Je dois bien mettre ca au début de ma page article.php ?
Si c'est le cas, ça ne marche toujours pas
Messages postés
510
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
5 juillet 2009
2
Colle le code de tes différentes pages, parce que comme ca je vois pas
Messages postés
34
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
25 juin 2008

client2.php :
<?php
session_start();
if(isset($_GET["session_close"])) session_destroy();

$client= $_POST['client'];
$_SESSION['client'] = $client ;

$type= $_POST['type'];
$_SESSION['type'] = $type ;
?>

<html>
<title>Verification</title>
verification du nom de client

&nbsp;
&nbsp;
&nbsp;
<head>
<link rel="stylesheet" media="screen" type="text/css" title="Essai" href="style.css" />
</head>

<?php
echo " Selectionnez le client souhaité :

"  ;

$fp = fopen("client.txt","r") ;
$compare=0;
   
while(!feof($fp) or ($compare==1))
{
   
    $buffer = fgets($fp);
    $ligne = explode(';',$buffer);
       
    if ($client==substr($ligne[1],0,strlen($client)))
    {
        echo "
$ligne[1]
";
        echo $ligne[2]."
";
        echo $ligne[3]."
";
        echo $ligne[4]."
";   
        echo "[client.php ]

</form>

</html>

article2.php :
<?php
session_start();
if(isset($_GET["session_close"])) session_destroy();

$gencod= $_POST['gencod'];
$_SESSION['gencod'] = $gencod ;
$type = $_SESSION['type'] ;

$client = $_SESSION['client'] ;
echo $client ;

?>

<?php
if(!isset($_POST['gencod']) && empty($_POST['gencod']))
    { //Si les informations du formulaire sont pas postés ou vides, c'est qu'il y a une erreur
        echo "Erreur lors de la saisie du fichier. Essayer à nouveau.";
        header("Location:article.php");
    }
    else
        if (!is_numeric($_POST['gencod']))  
    {  
        echo "La donnée saisie n'est pas un chiffre";  
        header("Location:article.php") ;
    }
   
else
{
    $gencod = $_POST['gencod'] ;
    $fp = fopen("artic.txt","r") ;
   
        while(!feof($fp))
        {
        $compare=0;
        $buffer = fgets($fp);
        $ligne = explode(';',$buffer);
               
        if ($gencod==$ligne[0])
            {
                $design = $ligne[1] ;
                $prix = $ligne[2] ;
                $compare=1;
            }   
        }
        if ($compare==0)
            {   
                echo 'L\'article n\'existe pas'."
";
                ?>[article.php Retour]<?php
            }   
}       
?>

<html>
<title>Saisie</title>

<head>
<link rel="stylesheet" media="screen" type="text/css" title="Essai" href="style.css" />
<script language="JavaScript">
function setfocus()
    {
    document.form5.quantite.focus();
    }
</script>
</head>

Saisie d'un article

<form name="form5" action="article3.php" method="post">
            ----

                   
                Designation :

           ,
       
        ----

                              >

           ,
           
        ----

                   
                Quantité désirée :

           ,
       
        ----

                              >

           ,
           
        ----

                   
                Prix souhaité :

           ,
       
        ----

                              >

           ,
           
        ----

                            &nbsp;

               

           ,
       
   

</form>

</html>

article3.php :
<?php
session_start();
if(isset($_GET["session_close"])) session_destroy();
$gencod = $_SESSION['gencod'];
$type = $_SESSION['type'] ;

$client = $_SESSION['client'] ;
echo $client ;
?>

<html>
<title>Verification</title>

verification du Gencod

&nbsp;

&nbsp;

&nbsp;

<head>
<link rel="stylesheet" media="screen" type="text/css" title="Essai" href="style.css" />
</head>

<?php

$quantite = $_POST['quantite'] ;
$prix = $_POST['prix'] ;
$total = $prix * $quantite ;

$fp = fopen("param.txt","r");
$param = fgets($fp,255);

if ($type == "facture" )
{
    $text = ($param.";".$client.";"."F".";".$gencod.";".$_POST['design'].";".$_POST['quantite'].";".$_POST['prix'].";".$total.";"."\r\n") ;
}
else
{
    $text = ($param.";".$client.";"."A".";".$gencod.";".$_POST['design'].";".$_POST['quantite'].";".$_POST['prix'].";".$total.";"."\r\n") ;
}

$fp = fopen("commande.txt","a");
fputs($fp,$text);      
fclose($fp);     

echo "<META HTTP-EQUIV="Refresh" CONTENT=0.5;URL="article.php"> " ;
?>

</html>

J'ai pas trouvé le moyen de "colorer" le code, désolé si c'est pas lisible :/
 
Messages postés
34
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
25 juin 2008

Ah oui, ça marche !
Merci de m'avoir aidé , t'a résolu 3 de mes problèmes depuis hier :D
Messages postés
510
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
5 juillet 2009
2
De rien, le site est la pour ca ;)