Pb header ?

nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006 - 21 juin 2006 à 01:33
nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006 - 27 juin 2006 à 02:07
Bonsoir,
J'ai rajouté une partie d'administration(en php4) dans un site deja existant (n utilisant que de l'html). En local (sous xammp) tout fonctionne. Je dois maintenant le faire héberger (chez wanadoo donc php4 et mysql4 ....) et j'ai eu énormément de problêmes dès que j'essayais d'atteindre la partie en php.
J'ai cherché pendant un bon moment (wanadoo pas de réponse...). En ayant essayé pas mal de truc je pense que ca vient de la fonction header("Location:./*.php") utilisée a bon nombre d'endroits. Qqun aurait il une idée ? Suis je sur la bonne piste ?
Merci

Ps : N'hésitez pas à me poser plus de questions, c'est assez vital pour ce dev ... 

 

15 réponses

pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
21 juin 2006 à 09:12
Bonjour,

As tu des messages d'erreur ? Si oui, lesquels ?
Quel genre de problèmes as tu ?

Essaye d'être un petit plus précis pour que l'on puisse t'aider :)

Bye
nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006
21 juin 2006 à 10:23
Bonjour,
C'est a ne rien comprendre. J'ai des pages ne comprenant que
<?PHP
// Redirection
header("Location:./login.php");
?>
Il arrive que je tombe soit sur une page d erreur de wanadoo me disant que la page n'existe pas, soit j arrive sur une page totalement blanche. Je n'ai rien changé a mon code d'hier et la ca ne marche plus. Je me relance dedans et enverrai des nouvelles.
nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006
21 juin 2006 à 10:45
Lorsque les pages se chargent le message d'erreur affiché est le suivant :


Warning: Cannot modify header information - headers already sent
by (output started at
/var/www/data/woo/E/M/7/F/EM7FA43K/intranet/questionnaires/user/accueil.php:19)
in /var/www/data/woo/E/M/7/F/EM7FA43K/intranet/questionnaires/include/db_functions.php on line 41


Ce qui est étrange c'est que ce header db_functions.php on line 41 est dans un if et la condition n'est pas remplie donc il ne devrait pas le prendre en compte ...

Je rappelle qu'en local je n'ai aucun probleme
cs_benstar Messages postés 81 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 12 octobre 2009
21 juin 2006 à 11:16
Tu as ton où exactement. Le header doit etre mis au debut de la page completement en haut avt tte chse. si ca marche en local je suppose que tu l'as fais comme ca. Dans ce cas je pense que c'est les droits d'administration de ton site sur wanadoo kil faut voir et autoriser quelques scripts supplementaires. j'ai des ennuis similaires avec Amen il y a un moment.

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

Posez votre question
nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006
21 juin 2006 à 15:12
Ca marche en local mais les header ne sont pas forcement au debut...
Voici un exemple :

if (($ndu != "") && ($mdp != "")) {
/****************************************************************************
* CONNEXION ADMINISTRATEUR.
****************************************************************************/
$resultat_requete = db_execute_query("SELECT `administrateurs`.`LOGIN`, `administrateurs`.`MDP` FROM `administrateurs`");
// Traiter les Résultats de la Requète.
while ($resultat_ligne = @mysql_fetch_row($resultat_requete)) {
// Tester si la Demande de Connexion est de type Administration.

if (($resultat_ligne[0] == $ndu) && ($resultat_ligne[1] == $mdp)) {
// Démarrer une Session.
session_start();
// Marquer la Session de Type Administration.
$_SESSION['droits'] = "admin";
// Marquer l'Erreur.
$_SESSION['erreur'] = "";
// Marquer l'Info.
$_SESSION['info'] = " Bonjour $ndu !";
// Ecrire et Fermer la Session.
session_write_close();
// Rediriger vers la Page d'Accueil d'Administration.
header("Location:./admin/accueil.php");
exit;
}
}
/****************************************************************************
* CONNEXION UTILISATEUR.
****************************************************************************/
$resultat_requete = db_execute_query("SELECT `utilisateurs`.`LOGIN`, `utilisateurs`.`MDP`, `utilisateurs`.`DATEDEBUTSESSION`, `utilisateurs`.`NOMFORMATION` FROM `utilisateurs`");
// Traiter les Résultats de la Requète.
while ($resultat_ligne = @mysql_fetch_row($resultat_requete)) {
//echo "$resultat_ligne[0]";
// Tester si la Demande de Connexion est de type Utilisation.
if (($resultat_ligne[0] == $ndu) && ($resultat_ligne[1] == $mdp)) {
// Démarrer une Session.
session_start();
// Marquer la Session Utilisation.
$_SESSION['droits'] = "user";
// Marquer l'Utilisateur
$_SESSION['utilisateur'] = $resultat_ligne[0];
// Marquer l'Utilisateur
$_SESSION['datedebutsession'] = $resultat_ligne[2];
// Marquer l'Utilisateur
$_SESSION['nomformation'] = $resultat_ligne[3];
// Marquer l'Erreur.
$_SESSION['erreur'] = "";
// Marquer l'Info.
$_SESSION['info'] = "Bonjour $ndu !";
// Ecrire et Fermer la Session.
session_write_close();
// Rediriger vers la Page d'Accueil d'Utilisation.
header("Location:./user/accueil.php");exit;
}
}

// Initialiser le Message d'Erreur.
$error = " Nom d'utilisateur ou/et mot de passe incorrect(s) !";
} else {
// Initialiser le Message d'Erreur.
$error = " Veuillez renseigner tous les champs !";
}
} else {
// Démarrer une Session.
session_start();
// Si Redirection.
if ((isset($_SESSION['erreur'])) && ($_SESSION['erreur'] != "")) {
// Initialiser le Message d'Erreur.
$error = $_SESSION['erreur'];
}

Cela ne me semble pas propre mais l'esemble de l'application a été développée comme cela ... En local ca fonctionne en hébergé il ne m affiche pas les erreurs pourtant les var $_SESSION doivent etre renseignées car je m en sers pour des requetes qui fonctionne. Ceci n'est qu'un petit exemple de bug.

Autre chose en local pour un traitement j'utilise foreach ($modelrep as &$value) en hébergé il me sort une erreur et je dois utiliser foreach ($modelrep as $value)...

Je m'arrache les cheveux. Merci pour votre aide
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
21 juin 2006 à 16:07
Bonjour,

Personnellement, la fonction header se DOIT d'être à la toute première ligne d'une page, ça me semble tout à fait normal que sur un serveur hébergé cela pose problème...
Idem pour la fonction foreach(). La syntaxe véritable est foreach ($array as $value) !

Si ça marche en local, c'est surement parce que ton serveur web local doit laisser passer ce genre d'erreurs... C'est pourquoi il est important de développer dés le départ, que ça soit en local ou non, de façon propre :)

Ceci étant dit, je ne connais pas d'alternative à tes problèmes, la seule chose que je peux te conseiller, c'est de remettre au propre ton code et de bien respecter l'emplacement de la fonction "header".

Bye
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
21 juin 2006 à 16:11
Ah j'oubliais, pour la fonction "session_start()", c'est le même problème que "header", c'est une fonction à déclarer en première ligne, tu la déclares une seule fois par contre :)

Exemple : fichier.php
<?php
// Initialisation des sessions
session_start();
// Vérification des sessions
if (!isset($_SESSION['variable'])) { header('Location: http://monsite.com/erreur.php'); }

// Code de ma page

?>
nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006
21 juin 2006 à 16:12
Ok merci. Je ne suis pas responsable de tout ce developpement. Le code ne me paraissait pas propre mais sa reprise plus que fatidieuse... Je crois que je ne vais pas y echapper...
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
21 juin 2006 à 16:55
^^

Si ça peut te rassurer, je viens de terminer (hier) le développement d'un intranet d'enreprise (4 mois de travail...) et il faut que je reprenne tout mon code afin de le remettre au propre, donc c'est reparti pour des mois de boulot ! :p

Je trouve ça plus sympa à faire, de refaire le code au propre, mais il faut avoir le temps parce que c'est long ! (enfin tout dépend du code aussi...)

Bye et surtout bon courage ;)
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
21 juin 2006 à 16:55
^^

Si ça peut te rassurer, je viens de terminer (hier) le développement d'un intranet d'enreprise (4 mois de travail...) et il faut que je reprenne tout mon code afin de le remettre au propre, donc c'est reparti pour des mois de boulot ! :p

Je trouve ça plus sympa à faire, de refaire le code au propre, mais il faut avoir le temps parce que c'est long ! (enfin tout dépend du code aussi...)

Bye et surtout bon courage ;)
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
21 juin 2006 à 18:24
Salut,
Je travaille sur un projet forum en PHP sans MySQL et j'utilise que des "header" pour mes redirections. Jusqu'ici tout va bien mais on me signale que sur l'hebergeur "Alice" (anciennement Tiscali) lorsque l'on redirige grâce à cette fonction on obtient une page d'erreur 404 (lorsque la page existe)
La seul solution trouvé à ce jour et d'utiliser une redirection par "Javascript" ou à l'aide de la balise HTML "Meta".

Pouvez vous m'aider ?
nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006
21 juin 2006 à 18:38
Ce que tu dis m'interresse grandement. Je n'aurais donc pas cherché en vain. J'ai eu le meme type d'erreur
J'avoue avoir saturé mais demain est un autre jour . Je regarderai mon pb (qui ne dois pas etre très different du tien) et te tiendrai au courant.
As tu tes header placés en début de page ?
Qui a pu te dire qu'il existait de tel pb avec Alice ? (Alice eux memes ?). Moi toujours pas de réponses ...

 
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
21 juin 2006 à 19:40
Ben en faite j'améliore le script du forum DNF et plusieurs de leurs membres utilisent une version de ce forum spécial à Alice.
J'ai déjà réussi à corriger pas mal de problèmes pour faire tourné le script à la fois sur Alice (qui ont PHP 4.0.5 ...) et sur les autres hebergeurs. Mais je ne souhaite pas du tout utiliser du Javascript comme redirection.
Donc je suppose que le premier qui trouve prévient l'autre
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
27 juin 2006 à 01:01
Bonsoir,
J'ai trouvé comment utilisé les "header" sur Alice (Tiscali) :

Au lieu d'utiliser :
<?php header('Location: index.php'); ?>

Il fallait utiliser :
<?php header('Location: '.dirname($_SERVER['PHP_SELF']).'index.php'); ?>
(Enfin pour Alice c'était "dirname($HTTP_SERVER_VARS['PHP_SELF'])" puisque c'est une version de PHP 4.0.5)

Voila j'espere que pour toi cette solution fonctionnera.
nagrom_om Messages postés 163 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 1 novembre 2006
27 juin 2006 à 02:07
Merci pour l'info je vais essayer ca des demain. J ai opté pour un hébergement en local mais si ta methode fonctionne cela me sauvera la vie. Je donne des nouvelles demain

 
Rejoignez-nous