Redirection avec location
après du Xhtml
Discussions Générales
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
Me voila avec un problème de taille sur mes pages persos.
J'ai une redirection à faire (après la vérification de connexion d'un membre pour l'emmener sur la page membre). Problème bien qu'il n'y est pas de html sur cette page, il y a des pages includé (ça ce dit ?
) et celle ci contiennent du html.ma question : Comment faire une redirection alors qu'il y a du xhtml devant..
Si vous voulez la page en question demandez moi.
Merci d'avance !
ps : ma redirection est de type
header("location: liste_news.php");
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
La bufferisation de sortie permet de régler ce problème.
En effet si tu l'actives, lors d'un echo (ou autre fonction qui envoit du texte au navigateur), le texte n'est pas envoyé mais stocké en mémoire, il est ainsi envoyé à la fin de l'exécution de la page. Avec cette astuce tu n'as plus de problèmes avec setcookie ou header

En fait il s'agit d'un problème d'entêtes. Ton navigateur reçoit des informations de la part du serveur, et une fois que le serveur t'a envoyé du texte il ne peut plus modifier les entêtes (qui changent si tu fais une redirection), voilà l'explication rudimentaire.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
Y aurait il moyen d'avoir un exemple
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
[code]<?php
ob_start();
//Tu met tout ton code ici
ob_end_flush();
?> [/code]
A noter que c'est ce système qu'on utilise sur PHPBoost
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
[code]<?php
ob_start();
echo "Bonjourn";
setcookie("nom_du_cookie", "valeur_du_cookie");
ob_end_flush();
?> [/code]
[code]<?php
//On lance la bufferisation (le serveur garde en mémoire ce que tu écris)
ob_start();
//Inclusion du haut de page
include('header.php');
//On peut afficher du texte tant qu'on veut
echo "Bonjourn";
//Cookie ou redirection
setcookie("nom_du_cookie", "valeur_du_cookie");
include('footer.php');
//On envoie au client tout ce qu'il doit recevoir
ob_end_flush();
?> [/code]
En pratique je te conseille de mettre ob_start() en haut de header.php et ob_end_flush() à la fin de ton footer
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
Mais à vrai dire c'est se que j'ai fait , masi ça ne marche pas.
la derniere ligne de mon dernier include est <?php ob_end_flush(); ?>
Et la premiere ligne de ma premiere include est session_start suivie de ob_start.
Voici le code ou il y a ma redirection.
(la redirection est entre les grands espaces)
Mon problème : je me retrouve toujours sur ma page d'index et snas aucun message d'erreur.
[code]
<!–– VERIFICATION DE CONNEXION ––!>
<?php //Si la variable $_SESSION['logged'] n'existe pas on la créée.
if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;
//Inclusion du fichier contenant les identifiants de connexion à la base de données.
require("config.inc.php");
mysql_connect($host,$username,$password);
mysql_select_db($bdd_name);
//Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent.
if (isset($_POST['connexion']) && $_SESSION['logged'] === false)
{
//Vérification des autres variables.
if (!empty($_POST['pseudo']) && !empty($_POST['mot_passe']))
{
//Vérification du pseudo.
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_passe = htmlspecialchars($_POST['mot_passe']);
//Requête comptant le nombre de pseudos $_POST['pseudo']
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
//Si le pseudo existe.
if (mysql_result($sql,0,'nb_pseudo') == 1)
{
//Vérification du mot de passe
//Information sur le compte du membre.
$sql_infos = mysql_query("SELECT id, mot_passe, confirmation FROM membres WHERE pseudo='".$pseudo."'");
$donnees = mysql_fetch_array($sql_infos);
//Hashage du mot de passe.
$mot_passe_hash = md5($mot_passe);
//Comparaison du mot de passe.
if ($mot_passe_hash == $donnees['mot_passe'])
{
//On vérifie que le compte est confirmé.
//Si $donnees['confirmation'] vaut 1.
if ($donnees['confirmation'] == 1)
{
if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on')
{
//Temps d'expiration des cookies (1 an).
$expire = time() + 3600 * 24 * 365;
setcookie('pseudo', $pseudo, $expire);
setcookie('mot_passe', $mot_passe_hash, $expire);
}
//Tout est bon, on connecte le membre.
$_SESSION['logged'] = true;
//Création de 2 variables de session, contenant des informations sur le membre.
$_SESSION['id'] = $donnees['id']; //Id du membre.
$_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
//Redirection vers la page membre.
header("location: liste_news.php");
}
else
echo 'Erreur : le compte n'est pas confirmé !';
}
else
echo 'Erreur : le mot de passe est incorrect !';
}
else
echo 'Erreur : le pseudo n'existe pas !';
}
else
echo 'Erreur : veuillez remplir tous les champs !';
}
//Déconnection de la base de données.
mysql_close();
?>[/code]
En tout cas merci les gars, car ce coup de main m'est précieux et je sias qu'il y a la v2 en cours aussi.
Édité par Snipefire Le 18/02/2007 à 19h51
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
Problème il n'est pas redirigé.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Snipefire Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Snipefire
- Inscrit le : 09/09/2006
Vla le lien, on sait jamais si ça peux aider
http://www.snipy.info/nevrus/index.php
Y a plein de tests en cours alors on s'étonne pas.
Sinon je galère un max avec IE il fait vraiment se qu'il veut....
Édité par Snipefire Le 18/02/2007 à 22h08
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Sinon en ce qui concerne IE je sais de quoi tu parles, ça fait 3 ans qu'on se prend la tête avec CrowkaiT pour essayer de faire des pages compatibles Firefox et IE... Le problème c'est que même avec de l'expérience tu ne peux pas ou presque pas prévoir Internet Explorer.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie