WARNING header chez free

Résolu
Lucie -  
 Lucie - 28 mai 2010 à 15:03
Bonjour,

Alors je viens de tester mon site sur FREE. Mais j'ai ce problème lorsque je m'identifie:

Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sdc/9/f/mywebsite/test/admin/init.php:70) in /mnt/169/sdc/9/f/mywebsite/test/admin/ on testlogadmin.php line 38 


Voilà ce qu'il y a à la ligne 38 de ma page testlogadmin.php:

  
34.   if ($passB == "admin"){ 
35.   //header('location:definir_pass.php'); 
36.  } 
37.  else if ($statut == "admin"){ 
38.   header('location:index_admin.php');        
39.  } 
40.  else{ 
41.   header('location:log_admin.php'); 
42. } 
43. } 
44. else 
41. { 
46.  header('location:log_admin.php'); 
47. } 
48. mysql_close();  
49. ?>


De l'aide?


A voir également:

13 réponses

briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
Ici
Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sdc/9/f/mywebsite/test/admin/init.php:70) in /mnt/169/sdc/9/f/mywebsite/test/admin/testlogadmin.php on line 38

Le message est clair, il y a un code qui renvoi du html à la ligne 38 tel que echo, print, ou même un code html brut, il faut l'enlever
1
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Il y a du texte qui sort avant l'appel à la fonction header().
Si tu es en UTF-8, vérifie que ce soit « sans BOM ».
0
Lucie
 
J'ai vérifié, UFT-8 SANS BOM, mais toujours l'erreur suivante:

Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sdc/9/f/mywebsite/test/admin/init.php:70) in /mnt/169/sdc/9/f/mywebsite/test/admin/testlogadmin.php on line 38


Pourtant ça fonctionne parfaitement sous EasyPHP...
0
Lucie
 
J'ai également des problèmes de WARNING avec session_start();
0

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

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Alors tu as du texte affiché avant l'appelle à session_start() (ou header(), et ça doit faire pareil avec setcookie()).
0
Lucie
 
D'accord, j'ai pigé pour le session_start(), problème résolu.
Mais toujours un problème avec mon header:

26.if ($row=mysql_fetch_object($res)) 
27.{ 
28. $loginB=$row->login; 
29. $passB=$row->password; 
30. $_SESSION['sess_admin'] = "admin"; 
31. $statut="admin"; 
32.  
33. header('location:index_admin.php'); 
34.} 
35.else 
36.{ 
37. header('location:log_admin.php'); 
38.} 
39.?>


Erreur:

Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sdc/9/f/mysiteweb/test/admin/init.php:70) in /mnt/169/sdc/9/f/mysiteweb/test/admin/testlogadmin.php on line 33


Je vois pas quel problème il y a avec mon header.

Et j'ai ce message quand je passe par mon else de la ligne 35:

Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sdc/9/f/mysiteweb/test/admin/init.php:70) in /mnt/169/sdc/9/f/mysiteweb/test/admin/testlogadmin.php on line 37


Voilà...
0
briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
Une question:
La page qui contient ce code, est ce qu'elle contient d'autre codes ?
Je voualais savoir si tu peux utiliser
include ('index_admin.php');
0
Lucie
 
Je comprends pas pourquoi mettre un include ('index_admin.php');

Voilà ma page en entier:

<?php
session_start();

require 'init.php';

if (isset ($_POST['log']))
{
	$loginA=$_POST['log'];
}

if (isset ($_POST['mdp']))
{
	$passA=$_POST['mdp'];
}

$connect_db = connect(); 

$req = "SELECT * FROM admin_tab WHERE login='$loginA' and mdp='$passA';";
$res = mysql_query($req,$connect_db);

if ($row=mysql_fetch_object($res))
{
	$loginB=$row->login;
	$passB=$row->password;
	$_SESSION['sess_admin'] = "admin";
	$statut="admin";
	
	header('location:index_admin.php');
}
else
{
	header('location:log_admin.php');
}
?>


En gros je récupère le login et le mot de passe entré, je récupère le login et le mot de passe dans la base de données, s'il existe je redirige vers l'index, si non, je recharge la page servant à s'identifier.
0
briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
Pour ma part je te conseille d'include tes pages:

<?php
session_start();

require 'init.php';
$connect_db = connect();
if (isset ($_POST['log']) && isset ($_POST['mdp']))
{
$loginA=$_POST['log'];
$passA=$_POST['mdp'];

$req = "SELECT * FROM admin_tab WHERE login='$loginA' and mdp='$passA';";
$res = mysql_query($req,$connect_db);

if ($row=mysql_fetch_object($res))
{
$loginB=$row->login;
$passB=$row->password;
$_SESSION['sess_admin'] = "admin";
$statut="admin";

include('index_admin.php');
}
else
{
include('log_admin.php');
}

}
?>

Mais cette solution est seulement si le fichier init.php ne contient pas du html
Autre chose, j'ai optimisé un peu tpon code.
Reviens vers moi si tu veux une autre solution
0
Lucie
 
Merci briiiiix.

J'ai testé avec des include mais ça marche pas. C'est sensé servir de redirection aussi? Comme le header?

Voilà les erreurs obtenues:

Warning: main(location:index_admin.php) [function.main]: failed to open stream: No such file or directory in /mnt/169/sdc/9/f/mysiteweb/test/admin/testlogadmin.php on line 33

Warning: main() [function.include]: Failed opening 'location:index_admin.php' for inclusion (include_path='/mnt/169/sdc/9/f/mysiteweb/include:.:/usr/php4/lib/php') in /mnt/169/sdc/9/f/mysiteweb/test/admin/testlogadmin.php on line 33


J'arrête pour cette nuit, je reprends demain!

Je veux bien voir le code optimisé, puis j'aimerai que ces redirections fonctionnent...

Merci pour l'aide et à demain j'espère!

Bonne nuit!
0
briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
C clair que tes fichiers index_admin.php et login_admin.php ne sont pas dans le même dossier du fichier contenant le code, est ce que tu veux une redirection a l'aide de javascript ?
0
Lucie
 
Bonjour!

Javascript pourquoi pas, je veux juste que ça fonctionne. Mes headers n'ont pas de problèmes avec EasyPHP!
0
briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
D'apres le dernier message d'erreur du code que je t'ai envoyé.

Warning: main(location:index_admin.php) [function.main]: failed to open stream: No such file or directory in /mnt/169/sdc/9/f/mysiteweb/test/admin/testlogadmin.php on line 33

le fichier index_admin.php n'est pas trouvé dans le même dossier que celui du fichier contenant le script.
Commence par resoudre ça,, avant de pouvoir faire la redirection, puis revien vers moi
0
Lucie
 
Ben si c'est tout situé dans le même dossier, que j'ai appelé "admin".
0
briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
Alors une solution un peu tirée par les cheveux mais qui fonctionne déjà:

//*****************************************
<?php
session_start();

require 'init.php';
$connect_db = connect();
if (isset ($_POST['log']) && isset ($_POST['mdp']))
{
$loginA=$_POST['log'];
$passA=$_POST['mdp'];

$req = "SELECT * FROM admin_tab WHERE login='$loginA' and mdp='$passA';";
$res = mysql_query($req,$connect_db);

if ($row=mysql_fetch_object($res))
{
$loginB=$row->login;
$passB=$row->password;
$_SESSION['sess_admin'] = "admin";
$statut="admin";?>
<script>
window.location = 'index_admin.php';
</script>
<?php }
else
{?>
<script>
window.location = 'login_admin.php';
</script>
<?php
}

}
?>

//*************************
Je repete, cette solution est maladroite mais qui tourne comme même
0
Lucie
 
Oké, ça marche. Un peu loufoque mais ça marche.
J'ai toujours pas compris pourquoi le header location ne fonctionnait pas, mais bon!
C'est compliqué décidément!

Merci beaucoup pour cette solution.

J'ai encore des erreurs mais celles là je pense pouvoir les résoudre.
0
Lucie
 
J'ai d'autres header:location sur les autres pages, je dois tout remplacer par ta solution?
0
briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
Du moment ou tu as une fonction qui genere du contenu sur la page située avant le header:location tu auras cette erreur, si tu veux d'autres solutions fais moi savoir, mais ça va te demander de modifier une grande partie de ton code
0
Lucie
 
Et tu sais pourquoi cela fonctionne sous EasyPHP mais pas sur Free? Juste par curiosité.
0
briiiiix Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   18
 
Oui parceque chez free il y a un contenu automatique géneré par leur serveur, donc évite la fonction header:location sur leure serveur
0
Lucie
 
ok ben c'est noté, encore merci!
0