[résolu] impossible de me connecter à mysql

impossible de me connecter à mysql [résolu] - PHP - Programmation

Marsh Posté le 28-02-2006 à 15:45:42    

Bonjour,
je fais mes premiers pas sur php/mysql
Sur windows, je n'arrive pas à me connecter à mysql ("can't connect to database" )via un script php d'enregistrement d'utilisateur (script correcte puisqu'il fonctionne sur la plateforme linux). J'ai vérfié php.ini, tout semble correctement configuré :
; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:\PHP\extensions\"
extension=php_mssql.dll
extension=php_msql.dll
 
et les deux fichiers se trouvent bien dans la directory...
 
Quelqu'un peut-il m'aider? puis-je faire un autre test? dois-je configurer quelque chose sur apache?
 
Merci d'avance!!!
A+


Message édité par tourdball le 09-03-2006 à 09:30:51
Reply

Marsh Posté le 28-02-2006 à 15:45:42   

Reply

Marsh Posté le 28-02-2006 à 15:54:02    

pour mysql, il faut utiliser l'extension mysql : php_mysql.dll  
Vu le message d'erreur ce n'est pas une abscence de l'extension (qui se traduit par une "fonction indisponible) mais une erreur dans les informations de login.
Et là, toi seul peut vérifier les adresses, noms et pseudos fournis par ton hébergeur ou demander ces informations à ton hébergeur.
 
Si t'as installé mysql chez toi, alors essaye avec "localhost" comme adresse de serveur "root" comme utiliser, et soiit "root" comme mot de passe soit pas de mot de passe.
 
En fait, vu l'erreur, c'est l'adresse où ce trouve mysql qui n'est pas bonne. T'es sur qu'il y en a un mysql de lancé à l'adresse que t'as indiqué?

Reply

Marsh Posté le 03-03-2006 à 12:15:00    

Salut omega2,
Bon je dois préciser :
J'ai en fait bien la connection avec la database, un seul problème persiste, l'autentification : je peux ajouter un user(dans la database) via script php sans problème, je peux aussi interroger la database pour afficher des informations. Mais je n'arrive pas à me connecter via un classique login/user (via form php). Chose encore plus étrange, ce problème n'existe pas sur la plateforme Linux. Ce n'est qu'un problème sur Windows (Wamp5). Je flaire déjà d'ou vient le probleme mais je n'ai toujours pas réussi à le résoudre :
 
Comme je l'ai déjà dit, je peux m'enregistrer sans problème (form php, UPDATE dans la database), et en fait quand je vais dans phpmyadmin, les nouveaux utilisateurs sont insérés sans problème. En fait quand j'essaye de me connecter j'ai le message (de mon script php) 'login failure' en gros l'authentification n'arrive pas à associer l' 'user' et son 'password'. C'est surement un problème cryptage du mot de passe mais j'ai déjà essayé un paquet de cryptages différents (PASSWORD(), OLD_PASSWORD(), ENCRYPT(),...) sans que cela ne change rien.
 
Je suis bloqué et je ne plus quoi (à part n'utiliser uniquement que Linux :-))
 
A+ et merci d'avance pour votre aide!

Reply

Marsh Posté le 03-03-2006 à 12:52:31    

Petite idée : récupére "mysql browser" sur le site de mysql et essaye de te conecter en l'utilisant.
Si ca marche, ca vient du code php ou d'un réglage de php.
Si t'y arrive pas, alors c'est soit que ce user n'a pas le droit de se conecter de n'importe où, soit que tu t'es planté au niveau user/mot de passe, soit que mysql n'est pas lancé ou qu'il n'écoute pas sur le port que t'essaye de joindre.

Reply

Marsh Posté le 03-03-2006 à 13:22:27    

Attention : je me connecte très bien à la database, c'est çà qui ne passe pas :
select * from admin
where username='admin'
and password = password('123456')
En mysql me dit " MySQL n'a retourné aucun enregistrement"
Alors qu'il existe bien dans la table admin un username=admin avec un password=123456 encrypté par password.
 
En fait
select * from admin
where username='admin'
 
mais :
select * from admin
where password = password('123456')
ne me retourne rien...
 
C'est pour cela que je ne comprends pas ayant essayé divers type de cryptage, rien n'y fait...

Reply

Marsh Posté le 03-03-2006 à 17:29:08    

Si je me souviens bien, entre mysql4.0 et mysql 4.1, l'encodage de la fonction password à changer.
L'anciene méthode d'encodage est utilisable grace à old_password() de mysql si je me souviens bien.
 
Si c'est du à ça, alors essaye cette fonction là.
 
PS : Si ca te dit que la fonction n'existe pas, alors cherche dans la doc de mysql.

Reply

Marsh Posté le 03-03-2006 à 17:31:35    

tu appelle un champ password alors que c'est un mot résérvé (d'ailleur tu l'utilises juste apres :D)


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 06-03-2006 à 09:13:03    

Bonjour à tous,
J'utilise mysql 5.0.18 et j'avais déjà essayé la solution du old_password(). En ce qui concerne le champs "password" comme mot clé, j'ai essayé en modifiant le nom du champ mais sans succès, d'autre part comme je l'ai déjà mentionné, tout fonctionne parfaitement sous linux, je ne pense donc pas que le problème vienne de là...
 
à suivre... à l'aide!!!

Reply

Marsh Posté le 06-03-2006 à 11:22:22    

pourquoi tu utilises pas un encodage md5 ou sha1 plutot que password de mysql.
 


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 06-03-2006 à 11:47:21    

Salut
 
J'ai déjà essayé (presque tous les types de cryptages) et çà ne marche pas. J'ai aussi fait les tests sans cryptages et là, çà fonctionne! C'est donc inévitablement un problème de cryptage.
Je ne comprends pas pourquoi çà ne marche pas avec le cryptage...  
 
Y a-t-il une option à activer dans la configuration de php ou de mysql?

Reply

Marsh Posté le 06-03-2006 à 11:47:21   

Reply

Marsh Posté le 06-03-2006 à 11:56:52    

tourdball a écrit :

Salut
 
J'ai déjà essayé (presque tous les types de cryptages) et çà ne marche pas. J'ai aussi fait les tests sans cryptages et là, çà fonctionne! C'est donc inévitablement un problème de cryptage.
Je ne comprends pas pourquoi çà ne marche pas avec le cryptage...  
 
Y a-t-il une option à activer dans la configuration de php ou de mysql?

Heu ... si t'as les mots de passe mis en clair (sans aucun cryptage) dans la base de donnée, tu risques pas de les retrouver en cherchant leur équivalent crypter.
 
En bref, si tu cryptes un mot de passe, il faut utiliser la même méthode de cryptage pour chercher les lignes qui correspondent et si tu les stockes en clair, alors il faut chercher le mot de passe tel quel sans le transformer.

Reply

Marsh Posté le 06-03-2006 à 12:18:08    

je pense que c'est parce ton test est mal fait.
 
tu le cryptes avant de l'enregistrer  
 
et apres tu fais ca
 
if ((md5($_POST['password'])) == $result_req['pass en db']  )
 
là ca fonctionnera ou alors tu peux aussi tester directement le pass dans ta req SELECT.
 
 


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 06-03-2006 à 16:29:00    

Bon les amis, je resynthétise : Mon code est parfaitement bien écrit, j'en ai pour preuve que tout fonctionne parfaitement sous Linux. Mon problème concerne exclusivement la plateforme Windows!
Il est évident que quand je change le cryptage à l'enregistrement, je le change aussi dans le script du login.  
 
D'autre part, et c'est encore plus étrange, ma connection à la database fonctionne puisque les autres modules qui utilisent une connection à la DB pour l'affichage des pages fonctionnent.
Ma connection à la db, je la fais çà :
 
function db_connect()
{
   $result = @mysql_pconnect('localhost', 'book_sc', 'password');  
   if (!$result)
      return false;
   if (!@mysql_select_db('book_sc'))
      return false;
   return $result;
}
 
Je précise que le mot de passe de book_sc est crypté en password()!!!?
et ma connection en tant que qu'admin je la fais comme çà :
 
function login($username, $password)
{
  // connect to db
  $conn = db_connect();
  if (!$conn)
    return 0;
 
   $result = mysql_query("select * from admin  
                         where username='$username'
                         and password = PASSWORD('$password')" );
  if (!$result)
     return 0;
   
  if (mysql_num_rows($result)>0)
     return 1;
  else  
     return 0;
}
 

Reply

Marsh Posté le 08-03-2006 à 08:56:36    

on est bloqué? :D

Reply

Marsh Posté le 08-03-2006 à 10:55:59    

Laisse moi deviner : t'as pas changer la taille de la colone du password et du coup il est pas sauvegardé en entié dans ta base.

Reply

Marsh Posté le 09-03-2006 à 09:20:23    

BINGO!!!
c'était donc çà, j'avais mal défini ma table dans MySQL, le champs "PASSWORD" était défini comme char(16), or le cryptage via password génére un code de 40 caractère, le problème était donc là!
 
Bravo omega2 ;) et merci d'etre resté avec moi jusqu'au bout sur ce coup là....

Reply

Sujets relatifs:

Leave a Replay

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