Formulaire de login OK en local mais pas sur le net ? (pb de sessions)

Formulaire de login OK en local mais pas sur le net ? (pb de sessions) - PHP - Programmation

Marsh Posté le 16-07-2010 à 02:37:13    

Bonjour,
 
J'hésitais à poster dans la rubrique SQL mais je pense que PHP est + approprié vu que je n'ai pas d'erreurs SQL.
 
J'ai réalisé un petit formulaire de login, tout ce qu'il y a de plus basique (identifiant/mot de passe).
- Si le login est incorrect, un message approprié s'affiche ;
- Si le login est correct mais le mot de passe est incorrect, un autre message approprié s'affiche.
- Si tout est correct, le formulaire est remplacé par autre chose.
 
En local avec WAMP, tout roule impeccablement bien. Les messages d'erreur s'affichent, tout comme ce qui doit remplacer le formulaire lorsque l'identification est réussie.
En revanche, lorsque je teste sur un serveur en ligne (il s'agit d'un compte perso chez OVH), que le login ou le mot de passe soient corrects ou pas, aucun message d'erreur ne s'affiche et rien ne remplace le formulaire ! Tout se déroule comme si je n'avais strictement rien tapé dans les champs de saisie !
 
Je ne sais pas où chercher. Quelque chose m'aurait-il échappé ? Auriez-vous des idées ? J'ai bien essayé de rajouter un délai dans l'exécution du code PHP une fois les identifiant/mot de passe vérifié, au cas où il y ait un problème de latence mais rien n'y fait !
 
Merci !


Message édité par reptile17 le 20-07-2010 à 21:19:51

---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 16-07-2010 à 02:37:13   

Reply

Marsh Posté le 16-07-2010 à 08:31:03    

Tu peux nous mettre ton code ?

Reply

Marsh Posté le 16-07-2010 à 09:37:09    

le formulaire est-il envoyé à la bonne url? Essayes d'afficher les msg d'erreurs de la BD par ex.


---------------
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 16-07-2010 à 11:33:29    

aspirateur a écrit :

Tu peux nous mettre ton code ?


 
+1


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 16-07-2010 à 11:34:32    

rufo a écrit :

le formulaire est-il envoyé à la bonne url? Essayes d'afficher les msg d'erreurs de la BD par ex.


 
Vu que son formulaire se ré-affiche, je suppose que c'est la même page...


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 17-07-2010 à 14:12:30    

Vu les symptômes, je parierais sur un truc du genre "utilisation de $var" au lieu de "$_POST['var']".

Reply

Marsh Posté le 19-07-2010 à 09:34:21    

ah oui tiens, regardes la valeur de REGISTER_GLOBALS, si elle est pas à "on" ou "off".


---------------
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 19-07-2010 à 14:02:11    

bonjour,
 
le formulaire est situé sur la partie droite (inc.right.php) de la page principale, et est remplacé par l'affichage de l'heure (inc.interface.php) si l'identification est OK.
 
inc.right.php

Code :
  1. <?php
  2. if(isset($_SESSION['login']))
  3.  include_once('client/inc.interface.php');
  4. else{
  5.  include_once('client/inc.login.form.php');
  6. }
  7. ?>


 
inc.login.form.php

Code :
  1. <form action="client/login.php" method="post" id="formLogin">
  2. <fieldset>
  3.  <legend>identification</legend>
  4.  <?php
  5.   if(isset($_SESSION['error'])){
  6.    echo '<div class="error">'.$_SESSION['error'].'</div>';
  7.    unset($_SESSION['error']);
  8.   }
  9.  ?>
  10.  <label for="login">login:</label> <input type="text" id="login" name="login" size="20" /><br />
  11.  <label for="pass">pass:</label> <input type="password" id="pass" name="pass" size="20" /><br />
  12.  <input type="hidden" name="from" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
  13.  <input type="submit" value="ok" />
  14. </fieldset>
  15. </form>


 
login.php

Code :
  1. <?php
  2. session_start();
  3. include_once("../groovy/db.php" );
  4. $from = $_POST["from"];
  5. $login = htmlspecialchars($_POST["login"]);
  6. $pass = htmlspecialchars($_POST["pass"]);
  7. mysql_connect($DB_host, $DB_login, $DB_pass) or die(mysql_error());
  8. mysql_select_db($DB_db) or die(mysql_error());
  9. $result = mysql_query("select * from users where login='$login'" ) or die(mysql_error());
  10. if(mysql_num_rows($result) < 1)
  11.  $_SESSION['error'] = "login erron&eacute;!";
  12. else{
  13.  $res = mysql_fetch_array($result);
  14.  $truePass = $res['pass'];
  15.  if(md5($pass) == $truePass){
  16.   $_SESSION['login'] = $login;
  17.   $_SESSION['firstName'] = $res['firstName'];
  18.   $_SESSION['lastName'] = $res['lastName'];
  19.  }
  20.  else
  21.   $_SESSION['error'] = "pass erron&eacute;!";
  22. }
  23. mysql_close();
  24. header("Location: ".$from);
  25. ?>


 
J'ai vérifié est register_globals est bien à ON. En local avec wampserver, tout fonctionne comme sur des roulettes... :(


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 19-07-2010 à 14:03:25    

il devrait etre sur "off"

Reply

Marsh Posté le 19-07-2010 à 14:05:12    

Sur un serveur bien configuré, register_globals devrait être à "off" :/


---------------
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 19-07-2010 à 14:05:12   

Reply

Marsh Posté le 19-07-2010 à 14:06:33    

Ok merci, je viens en effet de voir que de son côté Wamp était sur off :)


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 19-07-2010 à 14:10:32    

cela dit, vu ton code, je vois aps de lien de cause à effet avec register_globals...


---------------
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 19-07-2010 à 14:25:56    

En effet, je viens de le passer à OFF et c'est pareil.
Je pense que c'est bien quelque chose d'autre, car quand j'essaie d'accéder au PHPMyAdmin d'OVH, login et pass corrects bien entendu, je suis déloggué ou/ai énormément de mal à me connecter, et ce quelque soit le navigateur.
 
De plus je viens de remarquer quelque chose avec mon site... Je rentre un login erroné, le navigateur me ramène sur la page principale sans me mettre de message d'erreur. J'attends un peu, genre 1 minute, je fais F5 pour rafraîchir la page et là le message d'erreur s'affiche.
De même si je rentre un login/pass correct, je valide, le formulaire s'affiche toujours, j'attends et je rafraîchis et je me retrouve loggué...
Il y aurait donc du lag quelque part ?


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 19-07-2010 à 14:26:44    

t'as bien ton niveau d'erreur au maximum ?

Reply

Marsh Posté le 19-07-2010 à 14:27:16    

Comment ça ? Qu'est-ce ?


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 19-07-2010 à 14:29:05    

le display_errors a "on" et le error_reporting a "E_ALL | E_STRICT" ou "-1" ou "32767"

Reply

Marsh Posté le 19-07-2010 à 14:33:59    

display_errors est à stdout et error_reporting à 6135.  
je ne semble pas pouvoir modifier ces variables là... (hébergement OVH perso)


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 19-07-2010 à 14:36:08    

pas grave au début de ton script tu fais

Code :
  1. error_reporting(E_ALL | E_STRICT);


Reply

Marsh Posté le 19-07-2010 à 14:48:00    

rien à signaler :/


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 19-07-2010 à 14:50:37    

eneleve ton header("Location: ".$from);
 
et fais un var_dump($_SESSION); a la place

Reply

Marsh Posté le 20-07-2010 à 21:27:19    

Je viens de modifier le titre, en effet je viens de me rendre compte qu'il s'agit d'un problème en rapport avec $_SESSION.
 
Du coup j'ai refait un autre formulaire ce qu'il y a de plus simple :
 
test.php

Code :
  1. <?php
  2. session_start();
  3. ?>
  4. <html>
  5. <head>
  6. <title>test</title>
  7. </head>
  8. <body>
  9. <form action="test2.php" method="post">
  10. <input type="text" name="champ"/>
  11. <input type="submit"/>
  12. </form>
  13. <p>
  14. <?php
  15.  echo "<p>";
  16.  var_dump($_SESSION);
  17.  echo "</p>";
  18. ?>
  19. </p>
  20. </body>
  21. </html>


 
et test2.php

Code :
  1. <?php
  2. session_start();
  3. $val = htmlspecialchars($_POST['champ']);
  4. if(!empty($val))
  5.  $_SESSION['val'] = $val;
  6. header("Location: test.php" );
  7. ?>


 
Rien de bien sorcier, juste une variable qui est censée être placée dans $_SESSION.
En faisant fonctionner ces 2 fichiers en remplaçant header(...) par var_dump($_SESSION), on voit bien que la variable est bien récupérée et bien placée dans $_SESSION.
Mais si on laisse header() à la place, et que ça redirige vers test.php (où il y a un var_dump($_SESSION) également), la variable n'est pas sauvée en session. Par contre si on attend et qu'on rafraîchit la page, elle peut apparaître. Et en rentrant à nouveau une autre valeur dans le champ, même chose, et là en + si on rafraîchit on a une alternance entre la première valeur, rien, et la seconde valeur.
C'est assez ubuesque... j'y perds mon latin.
 
La démo ici : http://www.rsick.com/test.php (hébergé chez OVH), si vous voulez voir par vous-mêmes... si vous voulez que je remplace header() par  var_dump() dans test2.php faites-le moi savoir, mais ça n'apporte rien de spécial, la variable est bien récupérée dans le formulaire, et APPAREMMENT bien stockée dans la session............


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 21-07-2010 à 18:26:01    

Et si t'affichait $val tout en haut de la page ( echo $val; ) histoire d'être sur de ce qu'il y a dans ta variable ??


---------------
Fort et motivé. Sauf parfois.
Reply

Marsh Posté le 22-07-2010 à 12:41:47    

je viens de tester et $val contient bien ce qu'il faut


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le 22-07-2010 à 14:08:34    

j'ai essayé et ça fonctionne très bien :/

Reply

Marsh Posté le 22-07-2010 à 14:18:05    

en effet je viens de tester avec la connexion du téléphone en 3G, ça a l'air de fonctionner... je ne comprends plus grand chose !


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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