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 :

Authentification PHP et PostgreSQL


Sujet :

PHP & Base de données

  1. #21
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 593
    Points
    12 593
    Par défaut
    Citation Envoyé par ClapTrap Voir le message
    Expression régulière ?
    Plus simple que ça..

    Oki, fait moi la requête sql qui correspond à ce que tu viens de dire

  2. #22
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Plus simple que ça..

    Oki, fait moi la requête sql qui correspond à ce que tu viens de dire
    Et bien je pense qu'il suffirait de comparer les identifiant rentré avec les identifiant admin et si ça correspond, pof on redirige vers la page d'administration
    Je peux pas faire tout ça en sql quand même ?

    Je ferais d'abord une requête pour sélectionner l'id de l'admin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM vv_utilisateur WHERE id='postgres'
    (postgres étant mon admin)

    La requête dans une variable $admin disons.

    Aprés je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['id'] = $admin;
    $_SESSION['membre'] = TRUE;
    header("location:admin.php");
    Resterai plus qu'à l'insérer dans mon script de vérification. Je ferais ceci :
    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
    <?php
     
    session_start();
    require 'connect.php';
    $id = $_POST['id'];
    $mdp = $_POST['password'];
    //$sql= "SELECT * FROM vv_utilisateur  WHERE id='$id' AND mdp='$mdp'";
     
    try {
    $admin = "SELECT id FROM vv_utilisateur WHERE id='postgres'";
    $sql = "SELECT count(*) as compteur FROM vv_utilisateur  WHERE id=? AND password=?";
    $r = $dbh->prepare($sql);
    $r->execute(array($id, $mdp));
    $d = $r->fetch();
     
    if ($d['compteur'] > 0) {
    $_SESSION['id'] = $admin;
    $_SESSION['membre'] = TRUE;
    header("location:admin.php");
    die();
    } else {
    if($d['compteur'] > 0){
    $_SESSION['id'] = $id;
    $_SESSION['membre'] = TRUE;
    header("location:visite.php");
    die();
     
    } else {
    $_SESSION['membre'] = FALSE;
    header("location:index.php");
    die();
    } catch (PDOException $ex) {
    die('echec : ' . $ex->getMessage());
    }
    Mais je suis pas sur du tout.

  3. #23
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 593
    Points
    12 593
    Par défaut
    Heu....si id='postgres' est une réponse correcte de ta db , alors on a un souci....car tu démarres mal ton projet.

    Ton id devrais être un nombre autoincrémenté (en PostgreSQL il doit être de type sérial).
    Ensuite tu devrais avoir un champs dans ta db qui soit par exemple 'statut' où tu pourrais mettre amdministrateur ou user ou lecteur ou......

    Réfléchi bien à ce que tu veux faire.

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Heu....si id='postgres' est une réponse correcte de ta db , alors on a un souci....car tu démarres mal ton projet.

    Ton id devrais être un nombre autoincrémenté (en PostgreSQL il doit être de type sérial).
    Ensuite tu devrais avoir un champs dans ta db qui soit par exemple 'statut' où tu pourrais mettre amdministrateur ou user ou lecteur ou......

    Réfléchi bien à ce que tu veux faire.
    Quel erreur j'ai fait.. Je m'excuse de vous avoir fais planchez sur mon problème alors que ma table n'était même pas bonne. Méaculpa.

    Avant de reprendre mon développement, j'ai recréer ma base avec un id autoincrémenter cette fois et j'ai rejouter une collone pseudo et statut :

    Nom : Sans titre1.png
Affichages : 139
Taille : 27,9 Ko

    Pourrais tu me dire si ma base est correct de cette manière ?

    Si oui, j'ai modifier mon verifuti.php du coup :

    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
     
    <?php
     
    session_start();
    require 'connect.php';
    $pseudo = $_POST['pseudo'];
    $mdp = $_POST['password'];
    //$sql= "SELECT * FROM vv_utilisateur  WHERE id='$id' AND mdp='$mdp'";
     
    try {
     
        $sql = "SELECT count(*) as compteur FROM vv_utilisateur  WHERE pseudo=? AND password=?";
        $r = $dbh->prepare($sql);
        $r->execute(array($pseudo, $mdp));
        $d = $r->fetch();
     
        if ($d['compteur'] > 0) {
            $_SESSION['pseudo'] = $pseudo;
            $_SESSION['membre'] = TRUE;
            header("location:admin.php");
            die();
        } else {
            $_SESSION['membre'] = FALSE;
            header("location:index.php");
            die();
        }
    } catch (PDOException $ex) {
        die('echec : ' . $ex->getMessage());
    Et il marche de cette manière là.

  5. #25
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 593
    Points
    12 593
    Par défaut
    Alors en tenant compte, qua tu auras fait toutes les vérification possible pour qu'il ne soit pas possible d'avoir deux fois le même pseudo(par une contrainte unique en db par exemple).

    Tu peux facilement faire ceci en modifiant le sql

    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
     
     $sql = "SELECT count(*) as compteur,statut FROM vv_utilisateur  WHERE pseudo=? AND password=?";
        $r = $dbh->prepare($sql);
        $r->execute(array($pseudo, $mdp));
        $d = $r->fetch();
     
        if ($d['compteur'] > 0) {
            $_SESSION['pseudo'] = $pseudo;
            $_SESSION['membre'] = TRUE;
     
            if($d['statut']==='administrateur'){
                  //je dirige quelque part
            }else{
                 //je dirige ailleurs
            }
     
        } else {
            $_SESSION['membre'] = FALSE;
            header("location:index.php");
            die();
        }

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Alors en tenant compte, qua tu auras fait toutes les vérification possible pour qu'il ne soit pas possible d'avoir deux fois le même pseudo(par une contrainte unique en db par exemple).

    Tu peux facilement faire ceci en modifiant le sql

    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
     
     $sql = "SELECT count(*) as compteur,statut FROM vv_utilisateur  WHERE pseudo=? AND password=?";
        $r = $dbh->prepare($sql);
        $r->execute(array($pseudo, $mdp));
        $d = $r->fetch();
     
        if ($d['compteur'] > 0) {
            $_SESSION['pseudo'] = $pseudo;
            $_SESSION['membre'] = TRUE;
     
            if($d['statut']==='administrateur'){
                  //je dirige quelque part
            }else{
                 //je dirige ailleurs
            }
     
        } else {
            $_SESSION['membre'] = FALSE;
            header("location:index.php");
            die();
        }
    Non je n'ai pas attribuer de contraintes unique à Pseudo lors de la création.. Utilisant phppgAdmin puis je le modifier directement ou dois je passer par une requête sql ?

  7. #27
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 593
    Points
    12 593
    Par défaut
    J'imagine que oui

  8. #28
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    J'imagine que oui
    D'après ce que j'ai trouvé sur le net il faut le faire via une reqête sql.

    Selon la doc Postgre la syntaxe pour ajouter une contrainte d'unicité est la suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE produits ADD CONSTRAINT autre_nom UNIQUE (no_produit);
    Le soucis c'est que je ne vois pas à quoi correspond "autre_nom".. Ma requête donne ça pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE vv_utilisateur ADD CONSTRAINT autre_nom UNIQUE (pseudo);
    Je ne vois pas ce que je dois mettre. Si je ne met rien, le sql me renvois une erreur.

  9. #29
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 593
    Points
    12 593
    Par défaut
    C'est le nom de ta contrainte pour que le moteur sache de quoi on parle, tu peux la nommer unique_contrainte_pseudo

  10. #30
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    C'est le nom de ta contrainte pour que le moteur sache de quoi on parle, tu peux la nommer unique_contrainte_pseudo
    J'ai donc exécuté la requête dans la base mais cela ne fonctionne pas et renvois l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS total FROM (ALTER TABLE vv_utilisateur ADD CONSTRAINT unique_contrainte_pseudo UNIQUE (pseudo)) AS sub
    Donc là je suis un peu bloqué.

    Serais ce plus simple de recréer la table et de mettre la contraintes dès la création ?

    Bon appétit !

  11. #31
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 593
    Points
    12 593
    Par défaut
    Heu ici, je pense que le mieux pour toi serait de prendre un peu de temps pour lire les tutos suivants http://sql.developpez.com/#commencer-sql

    Parce que là, on va perdre du temps ensemble, et il sera plus facile d'expliquer quand on comprend de quoi on parle.

  12. #32
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    Bien je m’attelle a ça, en tout cas merci pour ton aide depuis quelque jours

Discussions similaires

  1. [PostgreSQL] [PostgreSQL] Problème de syntaxe (NULL) avec PHP et Postgresql
    Par el_butcho dans le forum PHP & Base de données
    Réponses: 40
    Dernier message: 16/07/2006, 19h28
  2. [Sécurité] Pb authentification PHP
    Par bodybody22000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2006, 10h28
  3. Script page administration et authentification Php
    Par mastercartman dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 11/03/2006, 18h34
  4. [XML] [cURL] Authentification Php récupération de données
    Par thibaut06 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/02/2006, 15h23
  5. [PHP et PostgreSQL] erreur de pg_exec mais requete valide
    Par guipom dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 25/03/2005, 20h03

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