Problème de connexion 2
shegy93
Messages postés
2
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
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.
vraiment besoin d'aide en ce moment
cordialement
<?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:
- Problème de connexion 2
- Gmail connexion - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- D'où peut venir un problème de connexion internet sur un ordinateur ? - Guide
- 2 ecran pc - Guide
- Site inaccessible n'autorise pas la connexion - Guide
2 réponses
bonsoir
essaye de faire un echo "erreur"; avant chaque ligne comme ça tu sauras bien quelle ligne cause l'arrêt du script
essaye de faire un echo "erreur"; avant chaque ligne comme ça tu sauras bien quelle ligne cause l'arrêt du script
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 :
Ensuite, au début de ton script, ajoutes la ligne :
En gros, ton code avec quelques corrections, donnerait un truc du genre :
Cordialement,
Jordane
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