WARNING header chez free
Résolu
Lucie
-
Lucie -
Lucie -
Bonjour,
Alors je viens de tester mon site sur FREE. Mais j'ai ce problème lorsque je m'identifie:
Voilà ce qu'il y a à la ligne 38 de ma page testlogadmin.php:
De l'aide?
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?
13 réponses
-
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 -
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 ». -
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... -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Alors tu as du texte affiché avant l'appelle à session_start() (ou header(), et ça doit faire pareil avec setcookie()).
-
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à... -
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. -
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 -
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! -
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 ?
-
Bonjour!
Javascript pourquoi pas, je veux juste que ça fonctionne. Mes headers n'ont pas de problèmes avec EasyPHP!-
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
-
-
-
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
-
-
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.