OVH Community, votre nouvel espace communautaire.

Login impossible avec mysql


emil31
02/07/2016, 23h51
J'ai trouvé la solution ou un moyen de passer outre ce problème.

Dans cette partie du code :

Code:
 if($errMsg == ''){
            $records = $databaseConnection->prepare('SELECT id,username,password FROM  tbl_users WHERE username = :username');
            $records->bindParam(':username', $username);
            $records->execute();
            $results = $records->fetch(PDO::FETCH_ASSOC);
            if(count($results) > 0 && password_verify($password, $results['password'])){
                $_SESSION['username'] = $results['username'];
                header('location:dashboard.php');
                exit;
            }else{
                $errMsg .= 'Username and Password are not found
'; } }
J'ai supprimé la condition
Code:
password_verify($password, $results['password']
et cela me permet de me connecter à la base avec un utilisateur ayant un mot de passé "hashé" ou non.

Gaston_Phone
02/07/2016, 19h18
Le 2ème test étant OK, il te faut appliquer les identifiants dans la configuration ci-dessous :
Code PHP:
    //DB configuration Constants
    
define('_HOST_NAME_''localhost');
    
define('_USER_NAME_''root');
    
define('_DB_PASSWORD''*****');
    
define('_DATABASE_NAME_''test'); 
Et ... de t'inspirer du 2ème script.

emil31
02/07/2016, 17h48
Résultats des scripts avec ancien langage :

Code:
Version de PHP : 5.4.45-0+deb7u3

mysql_connect=Resource id #2 - Erreur= 
mysql_select_db=1 - Erreur= 

Test de DROP/CREATE de la table 'Tab_test_DB' dans la base 'test' sur le serveur 'localhost' 

Supression de la table Tab_test_DB - Erreur= - $sql_query=DROP TABLE IF EXISTS `Tab_test_DB` - $result_query=1 
Création de la table Tab_test_DB- Erreur= - $sql_query=CREATE TABLE `Tab_test_DB` ( `Id` int(11) NOT NULL auto_increment, `NOM` varchar(32) NOT NULL default '', `PRENOM` varchar(32) NOT NULL default '', PRIMARY KEY (`Id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 - $result_query=1 
Ajout d'un enregistrement - Erreur= - $sql_query=INSERT INTO `Tab_test_DB` values ('','DURANDAL','Michel') - $result_query=1 
Ajout d'un enregistrement - Erreur= - $sql_query=INSERT INTO `Tab_test_DB` values ('','DURANDAL','Pierre') - $result_query=1 
Ajout d'un enregistrement - Erreur= - $sql_query=INSERT INTO `Tab_test_DB` values ('','accents-éèàâ','Jean-Noël') - $result_query=1 
SELECT dans la table Tab_test_DB - Erreur= - $sql_query=SELECT Id, NOM, PRENOM FROM `Tab_test_DB` WHERE NOM='DURANDAL' - $result_query=Resource id #3 
SELECT dans la table Tab_test_DB - Erreur= - $sql_query=SELECT Id, NOM, PRENOM FROM `Tab_test_DB` - $result_query=Resource id #4 
Nombre d'enregistrements trouvés = 3 
Table Tab_test_DB : 1 - $NOM=DURANDAL - $PRENOM=Michel 
Table Tab_test_DB : 2 - $NOM=DURANDAL - $PRENOM=Pierre 
Table Tab_test_DB : 3 - $NOM=accents-éèàâ - $PRENOM=Jean-Noël 

Durée du traitement = 0.03 secondes
Avec PDO :

Code:
Version de PHP : 5.4.45-0+deb7u3

$DBconnect = 'mysql:dbname=test;host=localhost' 

Etablissement de la connexion SQL en mode PDO 

new PDO = OK 
Test de DROP/CREATE de la table 'Tab_test_DB' dans la base 'test' sur le serveur 'localhost' 

Supression de la table 'Tab_test_DB' - $sql_query=DROP TABLE IF EXISTS `Tab_test_DB` 
Création de la table 'Tab_test_DB' - $sql_query=CREATE TABLE `Tab_test_DB` ( `Id` int(11) NOT NULL auto_increment, `NOM` varchar(32) NOT NULL default '', `PRENOM` varchar(32) NOT NULL default '', PRIMARY KEY (`Id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 

Ajout d'un enregistrement - $sql_query=INSERT INTO `Tab_test_DB` values ('','DURANDAL','Michel') 
Ajout d'un enregistrement - $sql_query=INSERT INTO `Tab_test_DB` values ('','DURANDAL','Pierre') 
Ajout d'un enregistrement - $sql_query=INSERT INTO `Tab_test_DB` values ('','accents-éèàâ','Jean-Noël') 

SELECT dans la table 'Tab_test_DB' - $sql_query=SELECT Id, NOM, PRENOM FROM `Tab_test_DB` WHERE NOM = 'DURANDAL' AND PRENOM = 'Pierre'
Table 'Tab_test_DB' : 1 - $NOM=DURANDAL - $PRENOM=Pierre 

SELECT dans la table 'Tab_test_DB' - $sql_query=SELECT Id, NOM, PRENOM FROM `Tab_test_DB` 
Table 'Tab_test_DB' : 1 - $NOM=DURANDAL - $PRENOM=Michel 
Table 'Tab_test_DB' : 2 - $NOM=DURANDAL - $PRENOM=Pierre 
Table 'Tab_test_DB' : 3 - $NOM=accents-éèàâ - $PRENOM=Jean-Noël 

Fermeture de la connexion SQL en mode PDO 

Durée du traitement = 0.01 secondes
Tout semble OK.

Gaston_Phone
02/07/2016, 15h28
Tu devrais tester ces 2 scripts sur ton VPS :

Le premier te permettra de vérifier tes identifiants en mode MYSQL simple sur ton VPS
Le deuxième en langage PDO.

emil31
02/07/2016, 13h47
Bonjour,

Merci pour ces premiers retours, j'ai testé avec un autre utilisateur, le résultat est le même. Sur la version Wamp, lors d'une erreur de login, un message l'indique.

Ici, je reste bloqué à ce niveau :

if(isset($_POST['submit'])){
$errMsg = '';

chmod777
02/07/2016, 00h03
Citation Envoyé par emil31
Le formulaire de connexion s'affiche mais lors du submit rien ne se passe, le formulaire disparaît sans message d'erreur.
Tu enregistres bien tes messages d'erreurs dans la variable $errMsg. Mais à aucun moment, tu ne fais un echo pour en afficher le contenu.

fritz2cat
01/07/2016, 23h40
Je ne sais pas. Mais ne créerais-tu pas un utilisateur "normal" à utiliser au lieu de root ?

emil31
01/07/2016, 23h10
Bonjour,

J'ai créé un site comportant une page membre, d'abord avec Wamp. Tout fonctionne de cette façon, puis, ayant fait l’acquisition d'un VPS, j'ai tenté de migrer mon site sur le serveur.

La partie php et mysql semblent fonctionner, les pages s'affichent correctement et les tables sont présentes sur la base de donnée. Malheureusement la partie "login" ne passe pas. Le formulaire de connexion s'affiche mais lors du submit rien ne se passe, le formulaire disparaît sans message d'erreur.

J'ai donc tenter de vérifier l'accès à la base avec ce code :
Code:
Aucun message d'erreur n'apparaît.

Voici le code de la page login.php :
Code:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	} catch(PDOException $e) {
		echo 'ERROR: ' . $e->getMessage();
	}
	
	if(isset($_POST['submit'])){
		$errMsg = '';
		//username and password sent from Form
		$username = trim($_POST['username']);
		$password = trim($_POST['password']);
		
		if($username == '')
			$errMsg .= 'You must enter your Username
'; if($password == '') $errMsg .= 'You must enter your Password
'; if($errMsg == ''){ $records = $databaseConnection->prepare('SELECT id,username,password FROM tbl_users WHERE username = :username'); $records->bindParam(':username', $username); $records->execute(); $results = $records->fetch(PDO::FETCH_ASSOC); if(count($results) > 0 && password_verify($password, $results['password'])){ $_SESSION['username'] = $results['username']; header('location:index.php'); exit; }else{ $errMsg .= 'Username and Password are not found
'; } } } ?>





Avez-vous une idée sur l'origine de ce problème ?
Que puis-je vérifier de plus ?