Bonjour,
Je rencontre pas mal de difficultés avec les sessions et je poserai
ici une question précise, mais tout d'abord, je voudrais vérifier que
j'ai bien compris le mécanisme.
Si vous avez quelques minutes à m'accorder :
1 - chaque script doit contenir :
if (isset($PHPSESSID)) session_start($PHPSESSID); else
session_start();
==> J'ai essayé de l'enlever, on perd les variables.
Ca a l'air de marcher aussi lorsque la ligne est dans un fichier
machin.inc.php qu'on appelle par require_once dans chaque script.
Correct ?
2 - Dans le premier script qui crée une variable de session :
$_SESSION['cQuery']="select * from table where condition";
==> est correct et suffit (on dirait...) ? ou faut il écrire :
$cQuery="select * from table where nouvelle condition";
session_register['cQuery'];
pour créer les variables de session et les valoriser ?
3 - chaque script ayant besoin de manipuler les variables, les
récupère comme ceci :
$cQuery=$_SESSION['cQuery'];
==> Mais si je ne commet pas d'erreur, c'est inutile, $cQuery existe
dès le session_start() pour le script, et contient évidemment la
valeur.
4 - Dans le cas ou l'on change la valeur d'une variable, on "prévient"
le gestionnaire de session :
$_SESSION['cQuery']="select * from table where nouvelle condition";
==> Pareil, $cQuery="select * from table where nouvelle condition"; a
l'air de suffire largement.
Donc les sessions, ce serait simple ? Alors pourquoi la doc est-elle
si vague ?
p.e. concernant session_start : il n'est pas indiqué que c'est
obligatoire en tete de chaque script.
concernant session_register : la méthode alternative n'est pas
indiquée...
à quoi peut bien servir session_name ? session_module_name ?
Et surtout, pourquoi mes scripts ne fonctionnent-ils pas ? Je
donnerais des détails plus tard !
En attendant,
Salutatous et merci
&ric.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
CrazyCat
Eric BILLARD wrote:
1 - chaque script doit contenir : if (isset($PHPSESSID)) session_start($PHPSESSID); else session_start();
Effectivement: si ta session existe, tu la relance, sinon tu en crées une vide
2 - Dans le premier script qui crée une variable de session : $_SESSION['cQuery']="select * from table where condition"; ==> est correct et suffit (on dirait...) ? ou faut il écrire : $cQuery="select * from table where nouvelle condition"; session_register['cQuery']; pour créer les variables de session et les valoriser ?
Passer une requète en session? Ne serait-il pas plus simple d'avoir une fonction de traitement du type: fonction my_session($_SESSION['cQuery']) { $sql_sess = "SELECT * FROM table WHERE condition_basée_sur_cQuery"; $req_sess = mysql_query($sql_sess); list($cQuery) = mysql_fetch_row($req_sess); return $cQuery; } (traitement totalement arbitraire et faux)
3 - chaque script ayant besoin de manipuler les variables, les récupère comme ceci : $cQuery=$_SESSION['cQuery']; ==> Mais si je ne commet pas d'erreur, c'est inutile, $cQuery existe dès le session_start() pour le script, et contient évidemment la valeur.
Pour le traitement, il est quand même intéressant de récupérer ta variable, mais ça n'apporte pas grand chose
4 - Dans le cas ou l'on change la valeur d'une variable, on "prévient" le gestionnaire de session : $_SESSION['cQuery']="select * from table where nouvelle condition"; ==> Pareil, $cQuery="select * from table where nouvelle condition"; a l'air de suffire largement.
Si je me souviens bien, il faut effectivement modifier $cQuery, à la fin de ton traitement tu dois avoir un session_register("cQuery); qui va donc mettre à jour la session
p.e. concernant session_start : il n'est pas indiqué que c'est obligatoire en tete de chaque script.
Il vaut mieux: tu ne peux pas rajouter d'entête plus tard
concernant session_register : la méthode alternative n'est pas indiquée...
Alors n'utilise pas l'alternative :) (lol)
-- Tout sur les eggdrops http://www.c-p-f.org ML @
Eric BILLARD wrote:
1 - chaque script doit contenir :
if (isset($PHPSESSID)) session_start($PHPSESSID); else
session_start();
Effectivement: si ta session existe, tu la relance, sinon tu en crées
une vide
2 - Dans le premier script qui crée une variable de session :
$_SESSION['cQuery']="select * from table where condition";
==> est correct et suffit (on dirait...) ? ou faut il écrire :
$cQuery="select * from table where nouvelle condition";
session_register['cQuery'];
pour créer les variables de session et les valoriser ?
Passer une requète en session?
Ne serait-il pas plus simple d'avoir une fonction de traitement du type:
fonction my_session($_SESSION['cQuery']) {
$sql_sess = "SELECT * FROM table WHERE condition_basée_sur_cQuery";
$req_sess = mysql_query($sql_sess);
list($cQuery) = mysql_fetch_row($req_sess);
return $cQuery;
}
(traitement totalement arbitraire et faux)
3 - chaque script ayant besoin de manipuler les variables, les
récupère comme ceci :
$cQuery=$_SESSION['cQuery'];
==> Mais si je ne commet pas d'erreur, c'est inutile, $cQuery existe
dès le session_start() pour le script, et contient évidemment la
valeur.
Pour le traitement, il est quand même intéressant de récupérer ta
variable, mais ça n'apporte pas grand chose
4 - Dans le cas ou l'on change la valeur d'une variable, on "prévient"
le gestionnaire de session :
$_SESSION['cQuery']="select * from table where nouvelle condition";
==> Pareil, $cQuery="select * from table where nouvelle condition"; a
l'air de suffire largement.
Si je me souviens bien, il faut effectivement modifier $cQuery, à la fin
de ton traitement tu dois avoir un session_register("cQuery); qui va
donc mettre à jour la session
p.e. concernant session_start : il n'est pas indiqué que c'est
obligatoire en tete de chaque script.
Il vaut mieux: tu ne peux pas rajouter d'entête plus tard
concernant session_register : la méthode alternative n'est pas
indiquée...
Alors n'utilise pas l'alternative :) (lol)
--
Tout sur les eggdrops
http://www.c-p-f.org
ML @ eggdrop_fr@yahoogroupes.fr
1 - chaque script doit contenir : if (isset($PHPSESSID)) session_start($PHPSESSID); else session_start();
Effectivement: si ta session existe, tu la relance, sinon tu en crées une vide
2 - Dans le premier script qui crée une variable de session : $_SESSION['cQuery']="select * from table where condition"; ==> est correct et suffit (on dirait...) ? ou faut il écrire : $cQuery="select * from table where nouvelle condition"; session_register['cQuery']; pour créer les variables de session et les valoriser ?
Passer une requète en session? Ne serait-il pas plus simple d'avoir une fonction de traitement du type: fonction my_session($_SESSION['cQuery']) { $sql_sess = "SELECT * FROM table WHERE condition_basée_sur_cQuery"; $req_sess = mysql_query($sql_sess); list($cQuery) = mysql_fetch_row($req_sess); return $cQuery; } (traitement totalement arbitraire et faux)
3 - chaque script ayant besoin de manipuler les variables, les récupère comme ceci : $cQuery=$_SESSION['cQuery']; ==> Mais si je ne commet pas d'erreur, c'est inutile, $cQuery existe dès le session_start() pour le script, et contient évidemment la valeur.
Pour le traitement, il est quand même intéressant de récupérer ta variable, mais ça n'apporte pas grand chose
4 - Dans le cas ou l'on change la valeur d'une variable, on "prévient" le gestionnaire de session : $_SESSION['cQuery']="select * from table where nouvelle condition"; ==> Pareil, $cQuery="select * from table where nouvelle condition"; a l'air de suffire largement.
Si je me souviens bien, il faut effectivement modifier $cQuery, à la fin de ton traitement tu dois avoir un session_register("cQuery); qui va donc mettre à jour la session
p.e. concernant session_start : il n'est pas indiqué que c'est obligatoire en tete de chaque script.
Il vaut mieux: tu ne peux pas rajouter d'entête plus tard
concernant session_register : la méthode alternative n'est pas indiquée...
Alors n'utilise pas l'alternative :) (lol)
-- Tout sur les eggdrops http://www.c-p-f.org ML @
billard.eric
Merci, CrazyCat
2 - Dans le premier script qui crée une variable de session : $_SESSION['cQuery']="select * from table where condition"; ==> est correct et suffit (on dirait...) ? ou faut il écrire : $cQuery="select * from table where nouvelle condition"; session_register['cQuery']; pour créer les variables de session et les valoriser ?
Passer une requète en session? Ne serait-il pas plus simple d'avoir une fonction de traitement du type: fonction my_session($_SESSION['cQuery']) { $sql_sess = "SELECT * FROM table WHERE condition_basée_sur_cQuery"; $req_sess = mysql_query($sql_sess); list($cQuery) = mysql_fetch_row($req_sess); return $cQuery; } Je ne comprend pas tres bien en quoi, créer une fonction de 4 lignes,
est plus simple que de se passer la phrase sql et l'activer par $db->query($cQuery), eh oui, j'utilise pear...
4 - Dans le cas ou l'on change la valeur d'une variable, on "prévient" le gestionnaire de session : $_SESSION['cQuery']="select * from table where nouvelle condition"; ==> Pareil, $cQuery="select * from table where nouvelle condition"; a l'air de suffire largement.
Si je me souviens bien, il faut effectivement modifier $cQuery, à la fin de ton traitement tu dois avoir un session_register("cQuery); qui va donc mettre à jour la session J'ai peur de ne pas comprendre ce que tu veux dire, d'après mes essais
$cQuery="select * from table where nouvelle condition"; suffit largement à mettre à jour la variable de session.
p.e. concernant session_start : il n'est pas indiqué que c'est obligatoire en tete de chaque script. Il vaut mieux: tu ne peux pas rajouter d'entête plus tard
Peux-tu developper ça, je ne capte pas du tout...
Pour tout dire, l'enchainement que j'ai conçu est le suivant : - un script formulaire pour choisir des champs et des valeurs à tester, - un script qui analyse ($_POST['']=) les données du formulaire pour construire la clause WHERE du SELECT ($_SESSION['cQuery']=...) et enfin un script (conçu par JP DEZELUS) qui s'appelle lui meme, pour effectuer la requete et afficher les lignes de résultat par paquets de 30 et qui utilise donc la chaine $cQuery avec (LIMIT $debut, $nblignes pour "scroller" dans le résultat). Merci encore, EB
Merci, CrazyCat
2 - Dans le premier script qui crée une variable de session :
$_SESSION['cQuery']="select * from table where condition";
==> est correct et suffit (on dirait...) ? ou faut il écrire :
$cQuery="select * from table where nouvelle condition";
session_register['cQuery'];
pour créer les variables de session et les valoriser ?
Passer une requète en session?
Ne serait-il pas plus simple d'avoir une fonction de traitement du type:
fonction my_session($_SESSION['cQuery']) {
$sql_sess = "SELECT * FROM table WHERE condition_basée_sur_cQuery";
$req_sess = mysql_query($sql_sess);
list($cQuery) = mysql_fetch_row($req_sess);
return $cQuery;
}
Je ne comprend pas tres bien en quoi, créer une fonction de 4 lignes,
est plus simple que de se passer la phrase sql et l'activer par
$db->query($cQuery), eh oui, j'utilise pear...
4 - Dans le cas ou l'on change la valeur d'une variable, on "prévient"
le gestionnaire de session :
$_SESSION['cQuery']="select * from table where nouvelle condition";
==> Pareil, $cQuery="select * from table where nouvelle condition"; a
l'air de suffire largement.
Si je me souviens bien, il faut effectivement modifier $cQuery, à la fin
de ton traitement tu dois avoir un session_register("cQuery); qui va
donc mettre à jour la session
J'ai peur de ne pas comprendre ce que tu veux dire, d'après mes essais
$cQuery="select * from table where nouvelle condition";
suffit largement à mettre à jour la variable de session.
p.e. concernant session_start : il n'est pas indiqué que c'est
obligatoire en tete de chaque script.
Il vaut mieux: tu ne peux pas rajouter d'entête plus tard
Peux-tu developper ça, je ne capte pas du tout...
Pour tout dire, l'enchainement que j'ai conçu est le suivant :
- un script formulaire pour choisir des champs et des valeurs à
tester,
- un script qui analyse ($_POST['']=) les données du formulaire pour
construire la clause WHERE du SELECT ($_SESSION['cQuery']=...)
et enfin un script (conçu par JP DEZELUS) qui s'appelle lui meme, pour
effectuer la requete et afficher les lignes de résultat par paquets de
30 et qui utilise donc la chaine $cQuery avec (LIMIT $debut, $nblignes
pour "scroller" dans le résultat).
Merci encore,
EB
2 - Dans le premier script qui crée une variable de session : $_SESSION['cQuery']="select * from table where condition"; ==> est correct et suffit (on dirait...) ? ou faut il écrire : $cQuery="select * from table where nouvelle condition"; session_register['cQuery']; pour créer les variables de session et les valoriser ?
Passer une requète en session? Ne serait-il pas plus simple d'avoir une fonction de traitement du type: fonction my_session($_SESSION['cQuery']) { $sql_sess = "SELECT * FROM table WHERE condition_basée_sur_cQuery"; $req_sess = mysql_query($sql_sess); list($cQuery) = mysql_fetch_row($req_sess); return $cQuery; } Je ne comprend pas tres bien en quoi, créer une fonction de 4 lignes,
est plus simple que de se passer la phrase sql et l'activer par $db->query($cQuery), eh oui, j'utilise pear...
4 - Dans le cas ou l'on change la valeur d'une variable, on "prévient" le gestionnaire de session : $_SESSION['cQuery']="select * from table where nouvelle condition"; ==> Pareil, $cQuery="select * from table where nouvelle condition"; a l'air de suffire largement.
Si je me souviens bien, il faut effectivement modifier $cQuery, à la fin de ton traitement tu dois avoir un session_register("cQuery); qui va donc mettre à jour la session J'ai peur de ne pas comprendre ce que tu veux dire, d'après mes essais
$cQuery="select * from table where nouvelle condition"; suffit largement à mettre à jour la variable de session.
p.e. concernant session_start : il n'est pas indiqué que c'est obligatoire en tete de chaque script. Il vaut mieux: tu ne peux pas rajouter d'entête plus tard
Peux-tu developper ça, je ne capte pas du tout...
Pour tout dire, l'enchainement que j'ai conçu est le suivant : - un script formulaire pour choisir des champs et des valeurs à tester, - un script qui analyse ($_POST['']=) les données du formulaire pour construire la clause WHERE du SELECT ($_SESSION['cQuery']=...) et enfin un script (conçu par JP DEZELUS) qui s'appelle lui meme, pour effectuer la requete et afficher les lignes de résultat par paquets de 30 et qui utilise donc la chaine $cQuery avec (LIMIT $debut, $nblignes pour "scroller" dans le résultat). Merci encore, EB