Probleme de variable de session

remy442
Invité n'ayant pas de compte PHPfrance

08 mars 2010, 17:12

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.

remy442
Invité n'ayant pas de compte PHPfrance

08 mars 2010, 17:28

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

Mammouth du PHP | 568 Messages

08 mars 2010, 17:31

tu montrer tout ton code?

remy442
Invité n'ayant pas de compte PHPfrance

08 mars 2010, 18:22

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

ViPHP
ViPHP | 5462 Messages

08 mars 2010, 18:34

met les balises [ php][/php], dans ton message on voit pas grand chose la :wink:

remy442
Invité n'ayant pas de compte PHPfrance

08 mars 2010, 18:53

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);

Eléphant du PHP | 453 Messages

08 mars 2010, 19:55

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
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

remy442
Invité n'ayant pas de compte PHPfrance

08 mars 2010, 21:44

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

ViPHP
ViPHP | 1996 Messages

08 mars 2010, 22:46

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
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

remy442
Invité n'ayant pas de compte PHPfrance

08 mars 2010, 22:51

malheureusement oui session start est bien présent sur la deuxieme page

ViPHP
ViPHP | 1996 Messages

08 mars 2010, 22:52

Et tes coockies ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

remy442
Invité n'ayant pas de compte PHPfrance

08 mars 2010, 23:25

Oui tout est bien activé :D

ViPHP
ViPHP | 1996 Messages

09 mars 2010, 00:03

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.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

remy442
Invité n'ayant pas de compte PHPfrance

09 mars 2010, 00:30

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.

ViPHP
ViPHP | 1996 Messages

09 mars 2010, 08:25

Concernant la destruction de session, tu as le choix entre :
$_session = "";
unset($_session);
session_destroy();
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr