Session PHP

Session PHP - PHP - Programmation

Marsh Posté le 06-12-2004 à 10:53:11    

Bonjour a tous,
est ce que quelqu un peut me dire pourquoi mon code de session ne marche pas:
2 fichiers: index.php et identification.php
Pour info mon hebergeur est laposte!
Merci a tous!
 
 
Voila le debut de index.php:
------------------------------------------------
<?    session_start();
    ini_set("session.use_cookies","0" );
    ini_set("session.register_globals","On" );
 
      ?>
<html>
<head>
 
 <title></title>
 
<link rel="stylesheet" type="text/css" href="styles.css" />
<link rel="stylesheet" type="text/css" href="menus.css" />
-----------------------------------------------------------
 
et le fichier identification.php:
-----------------------------------------------------------
<? session_start();
if(isset( $nomsession)) :
           ?> bonjour <?
         else:
if(isset($soumettre)) :
 
        if(empty($nom) OR empty($motdepasse)) :
         else:
$db=mysql_connect("localhost","xxx","xxx" );
mysql_select_db("xxx",$db);
 
 $sql="select*from motsdepasse";
 $resultat=mysql_query($sql);
 while($ligne=mysql_fetch_array($resultat)) {
 if($ligne['Auteur'] == $nom AND $ligne['Password'] == $motdepasse):
 
        $_SESSION['nomsession']=$nomsession;
        $_SESSION['motdepassesession']=$motdepasse;
         $nomsession=$nom;
         $motdepassesession=$motdepasse;
 
 
 
 
        break;
        endif;
        }
        if(!isset($nomsession)) :
 
 
         endif;
         endif;
 
else:
?>
 
<html>
 
 
 
<body>
<form  action="index.php?page=identification" method="post">
Veuillez vous identifier! <br>
Login: <input type="text" name="nom">
Mot de passe: <input type="text" name="motdepasse">
<input type="submit" name="soumettre" value="Soumettre">
</form>
 
<? endif; endif; ?>
</body>
</html>
 
-----------------------------------------------------------


Message édité par FTG le 09-12-2004 à 22:30:46
Reply

Marsh Posté le 06-12-2004 à 10:53:11   

Reply

Marsh Posté le 06-12-2004 à 10:54:59    

Flemme de lire ton code:
1) Quelle est l'erreur?
2) utilise les balises [ cpp] et [ /cpp], ce sera plus lisible.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2004 à 10:57:33    

Ben quand je relance identification.php il ne me detecte pas la variable de session $nomsession. Pour le serveur c est comme si elel n existait pas!
Desole pour la numerotation des lignes!

Reply

Marsh Posté le 06-12-2004 à 11:34:27    

up

Reply

Marsh Posté le 06-12-2004 à 11:44:42    

primo, le code php ça commence avec <?php ....., ça change ptete rien mais c'est plus sûr...
sinon pour acceder à tes variables de session, c'est comme pour un tableau associatif (ça tombe bien, $_SESSION est un tableau associatif...) donc :
$_SESSION['nomsession']="trucmuche";
if(isset($_SESSION['nomsession'])){
   echo "hello {$_SESSION['nomsession']}, ca va???";
}
 
bien sur cela va afficher "salut trucmuche, ca va???"
 
Sinon pour tes if, mais plutot des "{..}" que des ":" parce qu'on comprends vraiment rien!

Reply

Marsh Posté le 06-12-2004 à 11:47:31    

et évite ça aussi "...?> bonjour <? ..." ligne 3 de identitfication.php. utilise plutot
echo "bonjour", ça évite de fermer les balises puis de les réouvrir puis de les refermer puis de les.........

Reply

Marsh Posté le 06-12-2004 à 11:51:02    

pitete une remarque à la con, mais perso j'utilise "break" que quand je me sers d'un switch, pour des if je comprend pas vraiment.....

Reply

Marsh Posté le 06-12-2004 à 11:51:29    

Merci pour ces precisions de style, helas cela ne marche toujours pas!
le if(isset($_SESSION['nomsession'])) ne reconnait toujours pas que j ai bien cree la variable de session nomsession!
Je suis un peu perdu la...

Reply

Marsh Posté le 06-12-2004 à 11:55:06    

sinon, sans vouloir m'acharner, ça m'horripile de voir un register_global à "On". va voir par ici http://www.phpindex.com/articles/a [...] lement=299

Reply

Marsh Posté le 06-12-2004 à 11:55:50    

ok j'épluche ton code.... 5min...

Reply

Marsh Posté le 06-12-2004 à 11:55:50   

Reply

Marsh Posté le 06-12-2004 à 11:57:39    

Heeeeuuuu!!!
 
entre <? et <?php y'a pas grand chose, ca change rien, chacun ses habitudes!
Vas y mon petit FTG utilise celle que tu veux!
Apres le coup des {..} au lieu de ":" oui la je suis d'accord!
Pour le ?> bonjou <? je suis ok aussi, c'est plus rapide de faire echo 'bonjour'
les doubles quotes ne servant à rien car il n'y a pas de variables dans le string.
 
et pour le echo "hello {$_SESSION['nomsession']}, ca va???";  
fait plutot
echo "hello {".$_SESSION['nomsession']."}, ca va???";  

Reply

Marsh Posté le 06-12-2004 à 11:57:54    

D'un autre coté tu fais n'importe-quoi hein...[:mlc]

Code :
  1. if(empty($nom) OR empty($motdepasse)) :
  2. else:


Si $nom ou $motdepasse est vide tu remplis jamais ta variable de session...[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2004 à 11:58:48    

merci de me corriger...

Reply

Marsh Posté le 06-12-2004 à 12:00:02    

pour skeye : son register global est a "On" donc il a le droit de faire ça

Reply

Marsh Posté le 06-12-2004 à 12:03:08    

Pour skeye: et le "else:" est justement la pour lui dire de remplir mes variables de session si jamais on a remplit correctement les formulaires

Reply

Marsh Posté le 06-12-2004 à 12:03:17    

xelad a écrit :

pour skeye : son register global est a "On" donc il a le droit de faire ça


Je parle pas de ça, je parle de son algorithme.
Si je lis bien si $nom ou $motdepasse est vide il ne fait rien du tout, son script!:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2004 à 12:08:34    

bah c est pas grave ca, je mettrais un truc du genre echo "recommencez!"
Ce qu il me derange c est que le serveur ne reconnaisse pas ma variable de session $_SESSION['nomsession'] c plutot chiant ca

Reply

Marsh Posté le 06-12-2004 à 12:09:20    

essaye ceci pour identification.php
 

Code :
  1. <? session_start();
  2. if(isset($_SESSION['nomsession'])) echo "bonjour";
  3. else{
  4. if(isset($soumettre)){
  5.         if(!empty($nom) and !empty($motdepasse)){
  6.  $db=mysql_connect("localhost","fabienluce","fab99999" );
  7.  mysql_select_db("fabienluce_lp_db",$db);
  8.  $sql="select * from motsdepasse where Password='$motdepasse' and Auteur='$nom'";
  9.   $resultat=mysql_query($sql);
  10.   if(mysql_num_rows($resultat)==1){
  11.      $_SESSION['nomsession']=$nom
  12.             $_SESSION['motdepassesession']=$motdepasse;
  13.          }
  14.         }
  15.    }
  16.    else{
  17.  
  18.    echo "<html>"
  19. . "<body> "
  20. . "<form  action=\"index.php?page=identification\" method=\"post\"> "
  21. . "Veuillez vous identifier! <br> "
  22. . "Login: <input type=\"text\" name=\"nom\"> "
  23. . "Mot de passe: <input type=\"text\" name=\"motdepasse\"> "
  24. . "<input type=\"submit\" name=\"soumettre\" value=\"Soumettre\"> "
  25. . "</form> "
  26.   . "</body> "
  27. . "</html> "
  28.   }
  29. ?>


Message édité par xelad le 06-12-2004 à 13:51:11
Reply

Marsh Posté le 06-12-2004 à 12:10:55    

oups la boulette, attends, je corrige un truc...

Reply

Marsh Posté le 06-12-2004 à 12:11:19    

FTG a écrit :

bah c est pas grave ca, je mettrais un truc du genre echo "recommencez!"
Ce qu il me derange c est que le serveur ne reconnaisse pas ma variable de session $_SESSION['nomsession'] c plutot chiant ca


oui, mais entre autres tu ne remplis jamais ta variable de session, donc il ne risque pas de la reconnaitre! :pt1cable:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2004 à 12:14:19    

a y est, j'ai corrigé


Message édité par xelad le 06-12-2004 à 12:14:43
Reply

Marsh Posté le 06-12-2004 à 13:35:06    

pour skeye: ben kan elle est remplie, il doit la reconnaitre, si elle n est pas remplie, il passe au else de du if

Reply

Marsh Posté le 06-12-2004 à 13:50:08    

bob007 a écrit :

...
 
et pour le echo "hello {$_SESSION['nomsession']}, ca va???";  
fait plutot
echo "hello {".$_SESSION['nomsession']."}, ca va???";


 
petite précision pour bob007, tes deux echo n'ont rien a voir :
l'un affichera "hello trucmuche, ca va???" et l'autre "hello {trucmuche}, ca va???"... je prefere ma méthode...


Message édité par xelad le 06-12-2004 à 13:52:14
Reply

Marsh Posté le 06-12-2004 à 13:55:25    

Je commence vraiment a en avoir ras le cul!!
mes variables de session ne sont reconnues nulle part!
Peut etre aue j ai oublie quelque chose de fondamental quelque part!! Quelqu un a une idee??

Reply

Marsh Posté le 06-12-2004 à 14:04:34    

Bon, ne nous enervons pas...
recommençons par les bases, essaye des trucs plus simples pour voir le fonctionnement des variables de sessions par ton hebergeur :
( y'a pas plus simple...)
 
page 'test.php'

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['test']="hello";
  4. echo "test : {$_SESSION['test']}";
  5. ?>


 
d'autre part si tu es hebergé par laposte, tu n'as surement pas le droit de faire ce genre de chose

Code :
  1. ini_set("session.use_cookies","0" );
  2. ini_set("session.register_globals","On" );


donc la solution, c'est peut être de passer par les valeurs d'apache par défaut, c'est à dire les register_global à "Off", il faut donc modifier ton code en consequence :

Code :
  1. <? session_start(); 
  2. if(isset($_SESSION['nomsession'])) echo "bonjour"; 
  3. else{
  4.     if(isset($POST['soumettre'])){
  5.         if(!empty($_POST['nom']) and !empty($_POST['motdepasse'])){
  6.         $db=mysql_connect("localhost","fabienluce","fab99999" ); 
  7.         mysql_select_db("fabienluce_lp_db",$db); 
  8.         $sql="select * from motsdepasse where Password='{$_POST['motdepasse']}' and Auteur='{$_POST['nom']}"; 
  9.         $resultat=mysql_query($sql);
  10.         if(mysql_num_rows($resultat)==1){
  11.            $_SESSION['nomsession']=$_POST['nom'];
  12.            $_SESSION['motdepassesession']=$_POST['motdepasse']; 
  13.                }
  14.         }
  15.    }
  16.    else{
  17.    
  18.    echo "<html>"
  19.     . "<body> "
  20.     . "<form  action=\"index.php?page=identification\" method=\"post\"> "
  21.     . "Veuillez vous identifier! <br> "
  22.     . "Login: <input type=\"text\" name=\"nom\"> "
  23.     . "Mot de passe: <input type=\"text\" name=\"motdepasse\"> "
  24.     . "<input type=\"submit\" name=\"soumettre\" value=\"Soumettre\"> "
  25.     . "</form> "
  26.     . "</body> "
  27.     . "</html> "
  28.   }
  29. ?>


Message édité par xelad le 06-12-2004 à 14:07:37
Reply

Marsh Posté le 06-12-2004 à 14:07:10    

Ah ok merci pour tes conseils!!

Reply

Marsh Posté le 06-12-2004 à 14:08:26    

FTG a écrit :

Ah ok merci pour tes conseils!!


ce qui veut dire ???

Reply

Marsh Posté le 06-12-2004 à 14:10:50    

Ben je susi en train de faire ds petits tests comme tu me las conseille et pis je reprend plus ou moins a zero!! T as raison faut jamais s enerver! ;)
Merci!

Reply

Marsh Posté le 06-12-2004 à 14:10:54    

FTG a écrit :

Je commence vraiment a en avoir ras le cul!!
mes variables de session ne sont reconnues nulle part!
Peut etre aue j ai oublie quelque chose de fondamental quelque part!! Quelqu un a une idee??


Premierement il faut regarder si les variables de sessions s'enregistre bien sur le serveur. Regarde dans le fichier php.ini la partie session_temp un truc comme ça, il indique ou il enregistre les fichier session. En faite c'est la ou sont enregistrer les sessions. Par défaut c'est dans le répertoire php/tmp/
-Regarde si ce repertoire existe.
-Regarde ce que dit le php.ini a savoir l'endroit ou il est enregistré
-Lorsque tu utilises un fichier avec un session_start, regarde si dans le répertoire il y a pas un fichier qui se crée immédiatement. Si c'est pas le cas c'est que le problème est au niveau de ta configuration.
 
 
 
xelad : un code commençant par <?php c'est obselete et par defaut le php.ini n'est pas configuré pour accepter que cela. Si le probleme venait de là il aurait vu le code php sur son navigateur.  
Que tu le dise oui mais pas en disant premierement ;)

Reply

Marsh Posté le 06-12-2004 à 14:14:57    

Tu vois typiquement la:
dans mon fichier index j ai
<?    session_start();
          $_SESSION['test']=$bonjour;
      ?>
 
et dans l autre fichier
<?php  
session_start();  
$bonjour="hello";
echo "test : {$_SESSION['test']}";  
?>
et bien ca ne m affiche rien, keski va pas doc?

Reply

Marsh Posté le 06-12-2004 à 14:19:58    

Je crois que tu es débutant et que tu ne sais pas utiliser les variables de session. Arrête de poser cette question sur ce forum et te conseil de faire un tour sur www.phpdebutant.org http://www.phpdebutant.org/article69.php il va t'expliquer et après tu vas comprendre ton erreur. Ne le prend pas mal mais c'est le seul conseil que je puisse donner parce que si tu luttes sur ça tu vas galérer sur plein de chose simple en php:/.


Message édité par Berceker United le 06-12-2004 à 14:22:18
Reply

Marsh Posté le 06-12-2004 à 14:20:14    

Berceker United a écrit :

xelad : un code commençant par <?php c'est obselete et par defaut le php.ini n'est pas configuré pour accepter que cela. Si le probleme venait de là il aurait vu le code php sur son navigateur.  
Que tu le dise oui mais pas en disant premierement ;)


 
je ne peux que te conseiller d'aller à cette page : http://www.phpdebutant.org/article14.php
 
d'autre part, notre ami FTG utilise un hebergeur (laposte), il ne peux donc peut être pas acceder au php.ini, cela dit, le dossier contenant les fichiers tmp créés pour les sessions se trouve generalement à la racine du repertoire du l'utilisateur. Cela dépend des hebergeurs.

Reply

Marsh Posté le 06-12-2004 à 14:20:58    

Enore mieux si je fais:
<?    session_start();
 
      ?>
dans le premier et
<?php  
session_start();  
if(isset($_SESSION['test'])):
echo "deja fait";
else:
$bonjour="hello";
$_SESSION['test']=$bonjour;
endif;
echo "test : {$_SESSION['test']}";  
?>
Et bien "deja fait" ne s affiche jamais, pourquoi ca??

Reply

Marsh Posté le 06-12-2004 à 14:24:15    

Je pense sincèrement que tu ne comprends rien à ce que tu fais. Suis le conseil de Berceker United et reprends un tutoriel depuis le début.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2004 à 14:25:05    

xelad a écrit :

je ne peux que te conseiller d'aller à cette page : http://www.phpdebutant.org/article14.php
 
d'autre part, notre ami FTG utilise un hebergeur (laposte), il ne peux donc peut être pas acceder au php.ini, cela dit, le dossier contenant les fichiers tmp créés pour les sessions se trouve generalement à la racine du repertoire du l'utilisateur. Cela dépend des hebergeurs.


Ok, donc s'il est chez un hebergeur cela doit fonctionner correctement, mais je constate qu'en faite il ne savait pas utiliser les sessions.

Reply

Marsh Posté le 06-12-2004 à 14:26:40    

FTG a écrit :

Tu vois typiquement la:
dans mon fichier index j ai
<?    session_start();
          $_SESSION['test']=$bonjour;
      ?>
 
et dans l autre fichier
<?php  
session_start();  
$bonjour="hello";
echo "test : {$_SESSION['test']}";  
?>
et bien ca ne m affiche rien, keski va pas doc?


si tu executes ton code, tu vas acceder à une variable $bonjour qui n'existe pas (laposte désactive les messages Warning pour des raisons de sécurité, c'est pour cela que ça n'affiche rien) mais si ces messages étaient activés cela te mettrait "Warning : undefined variable..." ou un truc comme ça parce que ta variable $bonjour n'a pas de valeur.

Code :
  1. <?    session_start();
  2. $bonjour="hello"; // je defini ma variable
  3.           $_SESSION['test']=$bonjour;     
  4. ?>
  5. et dans l autre fichier
  6. <?php
  7. session_start();
  8. echo "test : {$_SESSION['test']}";
  9. ?>

Reply

Marsh Posté le 06-12-2004 à 14:27:33    

bah si je crois que je comprends un peu pourtant.
Mais peux tu me preciser un truc: si je passe d un fichier php a un autre, si j ai declare une variable de session et si je ferm pas la session, elle est sensee etre globale cette varaible non??

Reply

Marsh Posté le 06-12-2004 à 14:30:40    

c'est la tout l'interet du tableau associatif $_SESSION, c'est qu'il est global partout où tu mets session_start();

Reply

Marsh Posté le 06-12-2004 à 14:33:38    

bon ben alors c pas normal que la variable $_SESSION['nomsession'] ne soit pas reconnu quand je fais un isset($_SESSION['nomsession'])...est ce que y a des options dans le php.ini qui pourrait bloquer quleque chose?

Reply

Marsh Posté le 06-12-2004 à 14:34:04    

FTG a écrit :

bah si je crois que je comprends un peu pourtant.
Mais peux tu me preciser un truc: si je passe d un fichier php a un autre, si j ai declare une variable de session et si je ferm pas la session, elle est sensee etre globale cette varaible non??


$_SESSION['test'] oui elle sera global.
$test = $_SESSION['test']; $test ne sera pas global. Xelad te donne un bonne exemple. Mais regarde cette exemple tu va vite comprendre. http://www.phpdebutant.org/article69.php

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed