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 :

fatal error PDO


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut fatal error PDO
    Bonjour^^

    Alors voilà, je compte réécrire ma page de connexion en PDO, sauf que je bug (je ne connais guère ce système mais j'en ai marre d'être déprécié), j'ai vu de la Doc mais ça ne m'a pas trop avancé, car bon, j'ai une erreur assez "fatal" si l'on peut dire.
    je précise qu'elle n'est pas complète, je me suis arrêté la c ar si je cintinue, je ne sais pas ce que ça donnerais puisque ça bug déjà la :-/

    d'autant que la je sais que j'ai une faille de sécurité en plus de ne pas avoir hasher le mdp :-/
    mais je bloque complètement sur cette alternative à mysql ><

    voici donc le code:

    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
    require 'config.php';
    try {
        $conec = 'mysql:host='.$serveur ;'dbname='.$dbother;
        $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
        $pdo = new PDO($conec, $serveurlogin, $serveurpass);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e) {
        $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
        die($msg);
    }
    $compte = $_POST['username'];
    $mdp = $_POST['password'];
    $sql = "SELECT * FROM accounts WHERE account = $compte;";
    $sq2 = "SELECT * FROM accounts WHERE pass = $mdp;";
    $qid = $pdo->query($sql);
    $qid2= $pdo->query($sql2);
     
    if ($sql2 == $mdp);
    {
        $_SESSION['account'] = $compte;
        header('Location: index.php');
    }
    la fatal érror se situe à la ligne 19, donc ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $qid = $pdo->query($sql);
    Merci d'avance de votre aide^^
    Cordialement
    Vazer7070

  2. #2
    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
    Ca serait bien de nous donner l'erreur

    Ton point virgule est mal placé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $conec = 'mysql:host='.$serveur.';dbname='.$dbother;
    Concernant la suite, j'espère que dans ton ancien code tu n'avais pas deux requêtes comme ça ; ça n'a pas de sens, on cherche le mot de passe qui va avec le login :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql = "SELECT compte FROM accounts WHERE account = ? AND pass = ?";
    $sth = $pdo->prepare($sql);
    $sth->execute(array($_POST['username'], $_POST['password']));
    if ($sth->fetch()) {
        $_SESSION['account'] = $row['compte'];
        header('Location: index.php');
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    Si tu nous donnais le détail de l'erreur fatale en question ca nous avancerait peut être un peu plus.

    Ensuite, vu ton cas :
    - $mdp ne vaudra jamais $sql2
    - il faut utiliser une requête préparée
    - il n'y a pas besoin de 2 requêtes pour ce que tu cherche à faire
    - http://php.net/manual/fr/function.password-verify.php si tu en as marre d'être déprécié

    Et accessoirement, y a des classes assez bien foutues genre ezsql https://github.com/ezSQL/ezSQL qui permettent d'éviter de (mal) réinventer la roue. Pour la petite histoire, ezsql a servi de base à la classe utilisée par Wordpress.

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    merci de votre réponse rapide^^
    après oui je sais que je réinvente la roue et de façon carré la même :-/ je vais regarder ce que vous me passer et merci sabotage pour ton code^^

    ben j'avais une requête pour le compte et une requête pour le mot de passe en faite :-/

    pour l'erreur,c'est juste une "fatal error" ni plus ni moins, le nœud à la base est la justement :-/

    Fatal error: in C:\wamp\www\monsite\login.php on line 19

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    j'ai mis au mieux, en modifiant pour adapter au code, mais maintenant ça m'affiche une page blanche, :-/

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Peut-on voir ce code qui affiche une page blanche?

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    il y a peu de modif je l'avoue, mais quelques une notamment la redirection vers une autre page en cas de non correspondance.

    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
    require 'config.php';
    try {
        $conec = 'mysql:host='.$serveur.';dbname='.$dbother;
        $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
        $pdo = new PDO($conec, $serveurlogin, $serveurpass);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e) {
        $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
        die($msg);
    }
    $sql = "SELECT account FROM accounts WHERE account = ? AND pass = ?";
    $sth = $pdo->prepare($sql);
    $sth->execute(array($_POST['username'], $_POST['password']));
    if ($sth->fetch()) {
        $_SESSION['account'] = $row['account'];
        header('Location: index.php');
     
    }
    else
    {
        header('location: mdp.php');
     
    }

  8. #8
    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
    Tu n'es pas redirigé vers une des deux pages ? Quel est l'url de la page blanche ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    j'ai réussi à me dirirger vers la page "index.php" enfin, mais elle reste neutre, elle ne prend pas le fait que je sois co ><

  10. #10
    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
    Montre nous le code de ta page index qui verifie la connexion.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    voici^^

    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
     <div class="realmlist">
    			   <?php if (empty($_SESSION['account']))
    			   { ?><?php if (empty($_SESSION['account']))
    			   { ?>
    				  <?php if (empty($_SESSION['account']))
    			   { ?>
    				  <input  readonly="readonly" value="Bienvenue Visiteur" />			   </div>
    				  <?php }
    				  else
    				  {
    				  ?>
    				  <input  readonly="readonly" value="Bienvenue <?php echo $_SESSION['account'] ;?>" />			   </div>
    				  <?php }?>
    				  <?php }
    				  else
    				  {
    				  ?>
    				  <input  readonly="readonly" value="Bienvenue <?php echo $_SESSION['account'] ;?>" />			   </div>
    				  <?php }?>
    				  <?php }
    				  else
    				  {
    				  ?>
    				  <input  readonly="readonly" value="Bienvenue <?php echo $_SESSION['account'] ;?>" />			   </div>
    				  <?php }?>
    			<div class="clear"></div>
    		 </div>
    	  </div>
       </div>

  12. #12
    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
    Il se passe quoi la ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       <?php if (empty($_SESSION['account']))
    			   { ?><?php if (empty($_SESSION['account']))
    			   { ?>
    				  <?php if (empty($_SESSION['account']))
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    ah oui Oo
    attend c'est mal copié, je vais te filer ce qui aurais dut se mettre

  14. #14
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    voilà, la version correctement coipiée et sql du code de vérification de connexion sur la page index.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
    <?php session_start();      include_once("config.php");
     
    <?php if (empty($_SESSION['account']))
    			   { ?>
    				  <input  readonly="readonly" value="Bienvenue Visiteur" />			   </div>
    				  <?php }
    				  else
    				  {
    				  ?>
    				  <input  readonly="readonly" value="Bienvenue <?php echo $_SESSION['account'] ;?>" />			   </div>
    				  <?php }?>
     
    $db = mysql_connect($serveur, $serveurlogin, $serveurpass);
    mysql_select_db($dbother,$db); 		 
    $result = mysql_query("SELECT logged FROM accounts WHERE logged = '1'"); 
    $account = mysql_query("SELECT guid FROM accounts ORDER BY guid");
     
    $NbCharLogged = mysql_num_rows($result);
    $Account = mysql_num_rows($account);

  15. #15
    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
    C'est pas mieux

    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    petite erreur quand on est dans la lune et que l'on va trop vite, c'est vrai :-/

Discussions similaires

  1. [PDO] PDO + Odbc, Fatal error sans message
    Par Sylvaner dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/06/2012, 15h17
  2. [1.x] Fatal error: Class 'PDO' not found in...
    Par Bizoo dans le forum Débuter
    Réponses: 2
    Dernier message: 30/11/2010, 21h13
  3. [MySQL] Fatal error: PDO fetch() avec DATE_FORMAT
    Par marcuzzz dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2010, 16h22
  4. [1.x] Fatal error: Class 'PDO' not found
    Par phpiste dans le forum Symfony
    Réponses: 5
    Dernier message: 14/07/2010, 12h40
  5. class php5 - Fatal error: main() [function.main]
    Par tom261285 dans le forum Langage
    Réponses: 3
    Dernier message: 21/01/2005, 14h41

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