Moteur de recherche affichant le message d'une personne
Résolu
Utilisateur anonyme
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, J'ai crée un projet de moteur de recherche fait en PHP et avec Bootstrap. Ce moteur de recherche doit avoir le concept suivant : lorsque je tape dans le champ de recherche le nom et le prénom d'une personne (je précise), le message d'une personne doit apparaitre. Pour cela, j'ai crée une base de données appelée "amourethaine". Dans cette base de données, il y a une seule table appelée "Personne" qui contient 3 colonnes : nom, prenom et message. Voici le moteur de recherche dans le fichier index.php :
Pour interagir avec la base de données "amourethaine" et la table "personne", j'ai crée un fichier PDO appelé "_gestionBase.inc.php" que voici :
Or pour le moment, quand je saisi dans le champ de recherche uniquement le nom de la personne, le message correspondant à la personne s'affiche. Mais quand je saisi le nom etle prénom, rien ne s'affiche. Or mon but c'est quand tapant dans le moteur de recherche le nom et le prénom, le message s'affiche. En d'autres termes, je souhaiterai afficher le contenu de la colonne "message" correspondant au nom et au prénom de la personne issu également dans les colonnes nom et prenom de la table "personne"
Pouvez-vous m'aider ?
<?php /* Fichier index.php */ //affichage des erreurs php //error_reporting(E_ALL); require_once '__gestionBase.inc.php'; //traitement du formulaire if ($nom . $prenom) { $messagePersonne = obtenirMessagePersonne($nom, $prenom); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="../../favicon.ico"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <link href="bootstrap/css/style.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left"method="POST"> <input type="text" name="nom" class="span4" placeholder="Prénom Nom" value="<?php echo $prenom . $nom; ?>"> <button type="submit" class="btn">Rechercher</button><br> <?php if (!empty($messagePersonne)) { echo "<h2>$messagePersonne</h2>"; } ?> </form><br> <script src=""quot;http://code.jquery.com/jquery.js"></script> <script src=""quot;js/bootstrap.min.js"></script> </body> </head> <body> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left"method="POST"> <input type="text" name="nom" class="span4" placeholder="Prénom Nom" value="<?php echo $prenom . $nom; ?>"> <button type="submit" class="btn">Rechercher</button><br> <?php if (!empty($messagePersonne)) { echo "<h2>$messagePersonne</h2>"; } ?> </form><br> <script src=""quot;http://code.jquery.com/jquery.js"></script> <script src=""quot;js/bootstrap.min.js"></script> </body>
Pour interagir avec la base de données "amourethaine" et la table "personne", j'ai crée un fichier PDO appelé "_gestionBase.inc.php" que voici :
<?php /* __gestionBase.inc.php * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données * */ /* La première fonction regroupe la fonction se connectant à la base de données * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion * Elle retourne un objet PDO en cas de succès et false en cas d'échec */ function gestionnaireDeConnexion() { try { $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch (PDOException $e) { die("Erreur ! :" . $e->getMessage()); } return $pdo; } //var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici ! /* * Retourne le message d'une personne * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec */ function obtenirMessagePersonne($nom, $prenom) { $pdo = gestionnaireDeConnexion(); if (isset($_POST['submit'])) { if (isset($_POST['nom'])) { $nom = $_POST['nom']; $sql = "select message from personne where nom=:nom and prenom=:prenom"; $query = $pdo->prepare($sql); $query->bindParam(':nom', $nom); $query->bindParam(':prenom', $prenom); $query->execute(); $resultat = $query->fetch(); //le temps des tests : //print_r($resultat); $messagePersonne = !empty($resultat) ? $resultat->message : ''; //Pour les tests : /* echo "requête = ".$req; print_r($datas); */ return $messagePersonne; } else return 0; } else return false; }
Or pour le moment, quand je saisi dans le champ de recherche uniquement le nom de la personne, le message correspondant à la personne s'affiche. Mais quand je saisi le nom etle prénom, rien ne s'affiche. Or mon but c'est quand tapant dans le moteur de recherche le nom et le prénom, le message s'affiche. En d'autres termes, je souhaiterai afficher le contenu de la colonne "message" correspondant au nom et au prénom de la personne issu également dans les colonnes nom et prenom de la table "personne"
Pouvez-vous m'aider ?
A voir également:
- Moteur de recherche affichant le message d'une personne
- Recuperer message whatsapp supprimé - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Message supprimé whatsapp - Guide
- Message absence thunderbird - Guide
- Epingler un message whatsapp - Accueil - Messagerie instantanée
10 réponses
Bonjour,
Tu as un seul champ "nom"
que tu récupères via l'instruction
.. au passage .. comme il me semble te l'avoir déjà dit ... il serait préférable de le faire "proprement" comme ceci :
Le probème c'est que ce champ contient à la fois le NOM et le PRENOM.
Hors.. ta variable $prenom .. n'est pas renseignée ...
Tu as plusieurs possibilités :
Soit tu "split" le contenu de $_POST['nom'] en deux variables ( $nom et $prenom)
Soit, dans ta requête, tu fais ton WHERE sur la CONCATENATION de tes deux champs ( nom prenom )
Par exemple :
Tu as un seul champ "nom"
que tu récupères via l'instruction
$nom = $_POST['nom'];
.. au passage .. comme il me semble te l'avoir déjà dit ... il serait préférable de le faire "proprement" comme ceci :
$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : '';
Le probème c'est que ce champ contient à la fois le NOM et le PRENOM.
Hors.. ta variable $prenom .. n'est pas renseignée ...
Tu as plusieurs possibilités :
Soit tu "split" le contenu de $_POST['nom'] en deux variables ( $nom et $prenom)
$nomPrenom = !empty($_POST['nom']) ? $_POST['nom'] : ''; $NP = explode(" ",$nomPrenom); $nom = $NP[0]; $prenom = $NP[1];
Soit, dans ta requête, tu fais ton WHERE sur la CONCATENATION de tes deux champs ( nom prenom )
Par exemple :
SELECT message FROM personne WHERE concat_ws(' ',nom,prenom) = :nom
Bon en écoutant ce que vous m'avez proposé, voici ce que j'ai fais :
Et le fichier _gestionBase.inc.php
Et ça ne marche pas.
<?php /* Fichier index.php */ //affichage des erreurs php //error_reporting(E_ALL); require_once '__gestionBase.inc.php'; $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : ''; /*$nomPrenom = !empty($_POST['nom']) ? $_POST['nom'] : ''; $NP = explode(" ",$nomPrenom); $nom = $NP[0]; $prenom = $NP[1];*/ //traitement du formulaire if ($nomPrenom) { $messagePersonne = obtenirMessagePersonne($nomPrenom); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="../../favicon.ico"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <link href="bootstrap/css/style.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left"method="POST"> <input type="text" name="nom" class="span4" placeholder="Prénom Nom" value="<?php echo $prenom . $nom; ?>"> <button type="submit" class="btn">Rechercher</button><br> <?php if (!empty($messagePersonne)) { echo "<h2>$messagePersonne</h2>"; } ?> </form><br> <script src=""quot;http://code.jquery.com/jquery.js"></script> <script src=""quot;js/bootstrap.min.js"></script> </body>
Et le fichier _gestionBase.inc.php
<?php /* __gestionBase.inc.php * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données * */ /* La première fonction regroupe la fonction se connectant à la base de données * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion * Elle retourne un objet PDO en cas de succès et false en cas d'échec */ function gestionnaireDeConnexion() { try { $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch (PDOException $e) { die("Erreur ! :" . $e->getMessage()); } return $pdo; } //var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici ! /* * Retourne le message d'une personne * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec */ function obtenirMessagePersonne($nom, $prenom) { $pdo = gestionnaireDeConnexion(); if (isset($_POST['submit'])) { if (isset($_POST['nom'])) { $nom = $_POST['nom']; $prenom = $_POST['nom']; $sql = "select message from personne where concat_ws(' ',nom,prenom) = :nom"; $query = $pdo->prepare($sql); $query->bindParam(':nom', $nom); $query->bindParam(':prenom', $prenom); $query->execute(); $resultat = $query->fetch(); //le temps des tests : //print_r($resultat); $messagePersonne = !empty($resultat) ? $resultat->message : ''; //Pour les tests : /* echo "requête = ".$req; print_r($datas); */ return $messagePersonne; } else return 0; } else return false; }
Et ça ne marche pas.
Bon en lisant ce que vous dites, voici ce que j'ai fais :
Pour index.php :
Et le fichier __gestionBase.inc.php
Sachant peut-être que je n'ai pas tout compris dans ce que vous m'avez écrit, maintenant dans mes démonstrations, plus aucun message s'affiche.
Pour index.php :
<?php /* Fichier index.php */ //affichage des erreurs php //error_reporting(E_ALL); require_once '__gestionBase.inc.php'; $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : ''; $prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : ''; /* $nomPrenom = !empty($_POST['nom']) ? $_POST['nom'] : ''; $NP = explode(" ",$nomPrenom); $nom = $NP[0]; $prenom = $NP[1]; */ //traitement du formulaire if ($nom && $prenom) { $messagePersonne = obtenirMessagePersonne($nom, $prenom); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="../../favicon.ico"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <link href="bootstrap/css/style.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left"method="POST"> <input type="text" name="nom" class="span4" placeholder="Nom" value="<?php echo $nom; ?>"> <input type="text" name="prenom" class="span4" placeholder="Prenom" value="<?php echo $prenom; ?>"> <button type="submit" class="btn">Rechercher</button><br> <?php if (!empty($messagePersonne)) { echo "<h2>$messagePersonne</h2>"; } ?> </form><br> <script src=""quot;http://code.jquery.com/jquery.js"></script> <script src=""quot;js/bootstrap.min.js"></script> </body>
Et le fichier __gestionBase.inc.php
<?php /* __gestionBase.inc.php * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données * */ /* La première fonction regroupe la fonction se connectant à la base de données * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion * Elle retourne un objet PDO en cas de succès et false en cas d'échec */ function gestionnaireDeConnexion() { try { $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch (PDOException $e) { die("Erreur ! :" . $e->getMessage()); } return $pdo; } //var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici ! /* * Retourne le message d'une personne * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec */ function obtenirMessagePersonne($nom, $prenom) { $pdo = gestionnaireDeConnexion(); if (isset($_POST['submit'])) { if (isset($_POST['nom'])) { $nom = $_POST['nom']; $prenom = $_POST['prenom']; $sql = "select message from personne where concat_ws(' ',nom,prenom) = :nom"; $query = $pdo->prepare($sql); $query->bindParam(':nom', $nom); $query->bindParam(':prenom', $prenom); $query->execute(); $resultat = $query->fetch(); //le temps des tests : //print_r($resultat); $messagePersonne = !empty($resultat) ? $resultat->message : ''; //Pour les tests : /* echo "requête = ".$req; print_r($datas); */ return $messagePersonne; } else return 0; } else return false; }
Sachant peut-être que je n'ai pas tout compris dans ce que vous m'avez écrit, maintenant dans mes démonstrations, plus aucun message s'affiche.
Ah la la ....
Dans ta fonction... pourquoi avoir mis les lignes :
Alors que tu passes déjà les variables nom et prénom dans l'appel à ta fonction ??
Tu colles du code sans en comprendre le fonctionnement... ce n'est pas comme ça que tu vas apprendre !
Bref !:
Cordialement,
Jordane
Dans ta fonction... pourquoi avoir mis les lignes :
if (isset($_POST['submit'])) { if (isset($_POST['nom'])) { $nom = $_POST['nom']; $prenom = $_POST['prenom'];
Alors que tu passes déjà les variables nom et prénom dans l'appel à ta fonction ??
function obtenirMessagePersonne($nom, $prenom) {
Tu colles du code sans en comprendre le fonctionnement... ce n'est pas comme ça que tu vas apprendre !
Bref !:
<?php /* Fichier index.php */ //affichage des erreurs php error_reporting(E_ALL); ini_set('display-errors','on'); require_once '__gestionBase.inc.php'; $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : NULL; $prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : NULL; //traitement du formulaire if ($nom && $prenom) { $messagePersonne = obtenirMessagePersonne($nom, $prenom); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="../../favicon.ico"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <link href="bootstrap/css/style.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src=""quot;"quot;"quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src=""quot;"quot;"quot;../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src=""quot;"quot;"quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src=""quot;"quot;"quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left" method="POST" action=""> <input type="text" name="nom" class="span4" placeholder="Nom" value="<?php echo $nom; ?>"> <input type="text" name="prenom" class="span4" placeholder="Prenom" value="<?php echo $prenom; ?>"> <button type="submit" class="btn">Rechercher</button><br> <?php if (!empty($messagePersonne)) { echo "<h2>$messagePersonne</h2>"; } ?> </form> <br> <script src=""quot;"quot;quot;http://code.jquery.com/jquery.js"></script> <script src=""quot;"quot;quot;js/bootstrap.min.js"></script> </body> </html>
<?php /* __gestionBase.inc.php * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données * */ /* La première fonction regroupe la fonction se connectant à la base de données * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion * Elle retourne un objet PDO en cas de succès et false en cas d'échec */ function gestionnaireDeConnexion() { try { $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch (PDOException $e) { die("Erreur ! :" . $e->getMessage()); } return $pdo; } //var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici ! /* * Retourne le message d'une personne * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec */ function obtenirMessagePersonne($nom, $prenom) { $pdo = gestionnaireDeConnexion(); $sql = "SELECT message FROM personne WHERE nom = :nom AND prenom =:prenom"; $query = $pdo->prepare($sql); $query->bindParam(':nom', $nom); $query->bindParam(':prenom', $prenom); $query->execute(); $resultat = $query->fetch(); $messagePersonne = !empty($resultat) ? $resultat->message : ''; return $messagePersonne; }
Cordialement,
Jordane
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est bon j'ai réussi à le faire marcher parfaitement. En fait cela vient de mon fichier PDO _gestionBase.inc.php, j'ai modifié la condition si de ma fonction obtenirMessagepersonne:
Et pour mon fichier index.php, j'ai juste modifier la manière dont s'affiche le message en dessous du formulaire. Du coup, avec le nom et le prénom le message s'affiche bien en dessous :
function obtenirMessagePersonne($nom, $prenom) { $pdo = gestionnaireDeConnexion(); if (isset($_POST['nom']) && isset($_POST['prenom'])) { $nom = $_POST['nom']; $prenom = $_POST['prenom']; $sql = "select message from personne where nom=:nom and prenom=:prenom"; $query = $pdo->prepare($sql); $query->bindParam(':nom', $nom); $query->bindParam(':prenom', $prenom); $query->execute(); $resultat = $query->fetch(); //le temps des tests : //print_r($resultat); $messagePersonne = !empty($resultat) ? $resultat->message : ''; //Pour les tests : /* echo "requête = ".$req; print_r($datas); */ return $messagePersonne; } else return false; }
Et pour mon fichier index.php, j'ai juste modifier la manière dont s'affiche le message en dessous du formulaire. Du coup, avec le nom et le prénom le message s'affiche bien en dessous :
<?php /* Fichier index.php */ //affichage des erreurs php //error_reporting(E_ALL); include_once '_gestionBase.inc.php'; $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : ''; $prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : ''; //traitement du formulaire if ($nom && $prenom) { $messagePersonne = obtenirMessagePersonne($nom, $prenom); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="../../favicon.ico"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <link href="bootstrap/css/style.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left"method="POST"> <input type="text" name="nom" class="span4" placeholder="Nom" value="<?php echo $nom; ?>"> <input type="text" name="prenom" class="span4" placeholder="Prenom" value="<?php echo $prenom; ?>"> <button type="submit" class="btn">Rechercher</button><br> <?php if (isset($messagePersonne)) : ?> <?php echo "<h2>$messagePersonne</h2>"; ?> <?php endif; ?> </form><br> <script src=""quot;http://code.jquery.com/jquery.js"></script> <script src=""quot;js/bootstrap.min.js"></script> </body>
c'est bien ce que je lui ai déjà dit ... https://forums.commentcamarche.net/forum/affich-34231028-moteur-de-recherche-affichant-le-message-d-une-personne#11
.....
.....
Bonsoir. J'ai améliorer mon moteur de recherche en faisant du PHP orienté objet. Voici mon nouveau fichier gestionBase.php contenant mon fichier PDO :
Et voici mon nouveau fichier de traitement traitement.php :
Et voici l'IHM de mon moteur de recherche index.php :
Or pour le rappeler, je veux qu'un message s'affiche en fonction du nom et du prenom de la personne qui sont renseigné dans les champs du formulaire. Or le problème c'est que pour tous les noms et prénoms présents dans ma base de données, s'affiche le message "Inconnu au bataillon" quand je valide avec le bouton Rechercher. Or ce message s'affiche pour les personnes présentes dans ma base de données et renseigné dans les champs.
Pouvez-vous m'aider ? Merci d'avance.
<?php /* * _gestionBase.php * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données * */ /* * La première fonction regroupe la fonction se connectant à la base de données * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion * Elle retourne un objet PDO en cas de succès et false en cas d'échec */ class gestionBase { function gestionnaireDeConnexion() { $user = 'root'; $pass = ''; $hote = 'localhost'; $base = 'amourethaine'; $dsn = "mysql:host=$hote;dbname=$base"; try { $pdo = new PDO ( $dsn, $user, $pass ); $pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $pdo->setAttribute ( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ ); } catch ( PDOException $e ) { die ( "Erreur ! :" . $e->getMessage () ); } return $pdo; } /* * Retourne le message d'une personne * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec */ function obtenirMessagePersonne($nom, $prenom) { $pdo = $this->gestionnaireDeConnexion (); $sql = "select message from personne where nom=:nom and prenom=:prenom"; $query = $pdo->prepare ( $sql ); $query->bindParam ( ':nom', $nom ); $query->bindParam ( ':prenom', $prenom ); $query->execute (); $resultat = $query->fetch (); $messagePersonne = !empty($resultat) ? $resultat->message : 'Inconnu(e) au bataillon'; return $messagePersonne; } }
Et voici mon nouveau fichier de traitement traitement.php :
<?php /* Fichier index.php */ // affichage des erreurs php // error_reporting(E_ALL); require_once 'gestionBase.php'; class Traitement { function __construct() { } function interrogation() { $base = new gestionBase(); // Récupération des valeurs saisies dans le formulaire $nom = isset ( $_POST ['nom'] ) ? trim ( $_POST ['nom'] ) : NULL; $prenom = isset ( $_POST ['prenom'] ) ? trim ( $_POST ['prenom'] ) : NULL; // Traitement du formulaire if ($nom && $prenom) { $messagePersonne = $base->obtenirMessagePersonne ( $nom, $prenom ); } } } ?>
Et voici l'IHM de mon moteur de recherche index.php :
<?php /* Fichier index.php */ // affichage des erreurs php error_reporting ( E_ALL ); require_once '_debut.php'; require_once 'traitement.php'; $interro = new Traitement (); $nom = $interro->interrogation (); $prenom = $interro->interrogation (); ?> <body> <div class="container"> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left" method="POST"> <input type="text" name="prenom" placeholder="Prenom" value="<?php echo $prenom; ?>"> <input type="text" name="nom" placeholder="Nom" value="<?php echo $nom; ?>"> <button type="submit" name="rechercher" class="btn">Rechercher</button> <br> <!--Affichage du message correspondant à la personne--> <?php if (isset($messagePersonne)) : ?> <?php echo "<h2>$messagePersonne</h2>"; ?> <?php elseif (isset($_POST["rechercher"])) : ?> <?php echo "<h2>Inconnu au bataillon</h2>"; ?> <?php endif; ?> <br> <!--button type="button" class="btn btn-default" href= "index.php">Rafraichir</button--> </form> <br> </div> <?php require_once '_fin.php'; ?>
Or pour le rappeler, je veux qu'un message s'affiche en fonction du nom et du prenom de la personne qui sont renseigné dans les champs du formulaire. Or le problème c'est que pour tous les noms et prénoms présents dans ma base de données, s'affiche le message "Inconnu au bataillon" quand je valide avec le bouton Rechercher. Or ce message s'affiche pour les personnes présentes dans ma base de données et renseigné dans les champs.
Pouvez-vous m'aider ? Merci d'avance.
je vois tellement de bizarreries que je ne sais pas par où commencer...
c'est ton premier exercice en php orienté objet?
je te suggère de commencer par des exercices plus simples.
pourquoi ne commences-tu pas par t'aider toi-même, par exemple en examinant le contenu de tes variables après avoir fait:
c'est ton premier exercice en php orienté objet?
je te suggère de commencer par des exercices plus simples.
pourquoi ne commences-tu pas par t'aider toi-même, par exemple en examinant le contenu de tes variables après avoir fait:
$interro = new Traitement (); $nom = $interro->interrogation (); $prenom = $interro->interrogation ();
...
Cordialement,
Jordane
<?php /* Fichier index.php */ // affichage des erreurs php error_reporting ( E_ALL ); ini_set('display-erros','on'); //include des class require_once '_gestionBase.php'; require_once 'traitement.php'; $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : NULL; $prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : NULL; //traitement du formulaire if (isset($_POST['rechercher'])) { $interro = new Traitement(); $messagePersonne = $interro->interrogation($nom,$prenom); } ?> <?php require_once '_debut.php'; ?> <body> <div class="container"> <h1>De l'amour à la haine...</h1> <form class="navbar-form pull-left" method="POST"> <input type="text" name="prenom" placeholder="Prenom" value="<?php echo $prenom; ?>"> <input type="text" name="nom" placeholder="Nom" value="<?php echo $nom; ?>"> <button type="submit" name="rechercher" class="btn">Rechercher</button> <br> <!--Affichage du message correspondant à la personne--> <?php if (isset($messagePersonne)){ echo "<h2>$messagePersonne</h2>"; } ?> <br> <!--button type="button" class="btn btn-default" href= "index.php">Rafraichir</button--> </form> <br> </div> <?php require_once '_fin.php'; ?>
<?php /* * _gestionBase.php * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données * */ class gestionBase { public bdd; private function gestionnaireDeConnexion() { $user = 'root'; $pass = ''; $hote = 'localhost'; $base = 'amourethaine'; $dsn = "mysql:host=$hote;dbname=$base"; try { $pdo = new PDO ( $dsn, $user, $pass ); $pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $pdo->setAttribute ( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ ); } catch ( PDOException $e ) { die ( "Erreur ! :" . $e->getMessage () ); } $this->bdd = $pdo; } }
<?php /* Class Traitement*/ class Traitement extends gestionBase{ function __construct() { //appel le constructeur de gestionBase //et instancie la variable bdd parent::constuct(); } /** * Recuperation du message */ public function interrogation($nom,$prenom) { // Traitement du formulaire if ($nom && $prenom) { $messagePersonne = $this->obtenirMessagePersonne ($nom, $prenom ); }else{ $messagePersonne = "Merci de renseigner le nom et le prenom "; } return $messagePersonne; } /* * Retourne le message d'une personne * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec */ private function obtenirMessagePersonne($nom, $prenom) { $pdo = $this->bdd; //vient de la class parent gestionBase $sql = "select message from personne where nom=:nom and prenom=:prenom"; $query = $pdo->prepare($sql); $query->bindParam(':nom', $nom); $query->bindParam(':prenom', $prenom); $query->execute(); $resultat = $query->fetch(); return !empty($resultat) ? $resultat->message : 'Inconnu(e) au bataillon'; } } ?> ?>
Cordialement,
Jordane
Si ta class c'est gestionBASE ... que viendrait y faire ta méthode MessagePersonne ?? C'est comme si je rangeai des chaussures dans mon frigo ....
Chaque "container" à une utilité ... un but .. ..... faut pas commencer à y mettre n'importe quoi.
Sinon autant ne faire qu'une seule CLASS et y mettre directement toutes tes méthodes ....
Chaque "container" à une utilité ... un but .. ..... faut pas commencer à y mettre n'importe quoi.
Sinon autant ne faire qu'une seule CLASS et y mettre directement toutes tes méthodes ....
Bonsoir. Concernant le dernier message, j'ai réglé l'erreur en en stockant dans des variables les appels de méthodes $compte->getUser() et $compte->getMdp(). Cependant, je n'arrive pas à me connecter à mon moteur de recherche. En effet, quand je me connecte, je dois basculer sur la page du moteur de recherche. Or ça ne marche pas, et j'ai l'impression qu'il ne récupère pas les valeurs de mes variables $_SESSION[].
Pouvez-vous m'aider, ce serait super.
Voici ma entête appelée "_debut.php" de ma page index :
Ensuite, voici ma page index.php où se trouve mon interface de connexion :
Les deux fichiers sont à la racine de mon projet.
Voici ma classe compte.php qui interagit avec ma table compte de ma base de données. Il est dans mon répertoire modele :
En dessous se trouve le manager de ma table compte appelé comptemanager.php Il se trouve dans mon répertoire modele :
Maintenant se trouve l'algorithme PHP d'authentification au moteur de recherche. Celui-ci se trouve dans mon répertoire controleur :
Merci de me répondre.
Pouvez-vous m'aider, ce serait super.
Voici ma entête appelée "_debut.php" de ma page index :
<?php ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="#"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/style.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src="../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body>
Ensuite, voici ma page index.php où se trouve mon interface de connexion :
<?php /* Fichier index.php permettant au utilisateur de se connecter, c'est la page d'accueil */ // affichage des erreurs php error_reporting ( E_ALL ); include_once '_debut.php'; include_once 'controleur/authentification.php'; ?> <header></header> <center> <div class="container"> <h1>De l'amour à la haine...</h1> <form class="navbar-form navbar-left" role="search" method="POST" S> <div class="form-group"> <input type="text" class="form-control" placeholder="Login" name="user"> <input type="password" class="form-control" placeholder="Mot de passe" name="mdp"> </div> <button type="submit" class="btn btn-success" name="connecter">Se connecter</button> </form> </div> </center> <?php include_once '_fin.php'; ?>
Les deux fichiers sont à la racine de mon projet.
Voici ma classe compte.php qui interagit avec ma table compte de ma base de données. Il est dans mon répertoire modele :
<?php class Compte { protected $user; protected $mdp; public function getUser() { return $this->user; } public function getMdp() { return $this->mdp; } public function setUser($user) { $this->user = (string) $user; return $this; } public function setMdp($mdp) { $this->mdp = $mdp; return $this; } }
En dessous se trouve le manager de ma table compte appelé comptemanager.php Il se trouve dans mon répertoire modele :
<?php // Méthode CRUD de la table Compte class CompteManager { //Instance de PDO protected $db; public function __construct($pdo) { $this->setDb($pdo); } // Ajouter un compte public function add(Compte $compte) { $q = $this->db->prepare('INSERT INTO compte (user, mdp)VALUES(:user,:mdp)'); $q->bindvalue(':user', $compte->getUser()); $q->bindvalue(':mdp', $compte->getMdp()); $q->execute(); } //Suppression d'un compte public function delete(Compte $compte) { $this->db->execute('DELETE FROM compte WHERE user= ' . $compte->getUser()); } //Selection d'un utilisateur public function get(Compte $compte) { $user = $compte->getUser(); $mdp = $compte->getMdp(); $q = $this->db->prepare('SELECT user, mdp FROM compte WHERE user =:user AND mdp =:mdp'); $q->bindParam(':user', $user, PDO::PARAM_STR); $q->bindParam(':mdp', $mdp, PDO::PARAM_STR); $q->execute(); $u = $q->fetch(PDO::FETCH_ASSOC); return new Compte($u); } //Liste des utilisateurs public function getList() { $comptes = []; $q = $this->db->query('SELECT user, mdp FROM compte ORDER BY user'); while ($donnees = $q->fetch(PDO::FETCH_ASSOC)) { $comptes[] = new Compte($donnees); } return $comptes; } //Mise à jour d'un utilisateur en fonction du nom de l'utilisateur public function update(Compte $compte) { $q = $this->db->prepare('UPDATE compte SET user =: user, mdp =:mdp WHERE user =:user'); $q->bindParam(':user', $compte->getUser(), PDO::PARAM_STR); $q->bindParam(':mdp', $compte->getMdp(), PDO::PARAM_STR); $q->execute(); } public function setDb(PDO $pdo) { $this->db = $pdo; } } try { $pdo = new PDO('mysql:host=localhost;dbname=amourethaine', 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch (PDOException $e) { die("Erreur ! :" . $e->getMessage()); }
Maintenant se trouve l'algorithme PHP d'authentification au moteur de recherche. Celui-ci se trouve dans mon répertoire controleur :
<?php include_once('modele/comptemanager.php'); // Algorithme permmetant au super utilisateur de se connecter include_once('modele/compte.php'); $compte = new Compte(); $manager = new CompteManager($pdo); if (isset($_POST ["connecter"])) { if (isset($_POST ["user"]) && isset($_POST ["mdp"])) { $user = $compte->getUser(); $_POST ["user"] = $user; $mdp = $compte->getMdp(); $_POST ["mdp"] = $mdp; $resultat = $manager->get($compte); if ($resultat == "true") { $_SESSION ["user"] = $user; $_SESSION ["mdp"] = $mdp; header("location:recherche.php"); print_r($_SESSION); } } }
Merci de me répondre.
pour récupérer les variables de session, tu peux faire, par exemple (après le session_start()):
je n'ai pas analysé tout ton code, je réagis à ta phrase "j'ai l'impression qu'il ne récupère pas les valeurs de mes variables $_SESSION[]"
en passant: je ne comprends pas vraiment pourquoi tu enregistres le mot de passe dans la session: d'habitude, le mot de passe est vérifié une seule fois, avant de créer la session.
$session_user = $_SESSION["user"] ; $session_mdp = $_SESSION["mdp"] ;
je n'ai pas analysé tout ton code, je réagis à ta phrase "j'ai l'impression qu'il ne récupère pas les valeurs de mes variables $_SESSION[]"
en passant: je ne comprends pas vraiment pourquoi tu enregistres le mot de passe dans la session: d'habitude, le mot de passe est vérifié une seule fois, avant de créer la session.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
je suis un peu perdu, peux-tu partager le contenu de _debut.php et de _debutmenu.php?
merci de chaque fois mettre le nom du fichier avant le contenu.
si je comprends bien, la seule façon d'arriver à la page recherche.php, c'est à partir de la redirection dans la page authentification.php. c'est exact?
je comprends aussi que ton problème, c'est que l'utilisateur la redirection n'est jamais exécutée. est-ce exact?
je pense que c'est le moment d'ajouter des "else" dans authentification.php, cela nous permettra de comprendre ce qui se passe dans la page authentification.php.
suggestion pour authentication.php:
merci de chaque fois mettre le nom du fichier avant le contenu.
si je comprends bien, la seule façon d'arriver à la page recherche.php, c'est à partir de la redirection dans la page authentification.php. c'est exact?
je comprends aussi que ton problème, c'est que l'utilisateur la redirection n'est jamais exécutée. est-ce exact?
je pense que c'est le moment d'ajouter des "else" dans authentification.php, cela nous permettra de comprendre ce qui se passe dans la page authentification.php.
suggestion pour authentication.php:
<?php include_once('modele/comptemanager.php'); // Algorithme permmetant au super utilisateur de se connecter include_once('modele/compte.php'); $compte = new Compte(); $manager = new CompteManager($pdo); if (isset($_POST ["connecter"])) { if (isset($_POST ["user"]) && isset($_POST ["mdp"])) { $user = $compte->getUser(); $_POST ["user"] = $user; $mdp = $compte->getMdp(); $_POST ["mdp"] = $mdp; $resultat = $manager->get($compte); if ($resultat == "true") { $_SESSION ["user"] = $user; $_SESSION ["mdp"] = $mdp; header("location:recherche.php"); print_r($_SESSION); } else echo "resultat faux"; } else echo " user ou mdp non reçu"; } else echo " connecter non reçu"; //(...la suite manque, tu ne l'as pas partagée...)
Il me semble que précedemment j'ai partagé ces deux fichiers... Mais bon.
Voici le fichier de l'entête de ma page index.php, "_debut.php" :
Et enfin, voici le fichier "_debutmenu.php" entête du fichier "recherche.php"uniquement :
Voici le fichier de l'entête de ma page index.php, "_debut.php" :
<?php session_start(); $session_user = $_SESSION["user"] ; $session_mdp = $_SESSION["mdp"] ; include_once 'controleur/authentification.php'; ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="#"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/style.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src="../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body>
Et enfin, voici le fichier "_debutmenu.php" entête du fichier "recherche.php"uniquement :
<?php session_start(); include_once 'controleur/restriction.php'; ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="#"> <title>De l'amour à la haine...</title> <!-- Bootstrap core CSS --> <link href="bootstrap/css/style.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet"> <link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <!-- Custom styles for this template --> <link href="bootstrap/css/theme.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src="../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <nav class="navbar-fixed-top navbar"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand"></a> </div> <div id="navbar" class="collapse navbar-collapse"> <?php if (!isset($_SESSION["user"])): ?> <div class="nav navbar-nav pull-right"> <span class="glyphicon glyphicon-user white xsTabulation" aria-hidden="true"> </span> <a href="utilisateur.php" rel="nofollow noopener noreferrer" target="_blank"><span class="text-center white xsTabulation"><?php echo "Bienvenue " . $_SESSION["user"]; ?></a> </span> <span> <a href="<?php echo $_SERVER[" rel="nofollow noopener noreferrer" target="_blank"PHP_SELF"]; ?>?logout" class="white"> <button type="submit" name="deconnecter" class="btn btn-success" span class="glyphicon glyphicon-log-out " aria-hidden="true" title="log-out" <?php include_once'controleur/deconnexion.php';?>>Se déconnecter</button></span> </a> </span> </div> <?php endif; ?> </div> <!-- /.nav-collapse --> </div> <!-- /.container --> </nav>
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
as-tu l'intention de répondre à mes questions en #44, et de tester la suggestion proposée?
autre question, pour clarifier si le problème est causé par la page authentification ou par la page recherche: que se passe-t'il si tu encodes l'adresse de la page recherche dans la barre d'adresse du navigateur?
autre question, pour clarifier si le problème est causé par la page authentification ou par la page recherche: que se passe-t'il si tu encodes l'adresse de la page recherche dans la barre d'adresse du navigateur?
Pour répondre à la première question sur la redirection du fichier "authentification.php" : oui c'est uniquement ce script là qui est censé redirigé vers la page "recherche.php" si il y a une session connecté.
Pour la deuxième question : oui l'utilisateur n'est jamais redirigé vue il ne semble pas reconnaitre les identifiants de connexion.
Et pour la questions du dernier post : si je mets le chemin qui mêne la page "recherche.php" dans ma barre d'adresse du navigation, et bien il redirige vers la page de connexion car seul les utilisateurs authentifiés peuvent y accéder. Et c'est le script du fichier "restriction.php" qui fait la redirection pour les utilisateurs non connectés.
Pour la deuxième question : oui l'utilisateur n'est jamais redirigé vue il ne semble pas reconnaitre les identifiants de connexion.
Et pour la questions du dernier post : si je mets le chemin qui mêne la page "recherche.php" dans ma barre d'adresse du navigation, et bien il redirige vers la page de connexion car seul les utilisateurs authentifiés peuvent y accéder. Et c'est le script du fichier "restriction.php" qui fait la redirection pour les utilisateurs non connectés.
le but de ma suggestion, c'était de comprendre ce que fait la page authentification, pas de corriger.
le message "connecter non reçu" indique que le test
voilà, maintenant tu sais pourquoi la page recherche ne s'affiche pas.
le message "connecter non reçu" indique que le test
if (isset($_POST ["connecter"]))empêche de rediriger vers la page recherche.
voilà, maintenant tu sais pourquoi la page recherche ne s'affiche pas.