Page 1 sur 2

Probleme de variable de session

Posté : 08 mars 2010, 17:12
par remy442
Bonjour à tous ,

j'ai beson d'un coup de main car la je suis bloqué et je ne vois vraiment pas pourquoi.

Je m'explique: j'ai un problème de variables de session.

Sur ma page1.php j'ai

$_SESSION['ID'] = session_id();
echo $_SESSION['ID'];

Ma variable est bien défini car elle s'affiche bien.

Ensuite lorsque via un lien je passe a la page2.php

je fais un :

echo $_SESSION['ID']."---";

Et j'ai seulement les "---" qui s'affiche..

Je ne comprend pas pourquoi étant donné que j'utilise les sessions ailleurs et sans probleme...

Merci d'avance si quelqu'un a une idée ou quelque chose auquel je ne penserais pas.

Re: Probleme de variable de session

Posté : 08 mars 2010, 17:28
par remy442
Une petite précision :

Si sur la page2.php je fais :

$_SESSION['test']="testok";

et sur la page1.php je fais:

echo $_SESSION['test'];

Lorsque je reviens de la page2.php vers la page1.php sur la page 1 mon "testok" s'affiche bien mais dans le sens page1 vers page2 que je souhaite a la base ca ne fonctionne pas

Re: Probleme de variable de session

Posté : 08 mars 2010, 17:31
par Yosh
tu montrer tout ton code?

Re: Probleme de variable de session

Posté : 08 mars 2010, 18:22
par remy442
Je suis en train d'essayer de passer ma requete en GET juste pour voir

et la je suis confronté a un probleme de ' " qui coupe ma requete.

Exemple :

if($_REQUEST['groupe'] && $_REQUEST['groupe']!='tous')
$filtre .= " AND c.groupe_id=".$_REQUEST['groupe'];
if($_REQUEST['agence_id'] && $_REQUEST['agence_id']!='toutes' && $_REQUEST['oldgroup']==$_REQUEST['groupe'] || $_REQUEST['agence_id'] && $_REQUEST['agence_id']!='toutes' && isset($id_gr))
$filtre .= " AND a.agence_id=".$_REQUEST['agence_id'];
if($_REQUEST['datedeb'])
$filtre .= " AND a.commande_date>'".datefr2en($_REQUEST['datedeb'])."' AND a.commande_date<'".datefr2en($_REQUEST['datefin'])."'";
if(isset($id_gr))
$filtre .= " AND u.groupe_id=".$id_gr;
if($_SESSION['recherche']!='')
$filtre = " AND a.commande_interne_client LIKE \"".$_SESSION['recherche']."\"";


$query = sprintf(
"SELECT a.commande_id, a.annule, a.commande_date, a.agence_id, a.commande_interne_client, a.commande_type, u.agence_id, u.agence_nom, c.groupe_id, u.groupe_id, c.groupe_nom
FROM ".DB_TABLE_COMMANDE." a, agence u , groupe c WHERE u.groupe_id=c.groupe_id AND u.agence_id=a.agence_id ".$filtre ." %s %s", "ORDER BY u.groupe_id ASC, a.agence_id ASC, ".$tri." ".$ord, $pgelimit);

si je fais :

echo $query;

j'ai ceci : SELECT a.commande_id, a.annule, a.commande_date, a.agence_id, a.commande_interne_client, a.commande_type, u.agence_id, u.agence_nom, c.groupe_id, .groupe_id, c.groupe_nom FROM commande a, agence u , groupe c WHERE u.groupe_id=c.groupe_id AND u.agence_id=a.agence_id AND a.commande_date>'2010-03-01' AND a.commande_date<'2010-03-31' ORDER BY u.groupe_id ASC, a.agence_id ASC, commande_id

quand je passe en GET, de l'autre coté je recupere seulement ceci :

SELECT a.commande_id, a.annule, a.commande_date, a.agence_id, a.commande_interne_client, a.commande_type, u.agence_id, u.agence_nom, c.groupe_id, u.groupe_id, c.groupe_nom FROM commande a, agence u , groupe c WHERE u.groupe_id=c.groupe_id AND u.agence_id=a.agence_id AND a.commande_date>

j'ai l'i^mpression qu'il n'aime pas les '$filtre' et que ca me coupe la requete. Comment eviter cela.

Merci

Re: Probleme de variable de session

Posté : 08 mars 2010, 18:34
par stealth35
met les balises [ php][/php], dans ton message on voit pas grand chose la :wink:

Re: Probleme de variable de session

Posté : 08 mars 2010, 18:53
par remy442
if($_REQUEST['groupe'] && $_REQUEST['groupe']!='tous')
$filtre .= " AND c.groupe_id=".$_REQUEST['groupe'];
if($_REQUEST['agence_id'] && $_REQUEST['agence_id']!='toutes' && $_REQUEST['oldgroup']==$_REQUEST['groupe'] || $_REQUEST['agence_id'] && $_REQUEST['agence_id']!='toutes' && isset($id_gr))
$filtre .= " AND a.agence_id=".$_REQUEST['agence_id'];
if($_REQUEST['datedeb'])
$filtre .= " AND a.commande_date>'".datefr2en($_REQUEST['datedeb'])."' AND a.commande_date<'".datefr2en($_REQUEST['datefin'])."'"; 
if(isset($id_gr)) 
$filtre .= " AND u.groupe_id=".$id_gr;
if($_SESSION['recherche']!='') 
$filtre = " AND a.commande_interne_client LIKE \"".$_SESSION['recherche']."\"";
$query = sprintf(
"SELECT a.commande_id, a.annule, a.commande_date, a.agence_id, a.commande_interne_client, a.commande_type, u.agence_id, u.agence_nom, c.groupe_id, u.groupe_id, c.groupe_nom 
FROM ".DB_TABLE_COMMANDE." a, agence u , groupe c WHERE u.groupe_id=c.groupe_id AND u.agence_id=a.agence_id ".$filtre ." %s %s", "ORDER BY u.groupe_id ASC, a.agence_id ASC, ".$tri." ".$ord, $pgelimit);

Re: Probleme de variable de session

Posté : 08 mars 2010, 19:55
par niuxe
Hello, (tu as vu je l'ai pas fait) :-*
[...]dans ton message on voit pas grand chose la :wink:
C'est juste plus coloré maintenant. Oh la belle bleue, oh la belle rouge, etc. :tir2:

Évite le $_REQUEST. $_REQUEST permet de récupérer n'importe quelle super-globale (cookie, get, post, session). C'est une faille potentielle si je ne m'abuse.

Méthodologie :
1. As tu essayé ta requête dans la console mysql par exemple ? As tu un résultat convaincant ?
2. As tu essayé d'afficher ta requête en dur ? (echo $query) ? Est ce que cette dernière aura à peu près le même résultat dans la console Mysql ?
3. As tu regardé le tableau $_REQUEST ? (print_r( $_REQUEST)) ? As tu quelque chose de convaincant ?

Méthodologie générale :
1. donner des noms bien explicites à tes variables et fonctions (le mieux en Français pour pleins de raisons) ;)
2. garder une ligne de conduite d'ecriture ($var_kelke_choz et plus loin $varAutreChoz)
3. bien indenter son code (perso, je préfère l'écriture hongroise)
4. bien commenter les blocs (pas de redondance)
5. pas de commentaire faux/obsolète (!)

Au passage, il y a ce livre qui me semble bien fait : Coder proprement. Je l'ai feuilleter et il me semble bien sympa pour apréhender un bon script.

Bonne soirée à toi

Re: Probleme de variable de session

Posté : 08 mars 2010, 21:44
par remy442
Bonsoir,

Alors pour le echo $query
elle s'ecrit bien oui.

Je ne comprend vraiment pas pourquoi elle pas pas a l'autre pas en tant que variable de session.

J'ai essayer de contourner en faisant pas comme ceci :
$_SESSION['exportquery']=$query
Dans mon lien export j'ai mis
../export.php?requete=.'$_SESSION['exportquery']'.
Sauf que vu que dans ma requete il y a des ' ' pour ajouter des variable de date
SELECT a.commande_id, a.annule, a.commande_date, a.agence_id, a.commande_interne_client, a.commande_type, u.agence_id, u.agence_nom, c.groupe_id, u.groupe_id, c.groupe_nom 
FROM ".DB_TABLE_COMMANDE." a, agence u , groupe c WHERE u.groupe_id=c.groupe_id AND u.agence_id=a.agence_id AND a.commande_date>'".datefr2en($_REQUEST['datedeb'])."' AND a.commande_date<'".datefr2en($_REQUEST['datefin'])."'"
Lors de la recuperation via GET sur le seconde page sa me coupe la recuperation a : a.commandedate> vu qu'apres il y a des ' '

Comment faire pour eviter ce probleme ??

Merci d'avance

Re: Probleme de variable de session

Posté : 08 mars 2010, 22:46
par Aureusms
J'ai lu en travers mais peux tu me dire si :
  • session_start() est présent dans ton code de ta page 2
    tes coockies sont activés

Re: Probleme de variable de session

Posté : 08 mars 2010, 22:51
par remy442
malheureusement oui session start est bien présent sur la deuxieme page

Re: Probleme de variable de session

Posté : 08 mars 2010, 22:52
par Aureusms
Et tes coockies ?

Re: Probleme de variable de session

Posté : 08 mars 2010, 23:25
par remy442
Oui tout est bien activé :D

Re: Probleme de variable de session

Posté : 09 mars 2010, 00:03
par Aureusms
Hmmm :-k
Si tes sessions sont activées, si tes cookies sont activés il reste deux choix :

1) ton serveur refuse cela (mais je n'ai jamais rien vu de pareil)
2) plus haut dans ton code tu efface les sessions ou tu réécris dessus.

Dernier truc, n'utilises plus $_request mais plutôt $_SESSION, $_GET, $_FILES ou $_POST.
Ne mais pas ta requête dans l'url car tu es limité en taille (je crois me rappeler de 250 caractères max). Si tu veux vraiment utiliser ce mode, serialize() ta requête. Mais je te le déconseille... Les requêtes côté serveur doivent rester côté serveur...

Essaye cela :
créer 2 pages appelées test1.php et test2.php

test1.php
<?php
session_start();
$_SESSION["test"] = "roule les sessions";
header ("Location: test2.php");
?>
test2.php
<?php
session_start();
echo $_SESSION["test"];
?>
vérifie que je ne me soit pas trompé dans le header.

Re: Probleme de variable de session

Posté : 09 mars 2010, 00:30
par remy442
Cela fonctionne j'avais déja essayer.

Le problème c'est que je viens de reprendre un projet en court d'un site qui m'était jusqu'a ce jour inconnu.
C'est pour ca c'est pas evident.

Ya pas mal de chose sur la page.

Quel est le code qui efface les sessions ? (session destroy ? ) Je vais regarder si y'a pas ca dans un include ou une connerie comme ca...

Je commence a desesperer.

Re: Probleme de variable de session

Posté : 09 mars 2010, 08:25
par Aureusms
Concernant la destruction de session, tu as le choix entre :
$_session = "";
unset($_session);
session_destroy();