comment faire passer des variables de page en page?

comment faire passer des variables de page en page? - PHP - Programmation

Marsh Posté le 30-01-2006 à 12:41:45    

Salut tout le monde,
alors voilà, j'ai un chtio problème, je dois faire un classement pour un quiz, pour voir ou participer au classement l'utilisateur doit être enregistré.
L'enregistrement se fait sur la page de résultat du quiz.
L'utilisateur entre un login et un pass.
Je voudrais pouvoir updater la table user en fonction de son login, mais celà ne fonctionne pas.
Le code se présente comme ça :
 

Code :
  1. code :
  2. ?>
  3.              <form action="res_geo.php" method="post">
  4. Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>">
  5. Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>">
  6. <input type="submit" name="connexion" value="Connexion">
  7. </form>
  8. <?php
  9.              if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  10.              if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
  11.         include("connect.php" );
  12.        
  13.         $sql = 'SELECT count(*) FROM forum_users WHERE username="'.addslashes($_POST['login']).'" AND user_password="'.md5(addslashes($_POST['pass'])).'"';
  14.         $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  15.         $data = mysql_fetch_array($req);
  16.         mysql_free_result($req);
  17.         mysql_close();
  18.         if ($data[0] == 1) {
  19.                    session_start();
  20.                    $_SESSION['login']=$_POST['login'];
  21.                    header('Location: classement_geo.php');
  22.                    session_register('login');
  23.             exit();
  24.         }
  25.         elseif ($data[0] == 0) {
  26.             include("non_enreg.php" );
  27.         }
  28.     }
  29.     else {
  30.         $erreur = 'Au moins un des champs est vide.';
  31.     }
  32. }


 
A quel endroit pourrias-je placer ma requête? je n'y arrive pas du tout!
Je pensais la placer dans la page classement_geo.php(celle qui suit lorsque le log est bon), mais je n'arrive pas a conserver^$login entre les deux pages.
Merci de votre aide car la je galère dur!!


Message édité par skraper le 30-01-2006 à 14:20:10
Reply

Marsh Posté le 30-01-2006 à 12:41:45   

Reply

Marsh Posté le 30-01-2006 à 12:47:41    

Utilises donc le bouton http://forum-images.hardware.fr/icones/message/c.gif pour encadrer ton code.
Là, ca donne pas envie de lire alors mets ton code entre balise [cpp] (suffit d'utiliser le bouton) et j'y jéterais un oeuil.


Message édité par omega2 le 30-01-2006 à 12:48:02
Reply

Marsh Posté le 30-01-2006 à 14:20:22    

voilà c'est fait

Reply

Marsh Posté le 30-01-2006 à 14:35:52    

Code :
  1. header('Location: classement_geo.php');


Ce qui veut dire que le traitement de la page continu tel quel sans se préocuper du fichier "classement_geo.php" et que le navigateur de son côté demandera au serveur de traiter le dit fichier sans lui passer aucune variable. C'est donc normal que la page "classement_geo.php" ne conaisse pas les variables de l'ancienne page.
 
Donc soit tu fais un include soit tu mets tes variables en "session" soit tu les passes par l'adresse. C'est les trois solutions les plus simple pour que "classement_geo.php" recoive la variable "$login".

Reply

Marsh Posté le 30-01-2006 à 14:45:25    

me dit que la session est deja ouverte!!

Reply

Marsh Posté le 30-01-2006 à 18:22:25    

c'est quoi ton message d'erreur exact ?

Reply

Marsh Posté le 31-01-2006 à 09:11:54    

A session had already been started - ignoring session_start() in c:\program files\easyphp1-7\www\ecocyclette\class_geo.php on line 3

Reply

Marsh Posté le 31-01-2006 à 09:52:21    

maintenant j'ai ça! y'a rien à comprendre! Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1-7\www\ecocyclette\arborescence.php:41) in c:\program files\easyphp1-7\www\ecocyclette\class_geo.php on line 2
 
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-7\www\ecocyclette\arborescence.php:41) in c:\program files\easyphp1-7\www\ecocyclette\class_geo.php on line 2

Reply

Marsh Posté le 31-01-2006 à 10:46:52    

un header et une redirection. il suppose qu'aucune information n'a quitté le serveur en direction du client (qui appelle la page donc).
 
lorsque toi tu y fais appel, tu as déjà envoyé au client un formulaire, et donc un entête avec (titre de la page, langue, charset, etc...) et donc ça cause un problème : il n'a pas finit d'afficher, et tu lui dit d'aller voir ailleur...
 
ps : header envoie les informations d'entête pour la page fournie en paramètre, quand il y a déjà les info cela crée des doublons et pouf !! plantage ;)


Message édité par darkendorf le 31-01-2006 à 10:48:31
Reply

Marsh Posté le 31-01-2006 à 11:13:48    

Comment je peux faire alors, je n'arrive pas a toruver la solution du problème!

Reply

Marsh Posté le 31-01-2006 à 11:13:48   

Reply

Marsh Posté le 31-01-2006 à 11:19:02    

en début de page, avant même ta balise <html tu insère ton test if (isset($_POST['connexion'])...
 
s'il n'est pas connecté : tu redirige, sinon tu continue l'affichage.

Reply

Marsh Posté le 31-01-2006 à 13:04:49    

je te mets le code, car je ne vois pas ce que tu veux dire, si tu pouvais m'en dire plus :  
page res_geo.php :  

Code :
  1. code :
  2. if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  3.               if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
  4.               include("connect.php" );
  5.               $sql = 'SELECT count(*) FROM forum_users WHERE username="'.addslashes($_POST['login']).'" AND user_password="'.md5(addslashes($_POST['pass'])).'"';
  6.               $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  7.               $data = mysql_fetch_array($req);
  8.        
  9.             mysql_free_result($req);
  10.        
  11.             if ($data[0] == 1) {
  12.                session_start();
  13.                $_SESSION['login'] = $_POST['login'];
  14.                $login=$_SESSION['login'];
  15.                mysql_query("update 'forum_users' set totpoints= 2 where username= '$login'" );
  16.                exit();
  17.         }
  18.         elseif ($data[0] == 0) {
  19.             include("non_enreg.php" );;
  20.         }
  21.         else {
  22.             include("non_enreg.php" );
  23.         }
  24.     }
  25.     else {
  26.         $erreur = 'Au moins un des champs est vide.';
  27.     }
  28.     mysql_close();
  29. }
  30. ?>
  31.              <form action="classement_geo.php" method="post">
  32. Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>">
  33. Mot de passe : <input type="password" name="pass" size=10 value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>">
  34. <input type="submit" name="connexion" value="Connexion">
  35. </form>
  36. <?php


Page class_geo.php :  
 

Code :
  1. code :
  2. <?php
  3.      session_start();
  4.      $login=$_SESSION['login'];
  5.      include("connect.php" );
  6.      mysql_query("update 'forum_users' set totpoints= 2 where username= '$login'" );
  7.      exit();
  8. echo "<center><font face =\"comic sans ms\"><font color=\"#4058d2\"><font size = 3>";
  9. if(isset($_GET['quizz'])){ $quizz = $_GET['quizz']; }
  10. else { $quizz = '0'; }
  11. $query = mysql_query("select quiz_aff_classement from `quiz_index` where `quiz_id` = '$quizz'" );
  12. while ($row = mysql_fetch_row($query)) { $afficherclassement = $row[0]; }
  13. if(isset($afficherclassement) and $afficherclassement == 'oui'){
  14.     $i = 0;
  15.     $j = '-1';
  16.     $query = mysql_query("select username, totpoints from forum_users order by totpoints desc;" );
  17.     while ($row = mysql_fetch_row($query)) {
  18.         if($row[1] != $j) { $i++; }
  19.         $row[0] = str_replace('<', '', $row[0]);
  20.         echo $i.' = '.$row[0].' avec '.$row[1].' points<br />';
  21.         $j = $row[1];
  22.     }
  23. }
  24. else {
  25.     echo 'Vous n\'êtes pas autorisé à consulter le classement de ce quizz';
  26. echo"</center></font></font></font>";
  27. mysql_close();
  28. }
  29. ?>


Merci de ton aide

Reply

Sujets relatifs:

Leave a Replay

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