IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème avec un module de connexion


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Problème avec un module de connexion
    Bonjour ! Je suis un jeune Etudiant en BTS Services Informatique aux Organisation, et je suis actuellement en stage en entreprise. J'ai donc pour objectif de créé un site vitrine, et je dois actuellement fait un système de connexion ... Cependant étant débutant en PHP, l'ayant que peu vu en cours, je suis dans une asser grande galère , et vient demander votre aide !
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <?php
     
    if(!isset($_SESSION))
    {
    	session_start();
    }
     
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion'){
    	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
    		$bdd = new PDO('mysql:host=localhost;dbname=jvfr', 'root', '');
    		$bdd->exec("SET CHARACTER SET utf8");
    		$rep = $bdd->query('SELECT count(*) As NbrCo FROM membre WHERE login="' . $_POST['login'] . '" AND pass_md5="' . md5($_POST['pass']).'"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		$data = $rep->fetch();
    		if ($data[0] == 1) {
    			$_SESSION['login'] = $_POST['login'];
    			header('Location: index.php');
    			exit();
    		}
     
    		elseif ($data['NbrCo'] == 0) {
    			$erreur = 'Compte non reconnu.';
    		}
    	}
    	else {
    		$erreur ='Au moins un des champs est vide.';
    	}
    }
    ?>
     
    	<?php
    	if(isset($_SESSION['login']))
    	{
    		$bdd = new PDO('mysql:host=localhost;dbname=jvfr', 'root', '');
    		$bdd->exec("SET CHARACTER SET utf8");
     
    		$rep = $bdd->query('SELECT Admin FROM membre WHERE login="' . $_SESSION['login'] .'"');
     
    		$data = $rep->fetch();
    		if ($data[0] ==1)
    		{
    			if(!isset($_SESSION['admin'])){
    				$_SESSION['admin']=true;
    			}
    		}
    		?>
    		Bienvenue <?php echo $_SESSION['login']; ?> !<br />
            <a href="include/deconnexion.php">Déconnexion</a>
    		<?php
    	}
    	else
    	{ ?>
    		<div class="connexion">
    			Connexion:<br />
                <form action="connexion.php" method="post" style="margin-top: 10px;">
                    <table><tr>
                            <td><label for="login"> Login : </label></td>
                            <td><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /></td></tr>
                        <tr><td><label for="password"> Mot de passe : </label></td>
                            <td><input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br /></td></tr>
                    </table>
                    <input type="submit" name="connexion" value="Connexion" style="margin-right: 40px; margin-top: 10px; margin-bottom: 10px;">
                </form>
    			<?php
    			if (isset($erreur)) echo '<br /><br />',$erreur;
    			?>
    		</div>
    	<?php
    	}
    	?>
    Donc lorsque je tente de m'identifier avec les bon logs qui sont sur mon Wamp, puisque je bosse pour le moment en local, lorsque je tente de me connecter, j'ai alors un " Compte non reconnu. " comme si que la combinaison pseudo/mdp n'avait pas été trouver dans la base de donnée, alors qu'elle y est !! Donc voila je ne comprend pas et je suis complètement bloqué à ce niveau là :/ .

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    affiche le contenu de tes variables avec la fonction "var_dump" par exemple pour vérifier qu'elles contiennent bien ce qui était prévu

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Voici ce que ça m'affiche lorsque je demande var_dump($rep, $data);
    object(PDOStatement)[2]
      public 'queryString' => string 'SELECT count(*) As NbrCo FROM membre WHERE login="Admin" AND pass_md5="4a7d1ed414474e4033ac29ccb8653d9b"' (length=104)
    
    array (size=2)
      'NbrCo' => string '0' (length=1)
      0 => string '0' (length=1)
    Donc le probleme viendrais du cryptage du mot de passe non ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     object(PDOStatement)[2]
    public 'queryString' => string 'SELECT count(*) As NbrCo FROM membre WHERE login="Admin" AND pass_md5="4a7d1ed414474e4033ac29ccb8653d9b"' (length=104)
    est-ce que le mot de passe hashé(4a7d1ed414474e4033ac29ccb8653d9b) est le même que celui est stocké en BD?

    inutile de mélanger empty et isset car empty inclut isset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	if ( !empty($_POST['login'] &&  && !empty($_POST['pass']) ) {

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Non le mdp stocké sur la BDD est 0000
    EDIT: J'ai enlever les isset sur la ligne de code concerné, mais le résultat est toujours le même :/

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Non le mdp stocké sur la BDD est 0000
    dans ce cas tu compares deux choses complètement différentes car 0000 sera toujours différente 4a7d1ed414474e4033ac29ccb8653d9b.Pour être plus clair c'est ce hash 4a7d1ed414474e4033ac29ccb8653d9b qu'il faut stocker en bd et non le mot de passe en clair(0000). Pour insérer le hash du mot de passe tu peux utiliser la fonction md5 de mysql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     INSERT INTO table (login,pass_md5) VALUES ('le_login',md5('0000'))
    A exécuter par exemple dans la console sql ou avec phpmyadmin.

    EDIT: J'ai enlever les isset sur la ligne de code concerné, mais le résultat est toujours le même :/
    ce n'est ni isset encore moins empty qui est à l'origine du problème.simplement la fonction empty() vérifie qu'une variable existe et qu'elle n'est pas vide(chaîne vide, zéro,false,NULL...) alors que la fonction isset() vérifie uniquement l'existence d'une variable qu'importe qu'elle soit vide.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	if ( !empty($_POST['login']) && !empty($_POST['pass']) ) {

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Super ça marche !!!! Merci infiniment, je crois que j'aurais jamais trouvé le problème tout seul

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/09/2006, 13h18
  2. [SQL-Server] Problème avec la fonction mssql_connect (connexion PHP SQL Server)
    Par flydragon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/05/2006, 11h59
  3. [SQL-Server] Problème avec odbc et ma connexion SQL Server
    Par vodevil dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/12/2005, 10h04
  4. problème avec le module DBI
    Par vbcasimir dans le forum SGBD
    Réponses: 6
    Dernier message: 08/10/2005, 12h48
  5. problème avec un module
    Par vbcasimir dans le forum Modules
    Réponses: 2
    Dernier message: 29/08/2005, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo