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 :

Connexion avec la Base de Données avec PDO


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 60
    Points : 30
    Points
    30
    Par défaut Connexion avec la Base de Données avec PDO
    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
    <?php
    session_start();
    $_SESSION["login"]=$_POST["login"];
    $_SESSION["password"]=$_POST["pass"];
     
    try {$bdd = new PDO('mysql:host=localhost;dbname=Projet4', 'root', '');}
    catch (Exception $e) {die("L'accès à la base de donnée est impossible.");}
     
    if (empty($_SESSION["login"]) or empty($_SESSION['pass'])) {
        echo "veuillez saisir un login et un mot de passe";
    }
    else {
        $st = $bdd->query("SELECT COUNT(*) FROM administrateur WHERE login='".$_SESSION["login"]."' AND password='".$_SESSION["pass"]."'")->fetch();
        if ($st['COUNT(*)'] == 1)
            header("Location: ModifSite.php");
    }
    ?>
    Quand j'entre le mot de passe et le login il n'est pas reconnu

    en mysql sa donné sa :
    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
    <?php
    session_start();
    $_SESSION["login"]=$_POST["login"];
    $_SESSION["pass"]=$_POST["pass"];
    $db = mysql_connect("localhost","root","") or die ("Erreur de connexion :".mysql_error());
    $maBase =mysql_select_db("Projet4") or die ("Erreur de base : ".mysql_error());
    if ($maBase) {
    $query="SELECT * FROM administrateur WHERE login='".$_SESSION["login"]."';";
    $result=mysql_query($query);
    $ligne = mysql_fetch_array($result, MYSQL_ASSOC);
    // je controle si les champs sont vides.
    if (($_SESSION["login"] == "") or ($_SESSION['pass'] == ""))
    echo"veuillez saisir un login et un mot de passe";
    //je réaffiche le formulaire.
    else {
    //je contrôle si le mot de passe correspond avec celui présent dans la base
    if (($_SESSION["pass"]== "".$ligne['password'].""))
    {
    echo"Bienvenue";
    header("Location:ModifSite.php");
    }
     
    else {
    echo"Erreur d'authentification";
    //je réaffiche le formulaire de saisie
    }
    }
    }
    ?>

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Points : 87
    Points
    87
    Par défaut
    Bonjour Chipmunkette,

    Pour commencer ^^ un conseil, créer un nouveau fichier que tu nommera ( par exemple ) connexion1.inc.php ( le inc.php permet une meilleur lisibilité du fichier, et c'est un petit mémento qui rappel que c'est une connexion à une base de donnée qui se trouve à l'intérieur ).

    tu y insérera juste ton code php ( fonctionnalité pdo ) pour ta connexion à ta base de donnée qui devrait ressemblé à ça :

    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
     
    <?php
    try
    {
    	$dns = 'mysql:host=localhost;dbname=LeNomDeTaBDD';
      $utilisateur = 'UtilisateurDeTaBDD';
      $motDePasse = 'MotDePasseDeUtilisateurDeTaBDDActuel';
      $bdd = new PDO( $dns, $utilisateur, $motDePasse, array (PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8',PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
    /* set name utf8 seulement si tes bases de données sont configurés en interclassement utf8 */
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    ?>

    Ensuite dans ton fichier tu fera appel à ta connexion grâce à : Require_once ( tu ne peux faire apel qu'une seule fois à cette connexion dans un même fichier, sinon utilise require tout simple )

    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
     
    <?php
    session_start();
    $_SESSION["login"]=$_POST["login"];
    $_SESSION["password"]=$_POST["pass"];
     
    require_once('connexion1.inc.php');
     
    if (empty($_SESSION["login"]) or empty($_SESSION['pass'])) {
        echo "veuillez saisir un login et un mot de passe";
    }
    else {
        $st = $bdd->query("SELECT COUNT(*) FROM administrateur WHERE login='".$_SESSION["login"]."' AND password='".$_SESSION["pass"]."'")->fetch();
        if ($st['COUNT(*)'] == 1)
            header("Location: ModifSite.php");
    }
    ?>

    Voilà si tu as encore des soucis à ce propos n'hésite pas à poser tes questions ^^.
    Cordialement.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION["login"]=$_POST["login"];
    $_SESSION["password"]=$_POST["pass"];
    C'est sympa, on tape n'importe quoi comme login/pass et ca valide une session.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par reverb94 Voir le message
    Bonjour Chipmunkette,
    Pour commencer ^^ un conseil, créer un nouveau fichier que tu nommera ( par exemple ) connexion1.inc.php ...
    Bonjour,
    C'est un bon conseil, mais alors il faut le blinder.. en effet tout commence par une faille (par exemple un txt ou une fausse image qui se renomme en php
    et va voler les codes d’accès. le php n'ayant plus rien que le login !
    Alors c'est simple avant ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('connexion1.inc.php');
    tu crées une variable et il suffit de bloquer ton connexion1.inc.php comme ceci.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    if (!isset($securite))
     {
     echo '<meta http-equiv="refresh" content="0;URL=http://www.TONSITE/index.php">';
     exit;
     }
    try
    {
    //==etc...
    }
    ?>
    Puis,
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    session_start();
    $securite=99; 
    require_once('connexion1.inc.php');
    ?>

  5. #5
    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
    en effet tout commence par une faille (par exemple un txt ou une fausse image qui se renomme en php
    et va voler les codes d’accès. le php n'ayant plus rien que le login !
    Je ne comprends pas bien de quoi tu veux protéger.
    Si une personne malveillante avait accès aux fichier sur le serveur, il pourrait voir le tiens également.
    Si l'interpreteur PHP buggait et donnait le code, il le ferrait dans ton cas également.
    Pour se prémunir de ce dernier cas, il suffit de placer le fichier de connexion en dehors du serveur web ou dans un repertoire non distribué.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pour se prémunir de ce dernier cas, il suffit de placer le fichier de connexion en dehors du serveur web ou dans un répertoire non distribué.
    Bonsoir,
    Oui Vincent, OK avec toi, mais beaucoup n'ont pas accès a la racine avec leur FTP, voila pourquoi au minimum je fais cela, il faut admettre que le fichier ne peut alors être appelé directement, il s'agit malgré tout d'un "plus" a mon sens.

    Bonne fin de Dimanche

  7. #7
    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
    mais beaucoup n'ont pas accès a la racine avec leur FTP
    Sur un hébergement mutualisé évidemment on ne peut pas écrire en dehors de l'arborescence web, un simple dossier avec .htaccess restrictif suffit alors.
    Mais bon comme je le disais, on ne parle ici que d'un dysfonctionnement de l'interpreteur PHP, donc on ne peut pas s'en premunir avec du code PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [MySQL] Connexion simultanée à 2 bases de données avec PDO dans un même script
    Par gentil2005 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/05/2015, 00h12
  2. Connexion a la base de données avec Crystal report
    Par planeurbret dans le forum VB.NET
    Réponses: 7
    Dernier message: 01/08/2013, 14h33
  3. connexion a une base de données avec UIB
    Par tarmo57 dans le forum Débuter
    Réponses: 1
    Dernier message: 23/01/2013, 14h17
  4. connexion de la base de données avec vb.net non réussie
    Par wikiele dans le forum Développement
    Réponses: 7
    Dernier message: 25/07/2011, 14h19
  5. [MySQL] connexion a la base de donnée avec formulaire
    Par antitrax dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/06/2010, 15h30

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