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 :

Problème authentification PHP/MYSQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mars 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 31
    Points : 23
    Points
    23
    Par défaut Problème authentification PHP/MYSQL
    Bonjour j'essaie de créer une simple authentification par login et mot de passe ainsi qu'un ajout d'utilisateur et tout lié avec une base de données sou MYSQL. Cependant au moment ou j'essaie d'ajouter un utilisateur lorsque je vais verifier dans ma table s'il est bien ajouté elle reste vidé voici mon code. Voyez quelque chose d'anormal ou que j'ai oublié?

    fichier authentification.php
    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
     
    <?
    include("conf.site");
    include("fonctions.php");
     
    $bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_nmDB, $BDD_user, $BDD_pass);
     
    if(isset($_REQUEST['login']) && isset($_REQUEST['password']))
    {
    $requete="INSERT INTO `monsite`.`users` (`id`, `login`, `password`) VALUES (NULL, '".
    $_REQUEST['login']."', '".md5($_REQUEST['password'])."');";  
     
    sql($requete); 
     
    echo "Compte ajouté a la base"; 
     
    }
     else 
    {
     
    header("location : add_user.html"); // Avec simplement ma présentation en html faisant appel ce fichier php
     
    }
    ?>
    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    t'as pas mis de gestion des erreurs
    http://php.net/manual/fr/pdo.error-handling.php

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam;
    aussi faut pensé au try catch .
    exemple :
    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
     
    <?php
    // On se connecte à la bdd
    try
    {
    			$PARAM_hote='localhost'; // le chemin vers le serveur
    			$PARAM_nom_bd='grip'; // le nom de votre base de données
    			$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
    			$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
    			// connexion marche trés bien avec affichage de msg erreure
     
    		// Options de connection
    			$options = array
    						(
    							PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8" ,  // indiquer à MySQL que echanger nos données en UTF8.
    							PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION , 
    							PDO::ATTR_PERSISTENT => true
    						);
     
     
            $cbd = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe , $options  );
    }
     
    catch(PDOException $e)
    {
            echo 'Une erreur de connexion est survenue !'; $e->getMessage();
            die();
    }
    $cnx = null; // Fermeture de la connexion
    ?>
    ensuite l'insertion avec des requêtes préparées c'est très efficace pour la sécurité.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par redoran Voir le message
    Salam;
    aussi faut pensé au try catch .
    exemple :
    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
     
    <?php
    // On se connecte à la bdd
    try
    {
    			$PARAM_hote='localhost'; // le chemin vers le serveur
    			$PARAM_nom_bd='grip'; // le nom de votre base de données
    			$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
    			$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
    			// connexion marche trés bien avec affichage de msg erreure
     
    		// Options de connection
    			$options = array
    						(
    							PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8" ,  // indiquer à MySQL que echanger nos données en UTF8.
    							PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION , 
    							PDO::ATTR_PERSISTENT => true
    						);
     
     
            $cbd = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe , $options  );
    }
     
    catch(PDOException $e)
    {
            echo 'Une erreur de connexion est survenue !'; $e->getMessage();
            die();
    }
    $cnx = null; // Fermeture de la connexion
    ?>
    ensuite l'insertion avec des requêtes préparées c'est très efficace pour la sécurité.
    pourquoi SET NAMES utf8 ? y'a charset dans le dsn
    pour mettre en PDO::ATTR_PERSISTENT ?
    c'est pas die mais exit, si c'est pour arrêter le code autant laisser l'exception

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re;
    pourquoi SET NAMES utf8 ?
    pour échangé les données en utf8 dans mon cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    pour mettre en PDO::ATTR_PERSISTENT ?
    c'est pas die mais exit, si c'est pour arrêter le code autant laisser l'exception
    là j'ai pas fait attention plus tôt dire j'avais aucune idée. merci pour la correction.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par redoran Voir le message
    Re; pour échangé les données en utf8 dans mon cas.
    fait juste : mysql:host:localhost;dbname:truc;charset:utf8 (mais dispo a partir de 5.3.6), a savoir que fait un SET NAMES c'est différent, le résultat est le même c'est le comportement de échappement des donnée risque de ne pas être pareil

  7. #7
    Membre à l'essai
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mars 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 31
    Points : 23
    Points
    23
    Par défaut
    Je suis un peu perdu (débutant de chez débutant) il me semblait que cela suffisait de mettre dans mon fichier site.conf:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    $BDD_hote="localhost";
    $BDD_nmDB="monsite";
    $BDD_user="***";
    $BDD_pass="***";
    ?>
    et dans fonctions.php

    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
    <?
     
    function sql($request)
    {
    global $bdd;
    if(strrchr($request, 'SELECT'))
    {
    $req = $bdd->query($request);
    }
    else
    {
    $bdd->exec($request);
    }
    if(!empty($req))
    {
    while ($data = $req->fetch())
    {
    $res[] = $data;
    }
    return $res;
    }
    else
    {
    return false;
    }
    }
    ?>
    et inclure tout sa dans mon fichier d'inscription
    Suis-je vraiment à l'ouest?

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est <?php et pas <?

    ton while sert a rien fait direct un fetchAll

  9. #9
    Membre à l'essai
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mars 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 31
    Points : 23
    Points
    23
    Par défaut
    J'ai limite honte pour ma balise... fin bref merci pour le while c'est vrai que ça fait lourd. En tout cas vous m'avez tous bien aider merci beaucoup!!!

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

Discussions similaires

  1. Problème Flash /PHP/ MySQL
    Par admnico dans le forum Dynamique
    Réponses: 1
    Dernier message: 14/02/2008, 13h23
  2. [MySQL] problème date php/mysql : 0000-00-00 00:00:00
    Par ths_otraa dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/02/2008, 12h09
  3. [MySQL] Problème avec php/mysql, variables du même nom
    Par Naxosy dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2008, 15h31
  4. [MySQL] Problème Accent PHP + MySQL
    Par ganjaaw dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/08/2007, 22h10
  5. [MySQL] problème authentification php
    Par rimama dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/07/2007, 17h33

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