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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2009383
reptile17
Posté le 16-07-2010 à 02:37:13  profilanswer
 

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
mood
Publicité
Posté le 16-07-2010 à 02:37:13  profilanswer
 

n°2009399
aspirateur
Posté le 16-07-2010 à 08:31:03  profilanswer
 

Tu peux nous mettre ton code ?

n°2009413
rufo
Pas me confondre avec Lycos!
Posté le 16-07-2010 à 09:37:09  profilanswer
 

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
n°2009463
Dj YeLL
$question = $to_be || !$to_be;
Posté le 16-07-2010 à 11:33:29  profilanswer
 

aspirateur a écrit :

Tu peux nous mettre ton code ?


 
+1


---------------
Gamertag: CoteBlack YeLL
n°2009464
Dj YeLL
$question = $to_be || !$to_be;
Posté le 16-07-2010 à 11:34:32  profilanswer
 

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
n°2009690
omega2
Posté le 17-07-2010 à 14:12:30  profilanswer
 

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

n°2009881
rufo
Pas me confondre avec Lycos!
Posté le 19-07-2010 à 09:34:21  profilanswer
 

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
n°2009995
reptile17
Posté le 19-07-2010 à 14:02:11  profilanswer
 

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
n°2009996
stealth35
Posté le 19-07-2010 à 14:03:25  profilanswer
 

il devrait etre sur "off"

n°2009997
rufo
Pas me confondre avec Lycos!
Posté le 19-07-2010 à 14:05:12  profilanswer
 

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
mood
Publicité
Posté le 19-07-2010 à 14:05:12  profilanswer
 

n°2009998
reptile17
Posté le 19-07-2010 à 14:06:33  profilanswer
 

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
n°2010000
rufo
Pas me confondre avec Lycos!
Posté le 19-07-2010 à 14:10:32  profilanswer
 

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
n°2010010
reptile17
Posté le 19-07-2010 à 14:25:56  profilanswer
 

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
n°2010012
stealth35
Posté le 19-07-2010 à 14:26:44  profilanswer
 

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

n°2010014
reptile17
Posté le 19-07-2010 à 14:27:16  profilanswer
 

Comment ça ? Qu'est-ce ?


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
n°2010019
stealth35
Posté le 19-07-2010 à 14:29:05  profilanswer
 

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

n°2010026
reptile17
Posté le 19-07-2010 à 14:33:59  profilanswer
 

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
n°2010029
stealth35
Posté le 19-07-2010 à 14:36:08  profilanswer
 

pas grave au début de ton script tu fais

Code :
  1. error_reporting(E_ALL | E_STRICT);


n°2010039
reptile17
Posté le 19-07-2010 à 14:48:00  profilanswer
 

rien à signaler :/


---------------
« It's time to kick ass and chew bubble gum. And I'm all outta gum. » --Duke Nukem
n°2010042
stealth35
Posté le 19-07-2010 à 14:50:37  profilanswer
 

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

n°2010498
reptile17
Posté le 20-07-2010 à 21:27:19  profilanswer
 

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
n°2010834
l0g4n
Expert en tout :o
Posté le 21-07-2010 à 18:26:01  profilanswer
 

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.
n°2010972
reptile17
Posté le 22-07-2010 à 12:41:47  profilanswer
 

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
n°2011001
Profil sup​primé
Posté le 22-07-2010 à 14:08:34  answer
 

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

n°2011005
reptile17
Posté le 22-07-2010 à 14:18:05  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 


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

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

 

Sujets relatifs
[Access] Appliquer filtre à un sous formulaire situé dans un ongletformulaire OUTLOOK
session cases à cocher - formulaire[VBA] Formulaire continu avec un recordset
vérifier les champs d'un formulaire contactCréation formulaire de recherche très simple depuis données excel
Pourquoi ce formulaire n'est-il pas testé ?Macro pour formulaire
sécurité formulaireProblème formulaire de contact / envoi mail
Plus de sujets relatifs à : Formulaire de login OK en local mais pas sur le net ? (pb de sessions)


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