[PHP] Besoin d'aide pour du code PHP

Besoin d'aide pour du code PHP [PHP] - PHP - Programmation

Marsh Posté le 04-06-2009 à 20:14:43    

:hello:  
 
Actuellement en classe de Terminale STG GSI (Gestion des Systèmes d'Informations), j'ai un projet a réaliser et à présenter au BAC, cependant j'ai un petit problème : Je n'arrive pas à utiliser la variable de session afin de faire suivre un code (codeAgent). Voici ma première page d'authentification :
 

Code :
  1. <?php
  2.   session_start();
  3.   $_SESSION['connect']=0;
  4.  $Identifiant=$_POST['ident'];
  5.  $pass=$_POST['pwd'];
  6.     $db=mysql_connect("localhost","root","gsi" ) or die("erreur de connexion".mysql_error());
  7.  mysql_select_db("sncf",$db) or die("erreur de connexion à la base sncf" );
  8.  $sql="SELECT * FROM Agent WHERE Agent.code='$Identifiant' AND Agent.pwd='$pass'";
  9.  $requete = mysql_query($sql);
  10.   if (mysql_num_rows($requete) == 0)
  11.   {
  12. $_SESSION['connect']=0;
  13.     header("Location: proj.php" );
  14.   }
  15.  
  16.   else
  17.   {
  18.     $identifiant=$_POST['ident'];
  19. $_SESSION['connect']=1;
  20. header("Location: proj2.php" ); 
  21. $_SESSION['login']=$identifiant;
  22.   }
  23.    
  24.   ?>


 
J'ai bien mis la variable de session (en gras). Ensuite sur toute mes autres pages j'ai mis un session_start de ce type :
 

Code :
  1. <?php
  2. session_start();
  3. ?>


 
Ensuite il s'agit de rentrer cette variable dans une base de données (champ "codeAgent" de la table "formation" ) mais celui-ci ne se rentre pas .. Et quand je test la variable avec un echo, je n'ai rien en retour. Aucun message d'erreur avec Easy PHP.. Même mon prof ne comprends pas ..
 
La page qui effectue la requête d'insertion du codeAgent dans la page est la suivante :
 

Code :
  1. <?php // insertion formations dans la BDD
  2. session_start();
  3. $numeroSession=$_POST['numeroSession'];
  4. $db=mysql_connect("localhost", "root", "gsi" ) or die("erreur de connexion".mysql_error());
  5. mysql_select_db("sncf",$db) or die("erreur de connexion à la base sncf" );
  6. $sql="INSERT INTO formation (numeroSession, codeAgent) VALUES ('$numeroSession', '". $_SESSION['login'] . "')";
  7. mysql_query($sql);
  8. header("Location:Confirmation_formation.php" );
  9. mysql_close();
  10. ?>


 
Ce projet est un projet que je dois présenter au BAC jeudi prochain, et il faut qu'il soit fini pour dimanche soir. C'est pourquoi je fais appel à vous et je compte sur votre gentillesse pour tenter de m'aider ! Ceux qui veulent mon "projet" entier le voici : http://www.mediafire.com/?sharekey [...] f6e8ebb871
 
Il faut noter que sncf.txt est la Base de données (qui a été modifiée) :  
 
- Ajout des champs "pwd" et "email" dans la table AGENT (ALTER TABLE AGENT ADD pwd CHAR(20); / ALTER TABLE AGENT ADD email CHAR(20);)
- Ajout de la table formation avec 2 champs : "numeroSession" et "codeAgent"  Cette table a été rajoutée à l'aide d'easy PHP.
 
Merci à tous ce qui prendront un peu de temps pour me lire et tenter de m'aider :)


Message édité par lechateux le 04-06-2009 à 20:15:01

---------------
Mon feed back
Reply

Marsh Posté le 04-06-2009 à 20:14:43   

Reply

Marsh Posté le 04-06-2009 à 20:22:26    

C'est quoi ca ? '$numeroSession'


---------------
http://petitjonas.blogspot.com/
Reply

Marsh Posté le 04-06-2009 à 20:55:33    

C'est le numéro saisi dans la page d'avant dans une case (il faut tout télécharger pour comprendre en fait ..) :/


---------------
Mon feed back
Reply

Marsh Posté le 04-06-2009 à 21:17:02    

ouai mais sauf que cest interprete comme un string et non comme une variable


---------------
http://petitjonas.blogspot.com/
Reply

Marsh Posté le 04-06-2009 à 21:33:14    

Oui j'avais une erreur à un moment du type blablabla STRING.. etc
Qu'es-ce que cela signifie ?


---------------
Mon feed back
Reply

Marsh Posté le 05-06-2009 à 12:58:45    

Tu devrais peut-être faire un echo $sql; à la place de ton mysql_query($sql);
Ca te permettrait de voir le contenu de ta requête. C'est un bon début...

Reply

Marsh Posté le 05-06-2009 à 13:47:13    

un truc tout con : la ligne 27 sert à rien vu qu'à la 26, tu fais un header("location..." ) :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-06-2009 à 14:25:01    

Ce n'est pas parce qu'il y a une déclaration d'un entête HTTP que le code php qui suit ne s'exécute pas. Le code s'exécute jusqu'au bout, c'est uniquement les autres entêtes qui peuvent poser problème (notamment les implicites quand on echo qqchose).

 

Par contre, c'est sûr que ce n'est pas très logique l'ordre dans lequel ceci est réalisé :)

Message cité 1 fois
Message édité par guybrush02 le 05-06-2009 à 14:26:02
Reply

Marsh Posté le 05-06-2009 à 17:14:42    

guybrush02 a écrit :

Ce n'est pas parce qu'il y a une déclaration d'un entête HTTP que le code php qui suit ne s'exécute pas. Le code s'exécute jusqu'au bout, c'est uniquement les autres entêtes qui peuvent poser problème (notamment les implicites quand on echo qqchose).  
 
Par contre, c'est sûr que ce n'est pas très logique l'ordre dans lequel ceci est réalisé :)


c'est d'ailleurs pour çà qu'il faut toujours faire suivre header('Location: ...'); d'exit() (et aussi au cas ou la modification des entêtes est impossible à cause d'un bug)

Reply

Marsh Posté le 05-06-2009 à 22:17:11    

si tu fais un echo apres un header location ca part dans le neant intersideral?


---------------
http://petitjonas.blogspot.com/
Reply

Marsh Posté le 05-06-2009 à 22:17:11   

Reply

Marsh Posté le 06-06-2009 à 09:08:50    

Soit ça, soit un "header already sent". Je ne sais plus...

Reply

Marsh Posté le 06-06-2009 à 19:02:49    

le header already sennt se passe quand tu envoie de l'html avant le header location non ?


---------------
http://petitjonas.blogspot.com/
Reply

Marsh Posté le 06-06-2009 à 19:06:02    

oui, pas forcément de l'HTML, çà peut être n'importe quoi (même les caractères indésirables de l'utf 8 avec BOM), ou bien un saut de ligne, enfin, n'importe quelle sortie.

Reply

Marsh Posté le 07-06-2009 à 02:38:52    

fais déjà un echo $sql pour voir déjà ce que tu as dedans

Reply

Sujets relatifs:

Leave a Replay

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