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

PHP & Base de données Discussion :

code d'inscription - authentification user


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut code d'inscription - authentification user
    Bonjour a tous et à toutes ,

    je suis débutante en php soyez indulgent svp.
    Je cherche a faire un formulaire d'inscription et après maintes recherches sur ce site et d'autres sites, j'ai pu réaliser mon code. Mais il ne marche pas et je ne comprends pas pourquoi car tout semble correct. Quand je lance la page, je remplis les champs d'enregistrements et je soumets, on me redirige vers adduser_submit puis plus rien. La page reste blanche et sur phpmyadmin, la base de données ne subit aucune modification.

    Ca fait près de deux semaines que je cherche en vain le problèmes et c'est pour cela que je viens ici.


    Merci d'avance»!!

    MA BASE DE DONNÉES AVEC JUSTE LA TABLE NECESSAIRE IL Y EN A 6 AUTRES:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    -- Base de données :  `maBD`
     
    -- Structure de la table `authentification`
    --
    DROP TABLE IF EXISTS `authentification`;
    CREATE TABLE IF NOT EXISTS `authentification` (
      `numAuth` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(255) NOT NULL,
      `password` varchar(20) NOT NULL,
      `password2` varchar(20) NOT NULL,
      PRIMARY KEY (`numAuth`),
      UNIQUE KEY (`username`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    FICHIER D'INSCRIPTION ADDUSER

    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
    <h1>Inscription </h1>
    <body>
    <form action="adduser_submit.php" method="post">
    <fieldset>
    <p>
    <label for="username">Nom d'utilisateur</label>
    <input type="text" id="username" name="username" value="" maxlength="20" />
    </p>
    <p>
    <label for="password">Mot de passe</label>
    <input type="text" id="password" name="password" value="" maxlength="20" />
    </p>
    <p>
    <label for="password">Retapez votre mot de passe</label>
    <input type="text" id="password2" name="password2" value="" maxlength="20" />
    </p>
    <p>
    <input type="hidden" name="form_token" value="<?php echo $form_token; ?>" />
    <input type="submit" name ="submit" value="Soumettre" />
    </p>
    </fieldset>
    FICHIER ADDUSER_SUBMIT
    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
    <?php
        try
        {
          $bdd = new PDO ('mysql:host=localhost;dbname=maBD;charset=utf8', 'root', '');
     
       }
     
      catch(Exception $e)
      {
       die('Erreur :'.$e->getMessage());
      }
     
        if(ISSET($_POST['submit']))
    {
    //On créer les variables
    $username =   $_POST['username'];
    $password = $_POST['password'];
    $password = hash("sha256", $password);
     
    $req = $bdd->prepare('INSERT INTO authentification(username, password) VALUES (:username, :password)');
     
    $req->execute(array("username" => $username, "password" => $password));
     
     
    if(!empty($username) && !empty($password))
    {
     
    }else{
    ?>
    <b>Pseudo ou MDP vide !</b>
    <?php
    }
    if(empty($username) && empty($password))
    {
     
    }else{
     
    session_start();
    $_SESSION['username'] = $_POST['username'];
    }
     
    }  
       ?>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    `password` varchar(20) NOT NULL,
      `password2` varchar(20) NOT NULL,
    1- tu as password2 qui est not null sans valeur par défaut et qui n'a pas de valeur dans ton insert.
    2- Fait echo $password; après le hash et tu verras si ça entre dans un varchar(20).

    A+.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    plusieurs erreurs :

    1/ incohérence d'encodage :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
          $bdd = new PDO ('mysql:host=localhost;dbname=maBD;charset=utf8', 'root', '');
    Le mieux est de TOUT passer en UTF-8.


    2/ password2 : tu ne l'utilises pas !
    gestion d'erreur : il sert à vérifier que les 2 mots de passe tapés sont identiques AVANT enregistrement en BdD :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( $_POST['password2'] != $_POST['password2']){
    	echo 'erreur !';
    }
    D'autre part, il n'est pas utilie en Bdd, on peut donc supprimer :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
      `password2` varchar(20) NOT NULL,
    Comme l'a dit andry.aime, le mot de passe hashé fera PLUS QUE 20 caractères !
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
      `password` varchar(100) NOT NULL,

    3/ Hashage : il existe une fonction PHP pour ça :

    Et la fonction inverse (au moment de la connexion) :


    4/ INSERT en BDD
    Tu as 2 erreurs (oubli des ":") :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->prepare('INSERT INTO authentification(username, password) VALUES (:username, :password)');
     
    $req->execute(array(
    	":username" => $username, 
    	":password" => $password)
    	);

    5/ Enfin (?? )
    A mettre sur la TOUTE PREMIERE ligne du script (pas en plein milieu du code) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php if( session_id()=='' ){ session_start(); }
    header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8
     
    error_reporting(E_ALL); 	// affichage des erreurs : UNIQUEMENT en phase de TEST !!
    // ............

Discussions similaires

  1. Code simple qui ne marche pas
    Par Zikas-r dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/12/2008, 01h35
  2. [RegEx] Regex simple qui ne fonctionne pas
    Par Bruno.C dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2008, 15h05
  3. Filtres tout simples qui ne fonctionnent pas
    Par cuterate dans le forum Requêtes et SQL.
    Réponses: 29
    Dernier message: 13/06/2008, 11h08
  4. Code php qui ne fonctionne pas
    Par bachir008 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2007, 10h17
  5. Programme Perl tout simple qui ne fonctionne pas
    Par jejerome dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2006, 23h58

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