nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006
-
21 juin 2006 à 01:33
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDerniè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 ...
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDerniè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és163Date d'inscriptionlundi 20 décembre 2004StatutMembreDerniè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 ...
cs_benstar
Messages postés81Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention12 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 ?
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDerniè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)...
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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".
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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'); }
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDerniè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és96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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...)
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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...)
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 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".
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDerniè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és373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 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és373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 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és163Date d'inscriptionlundi 20 décembre 2004StatutMembreDerniè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