erreur de cookie mais ou ?

poak
Invité n'ayant pas de compte PHPfrance

28 nov. 2006, 18:28

voivi mon code
lerreur est la suivante :
Warning: Cannot modify header information - headers already sent by (output started at /var/www/21/g/l/o/globanet.fr/www/DevisManager/update.php:1) in update.php on line 60

(je vous indique la ligne 60

  // On lit le cookie
$protect=@$_COOKIE["passe6"];

// si vide >> niveau 4
if($protect=="") $protect="5";


// Privée pour le niveau 1
if($protect<"4") { 


include("connect.php");

$oreq=@$_COOKIE["req"];
if($oreq!='')
{


//print $oreq;
$req = mysql_query($oreq) or die ("erreur sql ".mysql_error()); // on sélectionne les colonnes id,date,prenom,email de la table test_tbl

}
else
{
	if($protect=="2") 
	{
	$nom=@$_COOKIE["log1"];
	
	$req = mysql_query("SELECT nom,prenom from menbres where login='".$nom."';") or die ("erreur sql ".mysql_error()); // on sélectionne les colonnes id,date,prenom,email de la table test_tbl
	$resultat = mysql_fetch_array($req);
	$name=$resultat[prenom].' '.$resultat[nom];
	
	
	$req = mysql_query("SELECT date,n_devis,montant_ht,montant_ttc,marge,client,n_commercial,validation,type from devis where  n_commercial='".$name."' ORDER BY n_devis DESC") or die ("erreur sql ".mysql_error()); // on sélectionne les colonnes id,date,prenom,email de la table test_tbl
	
	$nreq="SELECT date,n_devis,montant_ht,montant_ttc,marge,client,n_commercial,validation,type from devis where  n_commercial='".$name."' ORDER BY n_devis DESC";
	}
	elseif($protect=="3") 
	{
	$nom=@$_COOKIE["log1"];
	$req = mysql_query("SELECT nom,prenom from menbres where login='".$nom."';") or die ("erreur sql ".mysql_error()); // on sélectionne les colonnes id,date,prenom,email de la table test_tbl
	$resultat = mysql_fetch_array($req);
	$name=$resultat[prenom].' '.$resultat[nom];
	
	
	
	$req = mysql_query("SELECT date,n_devis,montant_ht,montant_ttc,marge,client,n_commercial,validation,type from devis where  n_commercial='".$name."' ORDER BY n_devis DESC") or die ("erreur sql ".mysql_error()); // on sélectionne les colonnes id,date,prenom,email de la table test_tbl
	
	$nreq="SELECT date,n_devis,montant_ht,montant_ttc,marge,client,n_commercial,validation,type from devis where  n_commercial='".$name."' ORDER BY n_devis DESC";
	
	}
	else
	{
	include("reqsel.php");
	
	$req = mysql_query($requete) or die ("erreur sql ".mysql_error()); // on sélectionne les colonnes id,date,prenom,email de la table test_tbl
	$nreq=$requete1;
	}
//pour afficher on se sert de 2 fonctions, une boucle while() et mysql_fetch_array() qui regroupe les données de la requête dans un tableau associatif
}
header("location:" .$_SERVER["PHP_SELF"]);
setcookie("req",$nreq); \\LIGNE 60 ERREUR ???


Mammouth du PHP | 1776 Messages

28 nov. 2006, 18:50

Tu dois avoir un affichage HTML avant cette ligne, ce qui provoque ce soucis. Un cookie ne peut être déclaré après que du texte ait été affiché, ou même un espace...

Invité
Invité n'ayant pas de compte PHPfrance

28 nov. 2006, 18:57

nan j'ai mit ici l'ensemble de mon code et je n'est pas trouver le moindre code html meme dans mes pages include.

Merci qd meme

Eléphant du PHP | 87 Messages

28 nov. 2006, 19:05

A mon avis c'est
include("connect.php");
qui pose probleme c'est considéré comme une sortie vu qu'on va chercher
les parametres d'accés a la base sur un fichier externe
rééssaye en supprimant le include et en mettant directement
les parametres de connexion dans ton code
J'ai eu le meme soucis.

Mammouth du PHP | 1776 Messages

28 nov. 2006, 19:11

Que contient include("reqsel.php"); ?

ViPHP
ViPHP | 3607 Messages

29 nov. 2006, 00:13

nan j'ai mit ici l'ensemble de mon code et je n'est pas trouver le moindre code html meme dans mes pages include.

Merci qd meme
m'est avis que tout le code n'est pas là, il manque quelques lignes, et notamment la ligne qui contient <?php
et peut-être même qu'au dessus de cette ligne, il y a une petite ligne vide ?

poak
Invité n'ayant pas de compte PHPfrance

29 nov. 2006, 11:14

reqsel contient ceci :
$comm = $_GET["nomcom"];
$client = $_GET["nomclient"];
 
$date1= "20".$_POST[annee]."-".$_POST[mois]."-".$_POST[jour]; 
$date2="20".$_POST[annee1]."-".$_POST[mois1]."-".$_POST[jour1];
$requete="SELECT .......";
$requete1="SELECT .......";

if(isset($_POST['1']))        $requete .=" and n_commercial like '%".$_POST[nomcom]."%'";else $_POST[nomcom]='';

if(isset($_POST['2']))       $requete .=" and client='".$_POST[nomclient]."'";else $_POST[nomclient]='';

if(isset($_POST['valid']))       $requete .=" and  validation is not null ";else $vvalid='non';

if(isset($_POST['3']))        $requete .=" and date BETWEEN '".$date1."' AND '".$date2."'"; else $ddate='non';



$requete.=' ORDER BY n_devis DESC';
$requete1=$requete;

et non je n'ai pas trouver d'espace .

Pour répondre a celui plus Haut j'ai besoin de la connection sql, donc meme si ca marche sans, ca ne m'interresse pas ! Merci qd meme

Eléphanteau du PHP | 10 Messages

29 nov. 2006, 11:18

Ligne 59 tu as envoyé des en-têtes avec la fonction header(). Désactive-la pour tester si c'est ça ;)
Darth Killer, the only one...

Eléphant du PHP | 87 Messages

29 nov. 2006, 12:05

soit tu affiche directement tes parametres variable ou constante de connexion du style
define ('NOM',"");
define ('PASSE',"mot de passe");
define ('SERVEUR',"localhost");
define ('BASE',"");
et ta fonction pour se connecter

Soit tu mets ces parametres directement dans ton code
ex:
$connexion = mysql_pconnect ("localhost","le nom de ta table","le mot de passe");
etc
tu pourras te connecter a ta base sans include a la limite remplace include par require_once en 1er pour voir
c'est cette include qui plante ou l'autre
c'est clair que le pb vient d'un include
refais le script sans eux pour voir
certes du point de vue sécurité c'est pas top
tu inseres directement dans ton script le code contenu dans tes includes .
J'ai eu le meme probleme ça marchait sans include
et donc pour conserver les cookies et les includes j'ai totalement séparé ce qui concerne les cookies et ce qui concerne la connexion à mysql
et refait l'algorythme du script

Eléphanteau du PHP | 10 Messages

29 nov. 2006, 12:50

Moi je vais des includes à gogo, les set-cookies marchent sans aucun blèmes. Par contre jamais je n'ai appelé la fonction header() avant la fonction setcookie() (on exclus le header('Set-cookie: '); hein ?)
Darth Killer, the only one...

Invité
Invité n'ayant pas de compte PHPfrance

29 nov. 2006, 17:11

Dans mes scripts les includes placés avant setcookie provoquent le message d"erreur ci dessus et je ne dois pas etre le seul vu que j'ai epluché la doc concernant ce sujet sur google et la doc ne manque pas...
mais c'est vrai qu'un header avant setcookie peut provoquer la méme chose

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 nov. 2006, 17:18

Ligne 59 tu as envoyé des en-têtes avec la fonction header(). Désactive-la pour tester si c'est ça ;)
Ca parait effectivement assez évident... on a tellement l'habitude de chercher l'espace ou le retour à la ligne qui est envoyé au navigateur et qui empêche le header() de fonctionner, qu'on en oublie que la fonction header() envoi justement elle aussi une entête au navigateur... :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 87 Messages

29 nov. 2006, 18:10

oui c'est peut etre ça mais je viens exprés de faire un script
en plaçant un include avant setcokie et le meme avant un header et:
Warning: Cannot modify header information - headers already sent by (output started at /home/local/apache/htdocs/sites/t/www.jmb.com/Connect.php:6)
in /home/local/apache/htdocs/sites/t/www.jmb.com/envoyer.php on line 26
Vous en pensez quoi? :wink:

Eléphant du PHP | 87 Messages

29 nov. 2006, 18:14

La théorie, c'est quand on sait tout faire, mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici nous avons réussi à réunir théorie et pratique : rien ne fonctionne et personne ne sait pourquoi...
:lol: trop bien dit

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 nov. 2006, 18:23

oui c'est peut etre ça mais je viens exprés de faire un script
en plaçant un include avant setcokie et le meme avant un header et:
Warning: Cannot modify header information - headers already sent by (output started at /home/local/apache/htdocs/sites/t/www.jmb.com/Connect.php:6)
in /home/local/apache/htdocs/sites/t/www.jmb.com/envoyer.php on line 26
Vous en pensez quoi? :wink:
J'en pense surtout que si tu ne nous donne pas le code et si tu ne nous dis pas pour le ou lesquels tu as ce message, on va pas pouvoir en penser grand chose ;)

Sachant que normalement, le include est exécuté comme s'il faisait partie du script qui l'appel (en gros on copie le code à l'endroit ou est fait l'include et ça marche pareil), il n'y a donc aucune raison pour que le include() influe sur le header, le cookie ou la session (qui nécessitent tous 3 qu'aucune entête n'aient été envoyés)
En revanche, suffit qu'il y ait un espace, un retour à la ligne ou autre en dehors des balises <?php ?> (souvent constaté en début ou fin de fichier :)), voire un echo, un print, etc. pour que l'entête soit envoyé...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...