je suis sur le TP création d'un espace membre de Mathieu Nebra, et je bute sur un truc tout bête, mais pas moyen de trouver la solution.
Je souhaite faire en sorte que la page d'accueil détecte la présence de cookies et connecte automatiquement le membre concerné.
J'ai donc fait une page à part, qui permet de faire les vérifications nécessaires. La voici :
<?
if(isset($_COOKIE['pseudo_TP_espace_membre'])
AND !empty($_COOKIE['pseudo_TP_espace_membre'])
AND isset($_COOKIE['co_auto_TP_espace_membre'])
AND $_COOKIE['co_auto_TP_espace_membre'] == 1
)
{
include_once('../Modele/connexion_sql.php');// connexion à la bdd
$req = $bdd->prepare('SELECT id, pseudo, pass FROM membres WHERE pseudo = :pseudo AND pass = :pass');
$req->execute(array(
'pseudo' => $_COOKIE['pseudo_TP_espace_membre'],
'pass' => $_COOKIE['pass_TP_espace_membre'],
));
$resultat = $req->fetch();
if($resultat)
{
session_start();
$_SESSION['pseudo'] = $_COOKIE['pseudo_TP_espace_membre'];
$_SESSION['id'] = $resultat['id'];
echo $_SESSION['pseudo']; // permet de tester que tout à fonctionné, et sera retiré dans la version finale
}
}
?>
J'ai testé cette page en long en large et en travers (var_dump, pas à pas...), elle fonctionne, et m'affiche même le pseudo au final, si je l'ouvre dans mon navigateur.
Le problème survient lorsque je veux inclure cette page (modèle MVC oblige) dans la page d'accueil.
Voici le code de la page (j'ai temporairement retiré tout le reste du code) :
<?php include("Controleur/cookies_check.php");?>
Difficile de faire plus concis non?
Et bien lorsque j'ouvre cette fameuse page d'accueil, le pseudo, qui devrait confirmer que tout fonctionne, ne s'affiche pas. Comme si le lien entre les deux pages ne se faisait pas.
Si je copie/colle le code de cookie_check dans accueil, et bien ça ne marche pas.
Il semble que le problème se situe là, donc.
Car si j'enlève le ?> et si je remplace include par require, ça ne fonctionne pas.
A noter que la page accueil se situe à la racine du site, et la page cookie_check dans un dossier nommé 'Controleur'. Peut-être cela a-t-il une incidence....?
<?php
if(isset($_COOKIE['pseudo_TP_espace_membre'])
AND !empty($_COOKIE['pseudo_TP_espace_membre'])
AND isset($_COOKIE['co_auto_TP_espace_membre'])
AND $_COOKIE['co_auto_TP_espace_membre'] == 1
)
{
include_once('../Modele/connexion_sql.php');// connexion à la bdd
$req = $bdd->prepare('SELECT id, pseudo, pass FROM membres WHERE pseudo = :pseudo AND pass = :pass');
$req->execute(array(
'pseudo' => $_COOKIE['pseudo_TP_espace_membre'],
'pass' => $_COOKIE['pass_TP_espace_membre'],
));
$resultat = $req->fetch(PDO::FETCH_OBJ);
if($resultat)
{
session_start();
$_SESSION['pseudo'] = $_COOKIE['pseudo_TP_espace_membre'];
$_SESSION['id'] = $resultat['id'];
echo $_SESSION['pseudo']; // permet de tester que tout à fonctionné, et sera retiré dans la version finale
}
}
?>
A noter qu'avec
$resultat = $req->fetch(PDO::FETCH_OBJ);
la page cookie_check n'affiche plus de résultat, et la page d'accueil reste toujours blanche.
<?php
if(isset($_COOKIE['pseudo_TP_espace_membre'])
AND !empty($_COOKIE['pseudo_TP_espace_membre'])
AND isset($_COOKIE['co_auto_TP_espace_membre'])
AND $_COOKIE['co_auto_TP_espace_membre'] == 1
)
{
include_once('../Modele/connexion_sql.php');// connexion à la bdd
$req = $bdd->prepare('SELECT id, pseudo, pass FROM membres WHERE pseudo = :pseudo AND pass = :pass');
$req->execute(array(
'pseudo' => $_COOKIE['pseudo_TP_espace_membre'],
'pass' => $_COOKIE['pass_TP_espace_membre'],
));
$resultat = $req->fetch(PDO::FETCH_OBJ);
if($resultat)
{
session_start();
$_SESSION['pseudo'] = $_COOKIE['pseudo_TP_espace_membre'];
$_SESSION['id'] = $resultat['id'];
echo $_SESSION['pseudo']; // permet de tester que tout à fonctionné, et sera retiré dans la version finale
}
} else { echo '<br><h1>PAS DE COOKIE</h1>';}
?>
et dit nous si le else s'affiche
++
- Edité par christouphe 27 septembre 2016 à 10:38:01
content que tu ais trouvé, j'allais justement te dire de changer le path pcq en faisant un include, tu as remonté ta page a la racine.
Sinon un conseil, fais un
error_reporting(E_ALL);
en haut de ta page
et un display_errors : E_ALL;
dans ton php.ini
les messages d'erreur nous aident
A bientôt
Probleme avec Include
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales