sarril
Messages postés31Date d'inscriptionmardi 4 janvier 2005StatutMembreDernière intervention26 juillet 2021
-
22 juil. 2005 à 21:47
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 2013
-
22 juil. 2005 à 22:59
Bonjour,
j'utilise un formulaire de saisie qui m'envoie sur une page qui teste si une session est active, teste la saisie des champs et fait mes requetes. En cas de sesison inactive, j'ouvre une page de connexion, en cas d'oubli de saisie de champs, ma seconde page renvoie à la première en retournant les champs saisis.
Voici le code simplifié de ma page verif.php:
<?php
session_start();
if (!isset($_SESSION['login']))
{ header('location:connexion.php);exit; }
echo "<html>";
$nom=$HTTP_POST_VARS["nom"];
$prenom=$HTTP_POST_VARS["prenom"];
if ($nom=="")
{ header('location:saisie.php?retour=oui&prenom=$prenom');}
else
{ connexion + requete + deconnexion}
echo "</html>";
?>
lors de mes tests, quand je ne saisie pas de nom, j'ai l'erreur suivante :
WARNING: cannot modify header information - headers already sent by (output started at c:/.../verif.php:12) in c:/.../verif.php on line 28
la ligne 28 correspond à:
header('location:saisie.php?retour=oui&prenom=$prenom');
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 22 juil. 2005 à 22:58
Salut!
La fonction header ne peut pas s'utiliser après qu'une sortie ( html,
echo, print, ... ) ait été effectuée... Une sortie est donc du code
envoyé au navigateur.
La fonction ob_start met les données dans un buffer. Rien n'est
transmis au navigateur à part les entêtes, ca permet donc d'éviter de
se soucier si une sortie a deja été faite ou pas...
on_end_flush(); envoie le tout au navigateur à la fin du script...
Ah oui, il parait aussi que c'est plus rapide, :)
@++
R@f
P.S. Si j'ai fais une erreur, [auteurdetail.aspx?ID=551996 vilhjalms], corrigez-moi....
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 22 juil. 2005 à 22:58
Un echo provoque une sortie en HTML... autrement dit, tu envoies des données au navigateur de ton visiteur.
En appelant une fonction header, tu veux utiliser un paramètre d'en
tête du navigateur de ton visiteur, hors tu es déja passé aux données
(et oui, avec le echo !), donc tu ne peux pas envoyer de header.