Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème erreurs WARNING dans scripts PHP

11 réponses
Avatar
Pierre
Bonjour,

Tout d'abord désolé de poster ici, mais j'ai envoyé un message dans le forum
fr.comp.lang.php, mais aucun message ne s'affiche depuis hier.

Voici mon problème.
Je m'entraîne à créer un site de vente avec choix de produits dans un
catalogue, puis mémorisation dans un panier virtuel. Jusque là tout va bien
!
Ensuite depuis le panier l'internaute clique sur un bouton COMMANDER et
bascule sur un fichier commande.php qui teste dans un premier temps si
l'utilisateur est déjà identifié sur le site.
Si tel n'est pas le cas, le scipt commande.php fait ouvrir le script
login.php. Et je pense que c'est là que j'ai un problème.
Ce script est composé d'un formulaire avec un champ pour entrer son email
(login) et un champ pour le mot de passe.

Normalement une fois ces éléments entrés, soit l'utilisateur n'est pas
inscrit et s'enregistre via un formulaire d'inscription, soit le script
login.php retourne sur le script commande.php.

Mais lorsque je valide sous login.php après avoir entré l'email et le mot de
passe (ces deux éléments sont déjà intégrés dans une table spécifique de ma
base de données), sous EasyPHP il ne se passe rien ! Je reste sur le
formulaire de login.php

Lorsque j'envois sous Free, j'ai les 2 messages suivants :

-1-
"Warning: session_start(): Cannot send session cache limiter - headers
already sent (output started at
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php:9) in
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php on line 28"

A la ligne 28 j'ai : session_start();

-2-
Warning: Cannot modify header information - headers already sent by (output
started at /var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php:9) in
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php on line 35

A la ligne 35 j'ai : header("Location:commande.php");


Voici le script total :
----------------------------------------------------------------------------
------------------
<?php
//initialisation des variables
if (!isset($HTTP_POST_VARS['valider'])) $HTTP_POST_VARS['valider']="";
if (!isset($HTTP_POST_VARS['pass'])) $HTTP_POST_VARS['pass']="";
if (!isset($HTTP_POST_VARS['email']))$HTTP_POST_VARS['email']="";
if (!isset($erreurlog)) $erreurlog=0;
?>

<?php require_once('../Connections/id.php'); ?> // paramètres de connexion à
la base

<?php
$colpass_rsLogin = "0";
if (isset($HTTP_POST_VARS['pass'])) {
$colpass_rsLogin = (get_magic_quotes_gpc()) ? $HTTP_POST_VARS['pass'] :
addslashes($HTTP_POST_VARS['pass']);
}
$colemail_rsLogin = "0";
if (isset($HTTP_POST_VARS['email'])) {
$colemail_rsLogin = (get_magic_quotes_gpc()) ? $HTTP_POST_VARS['email'] :
addslashes($HTTP_POST_VARS['email']);
}
mysql_select_db($database_id, $id);
$query_rsLogin = sprintf("SELECT clients.email, clients.pass,
clients.statut, clients.ID FROM clients WHERE email='%s' AND pass='%s'",
$colemail_rsLogin,$colpass_rsLogin);
$rsLogin = mysql_query($query_rsLogin, $id) or die(mysql_error());
$row_rsLogin = mysql_fetch_assoc($rsLogin);
$totalRows_rsLogin = mysql_num_rows($rsLogin);
?>

<?php
if ($HTTP_POST_VARS['valider']=="ok")
{
session_start(); // Ca c'est la ligne 35!
$statut=$row_rsLogin['statut'];
$clientID=$row_rsLogin['ID'];
if ($row_rsLogin['statut']=="client")
{
$HTTP_SESSION_VARS['statut']=$row_rsLogin['statut'];
$HTTP_SESSION_VARS['clientID']=$row_rsLogin['ID'];
header("Location:commande.php"); // Et ca la ligne 38
}
else
{
$erreurlog=1;
}
}
?>
----------------------------------------------------------------------------
---------------------------------------------

Quelqu'un pourrait-il m'expliquer ce que signifie ces messages d'erreurs ?
Je n'y comprends plus rien !

Merci d'avance !!
Pierre

10 réponses

1 2
Avatar
Pierre
Petite précision :

J'ai bien un session_start(); en début de ma page commande.php
Pour la page login, si j'enlève le sessions_start(); présent à la ligne 35,
et que je le place en tout début de script, j'ai le message d'erreur suivant
sous Free :

Warning: Cannot modify header information - headers already sent by (output
started at /var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php:10) in
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php on line 36

A la ligne 36 j'ai : A la ligne 35 j'ai : header("Location:commande.php");

Et sous EasyPHP, toujours pareil ! Je reste sur ma page login !!!
Au secours !!!
Pierre



"Pierre" a écrit
Bonjour,

Tout d'abord désolé de poster ici, mais j'ai envoyé un message dans le


forum
fr.comp.lang.php, mais aucun message ne s'affiche depuis hier.

Voici mon problème.
Je m'entraîne à créer un site de vente avec choix de produits dans un
catalogue, puis mémorisation dans un panier virtuel. Jusque là tout va


bien
!
Ensuite depuis le panier l'internaute clique sur un bouton COMMANDER et
bascule sur un fichier commande.php qui teste dans un premier temps si
l'utilisateur est déjà identifié sur le site.
Si tel n'est pas le cas, le scipt commande.php fait ouvrir le script
login.php. Et je pense que c'est là que j'ai un problème.
Ce script est composé d'un formulaire avec un champ pour entrer son email
(login) et un champ pour le mot de passe.

Normalement une fois ces éléments entrés, soit l'utilisateur n'est pas
inscrit et s'enregistre via un formulaire d'inscription, soit le script
login.php retourne sur le script commande.php.

Mais lorsque je valide sous login.php après avoir entré l'email et le mot


de
passe (ces deux éléments sont déjà intégrés dans une table spécifique de


ma
base de données), sous EasyPHP il ne se passe rien ! Je reste sur le
formulaire de login.php

Lorsque j'envois sous Free, j'ai les 2 messages suivants :

-1-
"Warning: session_start(): Cannot send session cache limiter - headers
already sent (output started at
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php:9) in
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php on line 28"

A la ligne 28 j'ai : session_start();

-2-
Warning: Cannot modify header information - headers already sent by


(output
started at /var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php:9) in
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php on line 35

A la ligne 35 j'ai : header("Location:commande.php");


Voici le script total :
--------------------------------------------------------------------------


--
------------------
<?php
//initialisation des variables
if (!isset($HTTP_POST_VARS['valider'])) $HTTP_POST_VARS['valider']="";
if (!isset($HTTP_POST_VARS['pass'])) $HTTP_POST_VARS['pass']="";
if (!isset($HTTP_POST_VARS['email']))$HTTP_POST_VARS['email']="";
if (!isset($erreurlog)) $erreurlog=0;
?>

<?php require_once('../Connections/id.php'); ?> // paramètres de connexion


à
la base

<?php
$colpass_rsLogin = "0";
if (isset($HTTP_POST_VARS['pass'])) {
$colpass_rsLogin = (get_magic_quotes_gpc()) ? $HTTP_POST_VARS['pass'] :
addslashes($HTTP_POST_VARS['pass']);
}
$colemail_rsLogin = "0";
if (isset($HTTP_POST_VARS['email'])) {
$colemail_rsLogin = (get_magic_quotes_gpc()) ? $HTTP_POST_VARS['email']


:
addslashes($HTTP_POST_VARS['email']);
}
mysql_select_db($database_id, $id);
$query_rsLogin = sprintf("SELECT clients.email, clients.pass,
clients.statut, clients.ID FROM clients WHERE email='%s' AND pass='%s'",
$colemail_rsLogin,$colpass_rsLogin);
$rsLogin = mysql_query($query_rsLogin, $id) or die(mysql_error());
$row_rsLogin = mysql_fetch_assoc($rsLogin);
$totalRows_rsLogin = mysql_num_rows($rsLogin);
?>

<?php
if ($HTTP_POST_VARS['valider']=="ok")
{
session_start(); // Ca c'est la ligne 35!
$statut=$row_rsLogin['statut'];
$clientID=$row_rsLogin['ID'];
if ($row_rsLogin['statut']=="client")
{
$HTTP_SESSION_VARS['statut']=$row_rsLogin['statut'];
$HTTP_SESSION_VARS['clientID']=$row_rsLogin['ID'];
header("Location:commande.php"); // Et ca la ligne 38
}
else
{
$erreurlog=1;
}
}
?>
--------------------------------------------------------------------------


--
---------------------------------------------

Quelqu'un pourrait-il m'expliquer ce que signifie ces messages d'erreurs ?
Je n'y comprends plus rien !

Merci d'avance !!
Pierre


Avatar
Pierre Goiffon
Pierre wrote:
Warning: Cannot modify header information - headers already sent by (output
started at /var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php:10) in
/var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php on line 36

A la ligne 36 j'ai : A la ligne 35 j'ai : header("Location:commande.php");

Et sous EasyPHP, toujours pareil ! Je reste sur ma page login !!!
Au secours !!!



Vous avez déjà renvoyé du HTML au navigateur, et vous essayez de
modifier quelque chose qui est dans l'entête de la réponse. Ce n'est pas
cohérent...
Alors, soit vous supprimez tout contenu envoyé avant vos header(...) (ça
peut être un simple saut de ligne), soit vous utilisez les
fonctionnalités de buffer de votre serveur.
Avatar
Pierre
"Pierre Goiffon" a écrit
Vous avez déjà renvoyé du HTML au navigateur, et vous essayez de
modifier quelque chose qui est dans l'entête de la réponse. Ce n'est pas
cohérent...
Alors, soit vous supprimez tout contenu envoyé avant vos header(...) (ça
peut être un simple saut de ligne), soit vous utilisez les
fonctionnalités de buffer de votre serveur.



Je ne comprends pas ce que j'ai déjà "envoyé" au navigateur ?
Car avant le header("Location:commande.php"); je n'ai que du code PHP, pas
de HTML ?

Merci
Pierre

Pierre wrote:


> Warning: Cannot modify header information - headers already sent by


(output
> started at /var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php:10) in
> /var/www/free.fr/0/4/bjorken/auger/bancoG_FR/login.php on line 36
>
> A la ligne 36 j'ai : A la ligne 35 j'ai :


header("Location:commande.php");
>
> Et sous EasyPHP, toujours pareil ! Je reste sur ma page login !!!
> Au secours !!!
Avatar
Pierre Goiffon
Pierre wrote:
Je ne comprends pas ce que j'ai déjà "envoyé" au navigateur ?
Car avant le header("Location:commande.php"); je n'ai que du code PHP, pas
de HTML ?



Si vous avez quelques chose comme cela :

----8<----8<----

<?php
header("Location:commande.php")
?>
----8<----8<----

Le 1er retour chariot avant le <?php est du contenu envoyé au navigateur...

Mais bref, ce groupe n'est pas adapté pour parler de PHP.
Avatar
EspaceTrain
Salut,

Mais bref, ce groupe n'est pas adapté pour parler de PHP.



Il y a :
- fr.comp.lang.php : modéré
- alt.fr.comp.lang.php : libre
--
EspaceTrain
Prochain arrêt : Mars
Merci de ne laisser aucuns bagages dans les voitures
Avatar
loufoque
Pierre a dit le 29/12/2004 à 13:34:
Je ne comprends pas ce que j'ai déjà "envoyé" au navigateur ?
Car avant le header("Location:commande.php"); je n'ai que du code PHP, pas
de HTML ?



La preuve que non.
Si un message d'erreur vous dit que vous avez déjà envoyé les entêtes,
c'est que vous les avez déjà envoyées. Il n'y a pas de fumée sans feu.
Avatar
Peter Pan
Pierre wrote:
Je ne comprends pas ce que j'ai déjà "envoyé" au navigateur ?
Car avant le header("Location:commande.php"); je n'ai que du code PHP, pas
de HTML ?



Si vous nous faites voir votre code (juste avant) on pourra vous aider.
Pensez aux include/require précédant le header(), donc au contenu des
fichiers éventuellement inclus, par exemple.
En l'état, comme dit Loufoque, il n'y a pas de fumée sans en-tête ;-)

--
Pierre
http://www.1966.fr/
Avatar
Pierre
"Peter Pan"
Si vous nous faites voir votre code (juste avant) on pourra vous aider.
Pensez aux include/require précédant le header(), donc au contenu des
fichiers éventuellement inclus, par exemple.
En l'état, comme dit Loufoque, il n'y a pas de fumée sans en-tête ;-)



Je transfert mon message sur alt.fr.comp.lang.php comme il semble que je ne
sois pas dans le bon forum !
Merci en tout cas pour ces premières réponses !

Pierre

Pierre wrote:
> Je ne comprends pas ce que j'ai déjà "envoyé" au navigateur ?
> Car avant le header("Location:commande.php"); je n'ai que du code PHP,


pas
> de HTML ?


--
Pierre
http://www.1966.fr/
Avatar
Pierre Goiffon
Pierre wrote:
Je transfert mon message sur alt.fr.comp.lang.php comme il semble que je ne
sois pas dans le bon forum !
Merci en tout cas pour ces premières réponses !



Merci à vous de ce transfert.
Bonne continuation !

(et tant qu'à continuer dans le hors-sujet, vous devriez essayer OE
QuoteFix : http://home.in.tum.de/~jain/software/oe-quotefix/)
Avatar
Nicolas Krebs
Pierre écrivit dans l'article
news:41d25e8d$0$29664$

Date: Wed, 29 Dec 2004 08:36:40 +0100

Bonjour,

Tout d'abord désolé de poster ici, mais j'ai envoyé un message dans le forum
fr.comp.lang.php, mais aucun message ne s'affiche depuis hier.



Et news:41d25ee4$0$1321$ c'est quoi ?
(qui contient « X-Original-Date: Wed, 29 Dec 2004 08:38:05 +0100 »
et « Date: 29 Dec 2004 10:54:09 GMT »)

Article publié dans fr.comp.infosystemes.www.auteurs, fr.comp.lang.php,
fr.usenet.divers, répondre dans un seul forum de préférence.

Annexes :
« fr.comp.lang.php Le langage PHP Hypertext Preprocessor. (Moderated) »
« Archive-Name: fr/chartes/comp.lang.php »
1 2