Problème de connexion 2

Fermé
shegy93 Messages postés 2 Date d'inscription samedi 28 mai 2016 Statut Membre Dernière intervention 28 mai 2016 - Modifié par jordane45 le 31/05/2016 à 00:20
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 31 mai 2016 à 00:40
Bonjour j'ai esasyer de faire un tuto sur une connexion php mais a chaque fois que j'essaie de me connecter sa m'affiche une page blanche meme pass d'erreurs.

<?php

/* Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)*/
header('Content-type: text/html; charset=UTF-8');

/* Initialisation de la variable du message de réponse*/
$message = null;

/* Récupération des variables issues du formulaire par la méthode post*/
$login = filter_input(INPUT_POST, 'login');
$password = filter_input(INPUT_POST, 'password');

/* Si le formulaire est envoyé*/
if (isset($login,$password)) 
{
    
    /* Teste que les valeurs ne sont pas vides ou composées uniquement d'espaces */  
    $login = trim($login) != '' ? $login : null;
    $password = trim($password) != '' ? $password : null;
  
  
  /* Si $pseudo et $pass différents de null */
  if(isset($login,$password)) 
  {
    /**** Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
    
    /* Configuration des options de connexion */
    
    /* Désactive l'éumlateur de requêtes préparées (hautement recommandé) */
    $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
    
    /* Active le mode exception */
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    
    /* Indique le charset */
    //$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
    
    /* Connexion */
    try
    {
       $connect = new PDO('pgsql:host=localhost;port=5432;dbname=projetweb;user=postgres;password=root');
        
    }
    catch (PDOException $e)
    {
      exit('problème de connexion à la base');
    }    
    
    /* Requête pour récupérer les enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp posté dans le formulaire */
    $requete = "SELECT count(*) FROM profil WHERE login = :login AND password = :password";  

       

     
    try
    {
      //* Préparation de la requête*/
      $req_prep = $connect->prepare($requete);
      
      /* Exécution de la requête en passant les marqueurs et leur variables associées dans un tableau*/
     // $req_prep->execute(array(':login'=>$login,':password'=>$password));
      $req_prep->execute();
      /* Création du tableau du résultat avec fetchAll qui récupère tout le tableau en une seule fois*/
      $resultat = $req_prep->fetchAll(); 
      
      $nb_result = count($resultat);
      
      if ($nb_result == 1)
      {
        /* Démarre une session si aucune n'est déjà existante et enregistre le pseudo dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter.  */
        if (!session_id()) session_start();
        $_SESSION['login'] = $login;
            
        $message = 'Bonjour '.htmlspecialchars($_SESSION['login']).', vous êtes connecté';
        /*ou redirection vers une page en cas de succès ex : menu.php*/
       //header("Location: ./menu.html");
        //exit();
        
        /* Si vous voulez récupérer les données elles se trouvent dans la première et unique ligne du tableau $resultat par exemple */
         /**$result = $resultat[0];
        echo $result['pseudo'];
        //echo $result['date_enregistrement'];


*
**
***/
      }
      else if ($nb_result > 1)
      {
        /* Par sécurité si plusieurs réponses de la requête mais si la table est bien construite on ne devrait jamais rentrer dans cette condition */
        $message = 'Problème de d\'unicité dans la table';
      }
      else
      {   /* Le pseudo ou le mot de passe sont incorrect */
        $message = 'Le pseudo ou le mot de passe sont incorrect';
      }
    }
    catch (PDOException $e)
    {
      $message = 'Problème dans la requête de sélection';
    } 
  }
  else 
  {/*au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli*/
    $message = 'Les champs Pseudo et Mot de passe doivent être remplis.';
  }
}

?>


vraiment besoin d'aide en ce moment



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

cordialement
A voir également:

2 réponses

aminos1996 Messages postés 353 Date d'inscription dimanche 26 février 2012 Statut Membre Dernière intervention 31 août 2018 125
30 mai 2016 à 16:17
bonsoir
essaye de faire un echo "erreur"; avant chaque ligne comme ça tu sauras bien quelle ligne cause l'arrêt du script
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 31/05/2016 à 00:48
Bonjour,

Déjà ... place le code de connexion à ta BDD dans un fihcier à part que tu n'auras qu'à inclure dans les pages où tu en auras besoin...
Ca t'éviter de copier/coller 50 fois la même chose ....
Par exemple :
<?php
//Fichier de connexion à la bdd : cnxBdd.php
 try{
    $bdd= new PDO('pgsql:host=localhost;port=5432;dbname=projetweb;user=postgres;password=root');
   $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
    die('Erreur de connexion : ' . $e->getMessage());
} 


Ensuite, au début de ton script, ajoutes la ligne :
//Active l'affichage des erreurs PHP
error_reporting(E_ALL);


En gros, ton code avec quelques corrections, donnerait un truc du genre :
<?php
//affichage des erreurs pHP
error_reporting(E_ALL);

/* Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)*/
header('Content-type: text/html; charset=UTF-8');
// Démarrage des sessions (à Faire DES LE DEBUT !)
if (!session_id()){
 session_start();
}

//connexion à la bdd (on inclus le fichier de connexion)
require_once "cnxBdd.php"; 

/* Initialisation de la variable du message de réponse*/
$message = null;

/* Récupération des variables issues du formulaire par la méthode post*/
  $login = filter_input(INPUT_POST, 'login');
  $password = filter_input(INPUT_POST, 'password');
/* Teste que les valeurs ne sont pas vides ou composées uniquement d'espaces */  
  $login = !empty(trim($login)) ? trim($login) : null;
  $password = !empty(trim($password)) ? trim($password) : null;
  

if ($login,$password)){  /* Si le formulaire est envoyé et Si $pseudo et $pass différents de null */
    
    /* Requête pour récupérer les enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp posté dans le formulaire */
    //* Préparation de la requête*/
 $requete = "SELECT count(*) as NB FROM profil WHERE login = :login AND password = :password";  
    $datas = array(':login'=>$login,':password'=>$password);
    try {
      //execution de la requete
      $req_prep = $bdd->prepare($requete);
      $req_prep->execute($datas);
      $resultat = $req_prep->fetchAll(); /* Création du tableau du résultat avec fetchAll qui récupère tout le tableau en une seule fois*/
      
    } catch (PDOException $e){
      $message = 'Problème dans la requête de sélection  :' . $e->getMessage();
    } 
 
 $nb_result =!empty($resultat) ? $resultat[0]['NB'] : 0;
    
 if ($nb_result == 1) {
  
  $_SESSION['login'] = $login;
   
  $message = 'Bonjour '.htmlspecialchars($_SESSION['login']).', vous êtes connecté';
  /*ou redirection vers une page en cas de succès ex : menu.php*/
     //header("Location: ./menu.html");
  //exit();
  /* Si vous voulez récupérer les données elles se trouvent dans la première et unique ligne du tableau $resultat par exemple */
   /**$result = $resultat[0];
  echo $result['pseudo'];
  //echo $result['date_enregistrement'];
        ***/
 } else if ($nb_result > 1) {
   /* Par sécurité si plusieurs réponses de la requête mais si la table est bien construite on ne devrait jamais rentrer dans cette condition */
   $message = 'Problème de d\'unicité dans la table';
 } else {   /* Le pseudo ou le mot de passe sont incorrect */
   $message = 'Le pseudo ou le mot de passe sont incorrect';
 }
} else {/*au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli*/
    $message = 'Les champs Pseudo et Mot de passe doivent être remplis.';
}

?>




Cordialement, 
Jordane                                                                 
0