Problème de connexion 2
shegy93
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
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