Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/06/2008, 10h16   #1
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
Par défaut include + header = bug

Bonjour,
j'ai un problème avec mon script!
je pense qu'il y a un rapport avec mon include que je mets au début dema page...
sui vous avuez une solution siouplait!
alors voilà mon script:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Liste des entreprises</title>
</head>
<body>
 
<?php
include ('connection.php');
//On envoit les données sur mysql
 
$requete = "UPDATE utilisateur SET valid='1' WHERE id_user='$id' ";
$result = mysql_query ($requete,$idConnexion);
 
 
 
//envoi d'un mail si mail il y a 
 
$query= "select * from utilisateur WHERE id_user=". $id ;
$res= mysql_query ($query,$idConnexion);
$email=mysql_result($res,0,'email');
$login=mysql_result($res,0,'login');
$passe=mysql_result($res,0,'passe');
 
 
    if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || $email!=0)
    {// message à la boite 
require "../log/mime_mail.class.php"; 
 
$mail = new mime_mail(); 
$mail->to = "$email"; // Adresse email de reception 
$mail->subject = "Validation du CFA"; // Sujet 
$mail->body = "Validation "; // Corps du message 
$mail->from = "noreply@stagemploi.org"; // Adresse email de l'expediteur (optionnel) 
$mail->headers = "esther@info.com"; // Return-Path (optionnel)
$mail->send(); // envoi du message
 
	}
 
header('Location: gestion_jeunes.php?deb=0');
 
?>
et
le message d'erreur:
Citation:
Warning: Cannot modify header information - headers already sent by (output started at /home/cfabtpoi/www/admin/valider.php:9) in /home/cfabtpoi/www/admin/valider.php on line 44
-> l.44c'est le header!

info -> cela seulement quad je suis sur le serveur car en local ça marchait impec... :/


merci de vos réponses!
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 10h23   #2
Membre actif
 
Avatar de BlackSmith
 
Inscription : mars 2008
Messages : 181
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : mars 2008
Messages : 181
Points : 186
Points : 186
L'erreur vient du faite que ton header se trouve après ceci.

Code :
1
2
3
4
5
6
7
8
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Liste des entreprises</title>
</head>
<body>
Alors qu'il doit se trouver avant tout chose qui apparait à l'écran, ici avant le doctype.
BlackSmith est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 10h29   #3
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
merci d'avoir répondu!

j'ai lu la doc de php et de dev. donc j'ai vu qu' on ne devait pas mettre de code avant header et tout ça et tout ça mais alors pourquoi en local ça marchait?
et comment je fais pour exécuter un code puis retourner sur une page si je ne peux pas faire header ???
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 11h29   #4
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
tu te sert du header pour rediriger l'utilisateur ?

si c'est le cas, ce n'est pas mais


Code :
1
2
3
4
<?php 
header('Refresh: 10; url=http://www.mysite.com/otherpage.php');
echo 'You will be redirected in 10 seconds';
?>
et ceci a la premiere ligne de ton script, rien avant
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 11h54   #5
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
oui mais si je veux d'abord enregister des données dans ma bdd???
comment je peux faire?

en tout cas merci d'avoir répondu!
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 11h58   #6
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
et bien il n'y a pas de probleme avec le refresh, vu qu'il va finir la page et au bout des 10 secondes en charger une nouvelle
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 13h33   #7
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
j'ai essayé avec le refresh mais j'ai le même problème..
:/
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 13h38   #8
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Tu peux faire tout ce que tu veux comme traitement avant ton header('location...'); tant qu'il ne s'agit pas d'affichage ou d'envoi de headers.
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h06   #9
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
merci Sylvain71 c'est bien ce que je pensais donc normalement je peux enregistrer dans ma bdd sans que cela gêne si j'ai bien compris??
-> en fait en local ou sur un serveur avec easyphp ça marchait mais maintenant que je suis sur ovh problème!
-> j'ai demandé si ils avaient déjà eu des prob avec les includes et la réponse est non..
-> donc il faut que je regarde du coté du .ini mais en fait
1)aucune idée de comment changer le .ini sur ovh(par 1 .htaccess..oui j'veux bien mais ça veut dire quoiiiii )
2) que changer ds le .ini pour que ma redirection se fasse!!!


si vous savez svp!

merci!

-> je sais pas si le fait que je parle d'ovh soit 1 problème si oui dites le moi j'éditerais!
merci !
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h12   #10
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Non non tu ne réagis pas comme il faut.

Ton code n'est pas bon mais il marche sur certaines configurations à cause du laxisme de de PHP. Se reposer là dessus ne t'apportera que des problèmes. La preuve ...

Ce qu'il faut faire c'est corriger ton code pour ne plus avoir de header qui se ballade n'importe où (commencer par séparer traitements et mise en page) et coder avec les options de configuration les plus stricts possibles.
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h20   #11
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
bon ok alors là j'm'y perds..
pas que je soit de mauvaise volonté hein!
mais bon...
comment je peux faire pour que ma page soit rediriger sachant que là actuellement quand dans une page j'ai
-include('connection.php');
-requête sql
-redirection par header

1 mes données s'enregistrent
2 ma redirection plante

qu'est ce qu'il faut que je change dans mon code pour que ce *%&$£$ () de site soit actif???

encore une fois merc de vos réponses!!
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h28   #12
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Pour ne pas que la fonction header plante (ou plutôt t'envoie un warning), il ne faut pas que le moindre affichage soit fait avant elle. Affiche ça veut dire : une balise html, un echo php, un espace, un saut de ligne en début de fichier ...

En fait je dirais même ta page ne sert carrément à rien là.
Tu vas facilement comprendre l'absurdité de ce bout de code avec cette question :
Pourquoi tu affiches de l'html sachant que tu rediriges tout de suite après et que l'utilisateur ne le verra pas ?
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h31   #13
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
bon bah sinon n'utilise pas les header PHP, mais les header html
comme ca plus de soucis




Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<META HTTP-EQUIV="Refresh" CONTENT="3; URL=./gestion_jeunes.php?deb=0">
<title>Liste des entreprises</title>
</head>
<body>
 
<?php
include ('connection.php');
//On envoit les données sur mysql
 
$requete = "UPDATE utilisateur SET valid='1' WHERE id_user='$id' ";
$result = mysql_query ($requete,$idConnexion);
 
 
 
//envoi d'un mail si mail il y a 
 
$query= "select * from utilisateur WHERE id_user=". $id ;
$res= mysql_query ($query,$idConnexion);
$email=mysql_result($res,0,'email');
$login=mysql_result($res,0,'login');
$passe=mysql_result($res,0,'passe');
 
 
    if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || $email!=0)
    {// message à la boite 
require "../log/mime_mail.class.php"; 
 
$mail = new mime_mail(); 
$mail->to = "$email"; // Adresse email de reception 
$mail->subject = "Validation du CFA"; // Sujet 
$mail->body = "Validation "; // Corps du message 
$mail->from = "noreply@stagemploi.org"; // Adresse email de l'expediteur (optionnel) 
$mail->headers = "esther@info.com"; // Return-Path (optionnel)
$mail->send(); // envoi du message
	
	}
?>
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h31   #14
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
et bien je n'affiche pas de l'html.. :/
enfin là maintenant dans mon code j'ai enlevé tout ce qui était meta et tout et tout..
tout ce qui me reste c'est
<?php
include('connection.php');
//puis mes requetes sql
/puis mon header

?>

il est où le problème??
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h38   #15
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Citation:
et bien je n'affiche pas de l'html.. :/
Code :
1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Liste des entreprises</title>
</head>
<body>
 
<?php
include ('connection.php');
:')


Citation:
tout ce qui me reste c'est
<?php
include('connection.php');
//puis mes requetes sql
/puis mon header

?>
Es tu sûr qu'il n'y a aucun espace, saut de ligne, rien du tout avant ton <?php ??
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h42   #16
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
oui euh...
depuis mon premier post je les avais enlevé aprés avoir lu le manuel..
et pour les espaces nan le <?php
est juste au tout tout tout au début de ma page...
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h46   #17
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Fait un copier coller de ton code entier parce que là du coup on sait plus trop ce qu'il reste.
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h49   #18
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
include('connection.php3');
 
						$datedujour=date("j/m/Y");
						$nom_entreprise = addslashes($nom_entreprise);
						$contact = addslashes($contact);
						$adresse = addslashes($adresse);
						$ville = addslashes($ville);
						$email = addslashes($email);
						$formation = addslashes($formation);
						$experience = addslashes($experience);
						$salaire = addslashes($salaire);
						$horaires = addslashes($horaires);
						$info = addslashes($info);						
 
 
		$requete = "INSERT INTO offres ( date, nom_entreprise, contact, adresse , code_postal, ville, tel, email, fap, qualification, experience, permis, date_debut, salaire, horaires, type_contrat, info) VALUES('$datedujour', '$nom_entreprise', '$contact', '$adresse', '$code_postal', '$ville', '$tel', '$email', '$fap', '$formation', '$experience', '$permis', '$date_debut',  '$salaire', '$horaires', '$type_contrat', '$info' )";
		$result = mysql_query ($requete,$idConnexion);
		$resultat_sql3 = mysql_query("select * from fap  where classe='$fap' ",$idConnexion);
        $name = mysql_result($resultat_sql3,0,"lib_fap");
 
 
		$query = mysql_query( "INSERT INTO entreprise ( date, nom_entreprise, contact, adresse, code_postal, ville, tel, email,fap) VALUES('$datedujour', '$nom_entreprise', '$contact', '$adresse', '$code_postal', '$ville', '$tel', '$email','$fap')"); 
 
 
				// recuperation de l'email du conseiller
	$resultat_texte = mysql_query("select email_conseiller from parametrage where statut='1' ",$idConnexion);
	$i = 0;
	$mail_user = mysql_result($resultat_texte,$i,"email_conseiller");
				// message à la boite 
	require "mime_mail.class.php"; 
	$mail = new mime_mail(); 
	$mail->to = "$mail_user"; // Adresse email de reception
	$mail->subject = "Nouvelle offre d'une entreprise publiée sur le site"; // Sujet 
	$mail->body = "OFFRE D'EMPLOI\n\n Structure: $nom_entreprise\n Famille de métier concernée: $name "; // Corps du message 
	$mail->from = "noreply@cfa.fr"; // Adresse email de l'expediteur (optionnel) 
	$mail->headers = "esther@pulsar-informatique.com"; // Return-Path (optionnel)
	$mail->send(); // envoi du message
 
 
 header ('Location: fin_offre.php');
 
?>
voilà le code tout entier!

et si vraiment vous êtes à fond dedans l'adresse est ici
vous m'êtez n'importe quoi et là quand vous appuyez sur envoyer c'est sur la page du dessus qu'on atterit!


franchement merci beaucoup de prendre tout ce temps !!
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h52   #19
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Comme très souvent, la solution est dans le message d'erreur
Cannot modify header information - headers already sent by (output started at /home/cfabtpoi/www/connection.php3:6)

connection.php3 : ligne 6 : affichage de quelque chose
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h56   #20
Invité régulier
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 26
Points : 6
Points : 6
oui mais non car j'ai fait une page test pour voir si justement le problème ne venait pas de mes identifiants de connection et donc avec mon code de connection.php3 je peux créer une page...
maispar contre je suis en train de me demander si le php3 ne pourrait pas les gêner??
mais bon j'ai plein de fichier qui plante et pourtant le fichier est en .php...
alors bon..
j'vais changer le .php3...
esti89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h09.


 
 
 
 
Partenaires

Hébergement Web