Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1513 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Sessions PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sessions PHP

n°2140140
lp77
Posté le 02-05-2012 à 17:41:08  profilanswer
 

Bonjour, je bloque sur les sessions.
J'ai crée deux pages :

Code :
  1. <?php
  2. session_start() ;
  3. $login = isset($_POST['login']) ? $_POST['login'] : '';
  4. $_SESSION["login"]="$login";
  5. ?>
  6. <FORM method=POST action="ses2.php">
  7. login : <INPUT type=text name="login" >
  8. <INPUT type="submit" value="Envoyer">
  9. </FORM>


Page 2 :

Code :
  1. <?php
  2. session_start() ;
  3. echo $_SESSION["login"];
  4. ?>


Rien ne s'affiche sur la 2ème page ...
Merci;


Message édité par lp77 le 02-05-2012 à 17:41:55
mood
Publicité
Posté le 02-05-2012 à 17:41:08  profilanswer
 

n°2140277
xaeon
Profil: TT
Posté le 03-05-2012 à 00:50:49  profilanswer
 

A première vue ton formulaire appelle ta 2ème page, il est donc peu probable que les actions de la première page aient une influence.

 

page1.php

Code :
  1. <form method="post" action="page2.php">
  2.     login: <input type="text" name="login" />
  3.     <input type="submit" value="Envoyer" />
  4. </form>
 

page2.php:

Code :
  1. <?php
  2.     session_start();
  3.     $_SESSION["login"] = $_POST["login"];
  4.     echo $_SESSION[login"];
  5. ?>
 

C'est la page appelée dans l'action du formulaire de la page1.php qui va recevoir la variable $_POST et donc pouvoir faire l'affectation dans ta variable de session. D'autre part je ne sais pas s'il est très recommandable de mettre des session_start() sur toutes tes pages.

 

Enfin il faut faire attention aux données passées dans les formulaires si tu ne veux pas te retrouver avec quelques petits malins qui profiteraient de failles.


Message édité par xaeon le 03-05-2012 à 00:53:40
n°2140278
Buldozerbe​n
Shizofan !
Posté le 03-05-2012 à 00:55:00  profilanswer
 

Salut

 

tu as du t'emmêler les pinceaux ;)

 

Si tu regardes bien ton code, tu donnes à ta variable de session le résultat du formulaire sur la même page... ça ne marchera pas ! Tu dois assigner après l'envoi du formulaire ;)

 

EDIT : Grilled par @xaeon :D ^^


Message édité par Buldozerben le 03-05-2012 à 00:55:50

---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140290
lp77
Posté le 03-05-2012 à 08:38:27  profilanswer
 

c'était pour tester les sessions, le but est de demander les paramètres de connexion à une BDD dans une page et de les récupérer dans toutes les pages qui suivent (pour rouvrir une connexion avec les mêmes paramètres), comment je dois m'y prendre ?
Merci ..

n°2140303
Buldozerbe​n
Shizofan !
Posté le 03-05-2012 à 09:41:01  profilanswer
 

Salut !
 
J'imagine que tu as du faire le tour des sites comme le site du zéro ou autre pour te faire au moins une idée. Tout y est bien expliqué tu devrais t'en sortir à moindre frais. Si tu ne l'as pas fait commence au moins par là, ou avec un bon livre !
 
Sinon @xaeon t'a montré comment faire ... si tu ne comprends pas voici comment en reprenant ton code modifié pour que cela fonctionne  ... mais attention tu fais des erreurs d'apostrophe ou de double guillement et les balises en majuscule ça date de l'an 2000 ^^ :
 
page 1 :
 

Code :
  1. <?php
  2. session_start() ;
  3. ?>
  4. <form method="post" action="ses2.php">
  5. login : <input type=text name="login" >
  6. <input type="submit" value="Envoyer">
  7. </form>


 
page 2 :
 

Code :
  1. <?php
  2. session_start() ;
  3. $login = isset($_POST['login']) ? $_POST['login'] : '';
  4. $_SESSION['login']=$login;
  5. echo $_SESSION['login'];
  6. ?>


 
 
Bon courage ;)


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140328
lp77
Posté le 03-05-2012 à 10:12:48  profilanswer
 

Merci, Je veux demander les paramètres de connection dans un formulaire (1ère page) et donner ces paramètres à toutes les autres pages pour garder la même connexion à la BDD. Pour récupérer les paramètres sur les autres pages je fais comment ? :

Code :
  1. <?php session_start();
  2. $_SESSION['BDD_IP']=$BDD_IP;
  3. $_SESSION['BDD_util']=$BDD_util;
  4. $_SESSION['BDD_PSW']=$BDD_PSW;
  5. $_SESSION['BDD_name']=$BDD_name;
  6. ?>


Message édité par lp77 le 03-05-2012 à 10:13:05
n°2140352
Buldozerbe​n
Shizofan !
Posté le 03-05-2012 à 10:57:08  profilanswer
 

les sessions ne sont pas assez sures pour protéger tes données (suivant l'environnement). Je mettrais plutôt une condition qui fait que si la session est bien identifié tu fais alors un include d'un fichier .php contenant la connexion à la base de données.
 
 


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140354
lp77
Posté le 03-05-2012 à 11:03:53  profilanswer
 

Les paramètres sont tapés par l'utilisateur ..., puis pour la sécurité pas de soucis (intranet)


Message édité par lp77 le 03-05-2012 à 11:04:24
n°2140373
Buldozerbe​n
Shizofan !
Posté le 03-05-2012 à 11:23:16  profilanswer
 

je ne mettrais quand même pas les paramètres de connexion à la bdd en session.


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140377
lp77
Posté le 03-05-2012 à 11:29:37  profilanswer
 

Tu as une autre solution (plus simple) ?

mood
Publicité
Posté le 03-05-2012 à 11:29:37  profilanswer
 

n°2140415
Buldozerbe​n
Shizofan !
Posté le 03-05-2012 à 13:33:13  profilanswer
 

En fait que cherches tu à faire exactement sur ton intranet ? Je pense que ça serait plus simple si tu nous détaille bien tout ça !


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140613
lp77
Posté le 03-05-2012 à 23:12:33  profilanswer
 

On a plusieurs BDD en réseau, je voudrais mettre en place un formulaire à remplir (paramètre de connection : nom_BDD,password,ip,utilisateur) et envoyer ces paramètres sur d'autre pages pour rouvrir la même connection (lecture de table ...)

n°2140679
lp77
Posté le 04-05-2012 à 10:26:01  profilanswer
 

Pour revenir au sessions, voyez vous pourquoi je n'arrive pas à me connecter à la BDD ? Alors que je récupère bien les valeurs d'un formulaire, j'arrive maintenant à les afficher ... ?

Code :
  1. <?php
  2. session_start();
  3. echo "BDD_name : "; echo $_SESSION['BDD_name']; echo "<br />";
  4. echo "BDD_IP : "; echo $_SESSION['BDD_IP']; echo "<br />";
  5. echo "BDD_PSW : "; echo $_SESSION['BDD_PSW']; echo "<br />";
  6. echo "BDD_util : "; echo $_SESSION['BDD_util']; echo "<br />";
  7. $db = mysql_connect('$_SESSION["BDD_IP"]', '$_SESSION["BDD_util"]', '$_SESSION["BDD_PSW"]'); 
  8. mysql_select_db('$_SESSION["BDD_name"]',$db);
  9. ?>


Merci;


Message édité par lp77 le 04-05-2012 à 11:08:26
n°2140728
gatsu35
Blablaté par Harko
Posté le 04-05-2012 à 13:43:49  profilanswer
 

quand tu as demandé à l'utilisateur les logins/pass de base de données, normmalement tu les stockes en sessions ou en base (enfin je me comprends), mais surtout tu ne fais pas cette connerie de les trimballer de page en page dans des champs hidden, c'est juste du suicide et du bricolage du dimanche


---------------
Blablaté par Harko
n°2140735
lp77
Posté le 04-05-2012 à 14:03:15  profilanswer
 

C'est bon, j'avais un problème de cote'' :)  
Je voudrais que lorsque l'utilisateur clique sur un bouton, la session se ferme et on affiche de nouveau le formulaire pour se connecter à une autre BDD, c'est ce que j'ai fais mais lorsque je retape de nouveaux paramètres j'ai des erreurs :
J'ai créer une nouvelle page :

Code :
  1. <?php // page deconnection.php
  2. session_start();
  3. session_destroy();
  4. header('location: lecture1.php');
  5. exit;
  6. ?>


Dans la page lecture1 j'ai le formulaire (4 champs de connection à la BDD), lorsque je détruis une session, je tape de nouveaux paramètres, j'ai des messages d'erreurs comme quoi les variables ne sont pas définis (ca marchait avant la destruction ...) ?

n°2140742
Buldozerbe​n
Shizofan !
Posté le 04-05-2012 à 14:38:49  profilanswer
 

Salut !
 
essai de voir avec : http://www.php.net/manual/fr/funct [...] -unset.php
 
par contre suivant ta version de PHP installé sur le serveur ne fait pas de unset($_SESSION);
 
Essai de voir si déjà avec le session_unset cela fonctionne.
 
Après j'ai une question par rapport aux différentes bases de données. Pourquoi ne mets tu pas une liste déroulante (ou autre) afin que l'utilisateur choisisse celle ou celles qu'il doit utiliser ? Des bases de données ne peuvent pas être utilisées par certains et non par d'autres ? Si c'est le cas tu pourrais automatiser la chose en assignant telle ou telle base à tel utilisateur et l'utilisateur n'aurait qu'à se logguer avec son login et mot de passe afin de joindre sa base ou ses bases !   :whistle:  :sweat:  
 
Bon essai avec le session_unset et dis nous !  :D  
 
 


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140744
lp77
Posté le 04-05-2012 à 14:43:30  profilanswer
 

Après c'est ce que je devrais faire, d'abord j'essaie en demande les paramètres aux utilisateurs. Donc je mets unset à la place de destroy ? J'essaie ...

Code :
  1. <?php // page deconnection.php
  2. session_start();
  3. unset($_SESSION['BDD_name']);
  4. unset($_SESSION['BDD_IP']);
  5. unset($_SESSION['BDD_psw']);
  6. unset($_SESSION['BDD_util']);
  7. header('location: lecture1.php');
  8. exit;
  9. ?>


Message édité par lp77 le 04-05-2012 à 15:01:13
n°2140747
Buldozerbe​n
Shizofan !
Posté le 04-05-2012 à 14:53:33  profilanswer
 

oui car session_destroy (indiqué dans la doc )  
 

Citation :

session_destroy() détruit toutes les données associées à la session courante. Cette fonction ne détruit pas les variables globales associées à la session, de même, elle ne détruit pas le cookie de session. Pour accéder à nouveau aux variables de session, la fonction session_start() doit être appelée de nouveau.
 
Pour détruire complètement une session, comme faire sortir l'utilisateur, l'identifiant de la session doit également être effacé. Si un cookie est utilisé pour propager l'identifiant de session (comportement par défaut), alors le cookie de session doit être effacé. La fonction setcookie() peut être utilisée pour cela.


 
Donc le session_start() dans la page du formulaire récupère à nouveau les variables de session !
 
edit :  
 

Code :
  1. <?php // page deconnection.php
  2. session_start();
  3. session_unset();
  4. header('location: lecture1.php');
  5. exit;
  6. ?>


Message édité par Buldozerben le 04-05-2012 à 14:55:59

---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140749
lp77
Posté le 04-05-2012 à 14:56:11  profilanswer
 

Parcontre je ne peux plus taper de nouveaux paramètres depuis le destroy, j'ai des messages du type :
Notice: Undefined index: BDD_IP in C:\wamp\www\site\ses2.php on line 7

n°2140751
Buldozerbe​n
Shizofan !
Posté le 04-05-2012 à 15:00:59  profilanswer
 

C'est bizarre car si tu ré affecte un contenu à ta variable de session il ne devrait pas y avoir d'erreur.  
 
Redémarre ton serveur et ton navigateur et vire tes cookies ! :D


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140752
lp77
Posté le 04-05-2012 à 15:06:21  profilanswer
 

J'ai supprimer les cookies et redémarrer le serveur, mais j'ai toujours les mêmes erreurs lors du remplissage du formulaire

n°2140779
Buldozerbe​n
Shizofan !
Posté le 04-05-2012 à 17:49:50  profilanswer
 

Bizarre.
 
Afin de pouvoir voir où tu as une coquille il nous faudrait voir le code ...  
Qu'elle est la version de php utilisé aussi ?  
 


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2140799
xaeon
Profil: TT
Posté le 04-05-2012 à 20:07:28  profilanswer
 

En fait si je comprends bien ca devrait donner un code comme ca:
 
page1.php // Formulaire de connexion

Code :
  1. <form method="post" action="page2.php">
  2. <table>
  3.  <tr>
  4.   <th>Login :</th>
  5.   <td>
  6.    <input type="text" name="login" />
  7.   </td>
  8.  </tr>
  9.  <tr>
  10.   <th>Password :</th>
  11.   <td>
  12.    <input type="password" name="password" />
  13.   </td>
  14.  </tr>
  15.  <tr>
  16.   <th>Database :</th>
  17.   <td>
  18.    <input type="text" name="database" />
  19.   </td>
  20.  </tr>
  21.  <tr>
  22.   <th></th>
  23.   <td>
  24.    <input type="submit" value="send" />
  25.   </td>
  26.  </tr>
  27. </table>
  28. </form>


 
page2.php // Formulaire de déconnexion

Code :
  1. <?php
  2. session_start();
  3. // Affectation des variables de session
  4. $_SESSION["login"] = $_POST["login"];
  5. $_SESSION["password"] = $_POST["password"];
  6. $_SESSION["database"] = $_POST["database"];
  7. // Test de la connexion
  8. $dsn = 'mysql:dbname='.$_SESSION["database"].';host=127.0.0.1';
  9. $user = $_SESSION["login"];
  10. $password = $_SESSION["password"];
  11. try{
  12.  $db = new PDO($dsn, $user, $password); //ou même un $_SESSION["db"] = new PDO... et dans ce cas, pas besoin des autres variables de session
  13. }
  14. catch(PDOException $e){
  15.  echo 'Connexion échouée : '.$e->getMessage();
  16. }
  17. // Après tu fais ce que tu veux
  18. ?>
  19. <form method="post" action="page3.php">
  20. <input type="submit" value="disconnect" />
  21. </form>


 
page3.php // Script de déconnexion (on peut le faire sur la page1.php aussi)

Code :
  1. <?php
  2. unset($_SESSION["user"]);
  3. unset($_SESSION["password"]);
  4. unset($_SESSION["database"]);
  5. header("Location: page1.php" );
  6. exit;
  7. ?>


 
Concernant la remise à zéro de tes variables de session:
http://fr2.php.net/manual/fr/funct [...] -unset.php
 
Le code que j'ai posté est fonctionnel sur un PHP 5.3 sous Debian (comprendre pas testé sous Wamp ni Windows)


Message édité par xaeon le 04-05-2012 à 20:31:49
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Sessions PHP

 

Sujets relatifs
Sessions PHPSESSIONS PHP
[PHP] Varaibles de sessions et classesSessions / PHP
ch exemple simple PHP.ini pour sessionsPHP et SESSIONS
Flash et les sessions PHP[PHP SOAP SESSIONS] Monter en session un objet soapClient
[PHP]les sessionsQuestion de débutant sur les sessions PHP!
Plus de sujets relatifs à : Sessions PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR