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 :

PDO Phpmyadmin n'enregistre rien dans la BDD [PDO]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut PDO Phpmyadmin n'enregistre rien dans la BDD
    Bonjour, je suis sur un petit projet d'espace membre, je suis des cours pour apprendre PHP mais malgré le fait que je fasse tout ce que le formateur internet fasse, mon code ne fonctionne pas et l'utilisateur ne s'enregistre pas dans la BDD de Phpmyadmin comme ça le fait sur sa vidéo. Ca fait maintenant 1 semaine que je bloque des heures là-dessus par jour, j'ai changé d'environnement, refait encore et encore de A à Z selon la formation ainsi que d'autres sources mais rien n'y fait, mon utilisateur ne s'inscrit pas...

    Je précise que j'ai été enlever les " ; " dans le php.ini concernant les PDO, SSL n'est pas activé sur Phpmyadmin (il ne me semble pas qu'il faille l'activer), qu'aucune erreur ne m'est retournée alors que j'ai config Php pour les avoir affichées dans un fichier conf.d (si j'ai bonne mémoire). Je n'ai pas modifié les ports, j'utilise ceux de xampp par défaut et je tourne sur du linux mais je penses pas que ce soit important.

    Voici la page qui pose problème, j'ai réunis toutes les infos dessus mais je passerai par des required() par la suite, c'est juste pour simplifier l'affichage que je fais cette structure.

    Ah oui, une fois que j'ai rentré les infos valides dans le formulaire (car la vérification des erreurs se fait bien lorsque j'envoie le formulaire, je sais afficher username et pincode avec echo, j'ai fait les tests) je suis redirigé vers la page register.php comme je le veux mais celle-ci est blanche et impossible d'afficher le code source, j'imagine donc qu'il doit y avoir une erreur de serveur qui ne sait pas envoyer la page mais je ne trouve pas de où, si une bonne âme peut m'éclairer ce serait vraiment hyper chouette car j'ai bientôt plus de cheveux à force de me les tirer ^^

    Merci beaucoup !

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     
    <?php
     
    if (isset($_POST['registration']))
    {
        if(empty($_POST['username']) || !preg_match('/[a-z0-9]+/', $_POST['username']))
        {
            $avert = 'Username must be lowercase, letters or numbers !';
        }
        elseif(empty($_POST['password']) || $_POST['password'] != $_POST['passwordRetype'])
        {
            $avert = 'Invalid or unlike password !';
        }
        elseif(empty($_POST['pincode']) || $_POST['pincode'] != $_POST['pincodeRetype'])
        {
            $avert = 'Invalid or unlike PIN code !';
        }
        else 
        {
            $username       = $_POST['username'];
            $password       = $_POST['$password'];
            $pincode        = $_POST['pincode'];
     
            $db= new PDO('mysql:host=localhost;dbname=dbtest;charset=utf8', 'root', '');
            $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
            $req = $db->prepare('SELECT count(*) as numberUsers FROM users WHERE username = ?');
            $req->execute(array($username));
     
            while($username_verification = $req->fetch())        
            {
                if ($username_verification['numberUsers'] != 0) 
                {
                    $avert = 'Username already exist !';
                }
            }
     
            $secret = sha1($pincode).time();
            $secret = sha1($secret).time();
     
            $password = "0512".sha1($password."379")."9356842"; 
     
            $req = $db->prepare("INSERT INTO users (username, password, pincode, secret) VALUES(?, ?, ?, ?)");
            echo 'Ok';                                                                                                     // Cet echo cesse de fonctionner à partir d'ici, plus haut il est toujours affiché.
            $req->execute(array($username, $password, $pincode, $secret));
     
            header('location: ../?success=1');
        }
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="../login.css">
     
        <meta charset="utf-8" />
     
        <title>Espace Membre</title>    
    </head>
    <body>
        <header>
            <?php include("../banner.php"); ?>
        </header>
     
        <style>
                body { background-image: url('../wllppr.jpg'); }
        </style>  
     
        <?php include("../menu.php"); ?>
     
        <br>
        <br>
     
        <div class="connectDivCenter">
            <h1 class="connectTitle">Member Registration</h1>
            <?php if (isset($avert)) echo $avert;?>
                <form method="post" action="register.php">
     
                    <p class="connectLabel">
                        <label for="username">Choose your username</label>
                        <br>
                        <input class="connectInput" type="text" name="username" placeholder="username in lowercase only" required/>
                    </p>
     
                    <p class="connectLabel">
                        <label for="password">Type a strong password</label>
                        <br>
                        <input class="connectInput" type="password" name="password"  placeholder="STRONG PASSWORD" required/>
                    </p>
     
                    <p class="connectLabel">
                        <label for="passwordRetype">Retype your password</label>
                        <br>
                        <input class="connectInput" type="password" name="passwordRetype"  placeholder="STRONG PASSWORD AGAIN" required/>
                    </p>
     
                    <p class="connectLabel">
                        <label for="pincode">Type a PIN code</label>
                        <br>
                        <input class="connectInput" type="tel" name="pincode" min="123456" placeholder="Ex : 93568742" required/>
                    </p>
     
                    <p class="connectLabel">
                        <label for="pincodeRetype">Retype PIN code</label>
                        <br>
                        <input class="connectInput" type="tel" name="pincodeRetype" min="123456" placeholder="Keep PIN code safe" maxlength="10"/ required>
                    </p>
                    <p>
                        <button class="connectSubmit" type="submit" name="registration"/>Submit</button>
                    </p>
     
                    <p class="connectInfo">
                        Already registered ? 
                        <br>
                        <br>
                        <a href="login.php"><input class="connectRegisterButton" type="button" value="Log In"/></a>
                        <br>
                    </p>
                    </form>
            </div>
     
     
        </body>
     
        <footer>
            <?php include("../footer.php"); ?>
        </footer>
    </html>

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Attention, il s'agit sûrement d'une erreur de copier/coller mais votre code commence par une "ligne vide" ce qui peut entraîner des erreurs par la suite lors de l'utilisation de la fonction header() (header('location: ../?success=1');)

    Vous avez écrit : $password = $_POST['$password']; au lieu de $password = $_POST['password'];Suivant la définition de votre table users il est possible que le simple fait d'avoir mal écrit le champ password peut provoquer une erreur fatale (champ "vide" mais non NULL)

    Il y a plusieurs optimisations possibles dans ce code, notamment dans la gestion des erreurs mais la plus grosse erreur pour moi ici, est l'utilisation de la fonction sha1()
    Pour la génération des mots de passe cryptés j'irais plutôt voir du côté de password_hash()

    Pour ce qui est de l'affichage des erreurs, il est souvent normal qu'il soit désactivé par défaut car il s'agit d'un trou de sécurité.
    Vous pouvez alors manuellement les afficher en mettant ce code en haut de votre/vos fichier(s)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL);

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Un grand merci pour cette réponse rapide

    En effet la ligne vide est due à une erreur de copier-coller, merci pour l'info car je ne le savais pas.
    Damn f*** ! C'était bien ce $ devant password qui foirait la requête, je m'en veut tellement de l'avoir zappé autant de foi, merci pour tes yeux de lynx !

    Je vais me renseigner pour le hashage en effet, je préfères partir sur des bonnes bases de sécurité, merci encore !

    J'ai cependant une autre erreur, je compte regarder par moi-même pour la résoudre d'abord mais ma question est : si je ne trouve pas l'erreur, puis-je refaire un message dans ce topic ou en refaire un nouveau ?

    Merci beaucoup

    [EDIT] Sujet résolu, un grand merci !

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonne nouvelle

    C'est mieux de faire un topic par erreur ;-)
    C'est plus facile de discuter et c'est surtout plus facile d'avoir des sujets précis pour chaque erreur

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

Discussions similaires

  1. Enregistrement formulaire dans une BDD phpMyAdmin
    Par joker93200 dans le forum Langage
    Réponses: 4
    Dernier message: 12/04/2017, 20h53
  2. Ma fonction insert n'ajoute rien dans la BDD ?
    Par Raiden1234 dans le forum Hibernate
    Réponses: 1
    Dernier message: 24/06/2009, 11h12
  3. Python/MySQL - n'enregistre pas dans la bdd
    Par SuperJohn dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 19/05/2009, 15h20
  4. [MySQL] Requête se déroule mais n'enregistre rien dans la base
    Par kikoyo dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 05/04/2009, 10h48
  5. Enregistrement bizard dans ma BDD
    Par Luisito31 dans le forum Access
    Réponses: 14
    Dernier message: 12/06/2008, 10h00

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