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 :

Connexion compte, base de donnée


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut Connexion compte, base de donnée
    Bonjour,

    J'ai connecté mon formulaire d'inscription à la base de données comme suit :

    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
    link rel="stylesheet" type="text/css" href=".../style/style.css" />
    <meta charset="utf-8" />
     
    <?php
    include "BDD/identifiant.php";
    if(isset($_POST['submit']))
    {
    //Connexion au serveur
    $connexion=mysqli_connect($SERVER,$USER,$PASSWORD);
     
    /*Vérification de la connexion
    if(mysqli_connect_errno())
    {
    printf("Echec de la connexion", mysqli_connect_error());
    exit();
     
    }else echo '<center><p>Inscription réussi.</center></p>';*/
     
    //Les différents input.
    $pseudo = utf8_decode($_POST['pseudo']);
    $mdp = utf8_decode($_POST['mdp']);
    $rmdp = utf8_decode($_POST['rmdp']);
    $email = utf8_decode($_POST['email']);
    $nom = utf8_decode($_POST['nom']);
    $prenom = utf8_decode($_POST['prenom']);
    $annee = ($_POST['annee']);
    $sexe = utf8_decode($_POST['sexe']);
    $adresse = utf8_decode($_POST['adresse']);
    $cp = utf8_decode($_POST['cp']);
    $ville = utf8_decode($_POST['ville']);
    $telephone = utf8_decode($_POST['telephone']);
    $categorie = utf8_decode($_POST['categorie']);
    $club = utf8_decode($_POST['club']);
    $licence = utf8_decode($_POST['licence']);
    $compte = utf8_decode($_POST['compte']);
     
     
    if ($mdp == $rmdp)
    {
    //Rentrer les valeurs dans la base.
    $sql = "INSERT INTO `bdd`.`inscription` (`id`, `pseudo`, `mdp`, `email`, `nom`, `prenom`, `annee`, `sexe`, `adresse`, `cp`, `ville`, `telephone`, `categorie`, `club`, `licence`, `compte`) VALUES ('', ?, PASSWORD(?) ,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    $stmt = mysqli_prepare($connexion, $sql);
     
    //Paramètres : chaines de caractères dans l'ordre
    mysqli_stmt_bind_param($stmt, 'sssssssssssssss', $pseudo , $mdp, $email, $nom, $prenom, $annee, $sexe, $adresse, $cp, $ville, $telephone, $categorie, $club, $licence, $compte);	//Permet de renseigner les paramètres repéré par les "?" dans l'ordre.
     
    //Exécution
    mysqli_stmt_execute($stmt);	//Execute la requête.
    echo "<center><p>Inscription réussi.</center></p>";
    }else echo '<center><a class="a">Les mots de passes ne sont pas identiques.</center></a>';
    }
    ?>
    Déjà je ne sais pas si c'est une bonne méthode et de deux, j'aimerais maintenant me connecter à un espace membre en utilisant seulement le pseudo et le mot de passe, je ne sais pas par ou commencer une idée ?

    Merci.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Pour l'espace membre je pense qu'il serait intéressant d'utiliser les sessions et pour le contenu que vous souhaitez donner au membre vous vérifiez les session et vous autorisez l'accès selon ce paramètre, Bonne journée.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avant tout chose tu dois régler ton problème d'encodage.
    Avoir des utf8_decode() ce n'est déjà pas normal mais encore moins dans une page UTF8.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Pour le décodage en utf8 j'ai essayé beaucoup de chose mais rien n'y fait, si je n'utilise pas cette méthode (de mettre des "utf8_decode" partout j'ai des problèmes d'accents dans ma base de données).

    Pour la connexion j'ai fais ceci :

    Code php : 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
    <?php
    if(isset($_POST['submit2']))
    {
    	//Connexion au serveur
    	$connexion=mysqli_connect($SERVER,$USER,$PASSWORD);
     
    	//Vérification de la connexion
    	if(mysqli_connect_errno())
    	{
    		printf("Echec de la connexion", mysqli_connect_error());
    		exit();
    	}
     
    	//Les différents input.
     	$pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
     
    	// Vérification des identifiants
    	$req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo = :pseudo AND mdp = :mdp';
     
    	$resultat = $req->fetch();
     
    	if (!$resultat)
    	{
    	    echo 'Mauvais identifiant ou mot de passe !';
    	}
    	else
    	{
    	    session_start();
    	    $_SESSION['id'] = $resultat['id'];
    	    $_SESSION['pseudo'] = $pseudo;
    	    echo 'Vous êtes connecté !';
    	}
    }
    ?>

    Mais j'ai cette erreur :

    Call to a member function fetch() on a non-object in C:\Program Files (x86)\wamp\www\Site\bdd\connecter.php on line 21

  5. #5
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 747
    Points
    747
    Par défaut
    Bonjour,

    ta variable $req est une chaine de caractères. Peut-être faut il exécuter la requete avant de vouloir récupérer les résultats ($connexion->query(...))

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Merci valaendra lais je n'ai pas compris ce que tu veux dire.

  7. #7
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 747
    Points
    747
    Par défaut
    Alors, de mémoire avec mysqli et une requête préparée :

    Code php : 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
    <?php
    	// Vérification des identifiants
    	$req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo=? AND mdp=?';
     
            // Exécution de la requête
            $prepa = mysqli_prepare($connexion, $req);
     
            mysqli_stmt_bind_param($prepa , 'ss', $pseudo, $mdp);
     
            $pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
     
            $prepa->execute();
     
            mysqli_stmt_bind_result($prepa, $pseudo, $mdp);
     
            $resultat = mysqli_stmt_fetch($prepa);
     
    	if (!$resultat)
    	{
    	    ...
    ?>

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Merci beaucoup ça fonctionne déjà mieux ! J'arrive à me connecter mais j'ai cette erreur qui apparait à chaque fois :

    "Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\Program Files (x86)\wamp\www\Site\bdd\connecter.php on line 27"

    Voilà mon code final :

    Code php : 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
    <?php
    if(isset($_POST['submit2']))
    {
    	//Connexion au serveur
    	$connexion=mysqli_connect($SERVER,$USER,$PASSWORD);
     
    	//Vérification de la connexion
    	if(mysqli_connect_errno())
    	{
    		printf("Echec de la connexion", mysqli_connect_error());
    		exit();
    	}
     
    	// Vérification des identifiants
    	$req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo=? AND mdp=?';
     
        // Exécution de la requête
        $prepa = mysqli_prepare($connexion, $req);
     
        mysqli_stmt_bind_param($prepa ,'ss', $pseudo, $mdp);
     
        $pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
     
        $prepa->execute();
     
        mysqli_stmt_bind_result($prepa, $pseudo, $mdp);
     
        $resultat = mysqli_stmt_fetch($prepa);
     
    	if (!$resultat)
    	{
    	    echo 'Mauvais identifiant ou mot de passe !';
    	}
    	else
    	{
    	    session_start();
    	    $_SESSION['pseudo'] = $pseudo;
    	    echo 'Vous êtes connecté !';
    	}
    }
    ?>

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    J'ai enlevé la ligne 27 :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_stmt_bind_result($prepa, $pseudo, $mdp);

    Là ça fonctionne sans erreurs mais la ligne signifie quoi ?

    Merci en tous cas !

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

Discussions similaires

  1. [JDBC][MySQL] Connexion à la base de données
    Par El Saigneur dans le forum JDBC
    Réponses: 8
    Dernier message: 04/08/2005, 13h52
  2. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  3. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  4. Echec lors de la connexion à la base de données.
    Par mclown dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 26/10/2004, 23h36
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

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