Pb header ???

i gore -  
 igor -
bonjour,

je suis en train de faire un site
et j utilise des headers
quand Je travaillais sous windows tout marchait bien, maintenant sous linux lorsque le serveur rencontre un header ca me met comme erreur:

Warning: Cannot modify header information - headers already sent by (output started at /home/HTML/baptiste/librairie/lib_mysql.php3:3) in /home/HTML/baptiste/connexion.php3 on line 11

avez vous une idée ???

PS: la version de php est > à la 4.3

merci

5 réponses

e gore
 
up
0
flokocha Messages postés 1519 Statut Membre 281
 
Elle ressemble à quoi cette ligne 11 ? (et ce qui l'entoure éventuellement ... )

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
 
Salut,
l'erreur vient du fait que tu dois envoyer tous tes headers AVANT de faire tes sorties html. Alors traite tous les headers avant d'envoyer la balise <html>, et ca devrait rouler!

Fat_Cartman,
Parce que je le vaux bien...
0
igor
 
le pb c est que sa marche sous windows .........

voici mes lignes de codes tels quelles et sans commentaire rajouté apres le copier coller:

<?
// fonction mysql_connect et mysql_query
include('./librairie/lib_mysql.php3');
// parametre de connexion
include('./librairie/lib_data.php3');
// verifie les parametres saisies
if (empty($_POST["login"])){
header('Location: index.php3');
}
if (empty($_POST["password"])){
header('Location: index.php3');
}
$login=$_POST["login"];
$mdp=$_POST["password"];
$connexion=connexion($host,$user,$pwd);

// recherche si le client existe et si il est autorisé a avoir acces au site
$requete='select * from client where login=\''.$login.'\' and mdp=\''.crypt($mdp,CRYPT_MD5 ).'\' and droit!=0;';
$reponse=query($dbase,$requete,$connexion);
$data=mysql_fetch_row($reponse);
mysql_close($connexion);

if ($data[0]==''){
// le client n'existe pas
header('Location: index.php3');
}
else{
// le client existe
// construction d'un identifiant unique ( format: [fonction du client]+[jour de la date du jour]+[longueur de id_client]+[id_client]+[identifiant]
$unique=uniqid('',TRUE);
$unique=$data[8].date("d").strlen($data[0]).$data[0].$unique;
if (!$handle = fopen('connexion.txt', 'a')) {
header('Location: index.php3');
}
if (fwrite($handle,$unique."\r\n") === FALSE) {
header('Location: index.php3');
}
fclose($handle);
if ($data[8]==1){
// si le client est root
header('Location: admin/index.php3?log='.$unique);
}
if ($data[8]==2){
// si le client est modo
header('Location: modo/index.php3?log='.$unique);
}
if ($data[8]==3){
// si le client est client
header('Location: index.php3?log='.$unique);
}
}
?>

BON COURAGE et encore merci de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flokocha Messages postés 1519 Statut Membre 281
 
Qu'est-ce que tu veux dire par "ça marche sous Windows" ?
Tu veux dire que ça marche avec un serveur IIS et pas avec Apache ?

Et est-ce que comme le dit fat_cartman tu es bien en dehors de balises html ?

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
i gore
 
ca marche comme ca:

un internaute rempli un formaulaire sur la page précédente,
ce formulaire est envoyé sur la page connexion ( voir ci dessus ). Donc logiquement je suis sur une nouvelle page et je suis en dehors des balises html puisque y en a pas.

la page connexion marche comme ca:
-je fais des import de fonctions
-je teste si le login et le password sont vides ou pas
( si vide je redirige vers l'accueil )
- ensuite je regarde si l'utilisateur existe et a le droit d'acces au site.
- si le résultat de cette requete est vide , je redirige ver l'acccueil
- sinon je redirige sur les pages en fonctions de leur 'fonction' ( root , modo ,client )

sous windows , j'utilise easyphp ( apache, php et mysql )
sous linux , apache php et mysql

je reste a votre disposition pour résoudre ce probleme.

merci d'avance
0
Utilisateur anonyme
 
Eh ben regarde si t'as pas fait d'erreurs comme j'en ai deja faites:
enlève tous les espaces et les sauts de lignes inutiles avant <? et apres ?>, car ces caracteres sont envoyés au navigateur et constituent le corps du fichier html.
Vérifie dans ton fichier principal mais aussi dans les fichiers inclus.

Fat_Cartman,
Parce que je le vaux bien...
0
igor
 
MERCI.

apperement c était un espace dans une de mes librairies, c a l air de marché mais j ai pas encore fait trop de tests.

encore merci.
0