Problèmes headers() une fois en ligne

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 déc. 2008, 15:58

ok, maintenant, tu ajoutes l'echo suivant dans le if et avant le header() de notre fameux script:
   if(!empty($_POST["titre"]) AND !empty($_POST["texte"])){
      mysql_query($reqinsert)or die(mysql_error());

      echo "coucou, je suis avant header :-)"; // pour le débug      

      header('Location: ./news.php');
      exit();
   } 
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 16 Messages

17 déc. 2008, 16:04

Voilà j'ai ajouter le echo et j'en ai mit un apres aussi.

Je tombe toujours sur ma page blanche mais cette fois avec le texte ecrit.

Voici ce que j'ai en code source :

Code : Tout sélectionner

coucou, je suis avant header :-)Apres le headers

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 déc. 2008, 16:13

Trés bien, on sait formellement que l'exécution arrive jusqu'à header() et Apparemment, les erreurs n'ont pas été activées. Sinon on aurait eu un message d'erreur sur header() car un echo est fait juste avant. :?
Mais, continuons pour vérifier le chemin d'accès à la page "news.php" modifie ton script en mettant un include() au lieu d'un header(). Comme ça:
if(!empty($_POST["titre"]) AND !empty($_POST["texte"])){
      mysql_query($reqinsert)or die(mysql_error());

      echo "coucou, je suis avant include :-)"; // pour le débug      

      include('./news.php');
      exit();
   }
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 16 Messages

17 déc. 2008, 16:21

Voila ce que j'ai dans le code source :

Code : Tout sélectionner

avant les sauts de ligne coucou, je suis avant include :-)
J'ai mit un echo() avant mon require("../data.php"); et j'ai une ligne avant les espace.
Mais je n'arrive pas à trouvé ou est le problème!

Sinon je ne vois pas se que le include à changé...

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 déc. 2008, 16:38

Le include() qu'on a ajouté doit t'afficher la page "news.php". Si c'est pas le cas alors il y a deux cas :
  • 1. soit cette page "news.php" n'affiche rien
    2. soit cette page "news.php" n'est pas située dans le bon chemin relatif que tu indique par ça "./" c'est à dire le dossier en cours
Es-tu sûr que cette page "news.php" existe bien dans le même dossier que le script en question et qu'elle affiche quelque chose?

As-tu testé en accédant directement à cette page par son url http sur ton navigateur?
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 16 Messages

17 déc. 2008, 16:50

Je suis sur et certain que la page est dans le même dossier et quel affiche bien quelque chose.
J'ai aussi essayer de mettre l'url entière.

Je viens d remarquer que les espaces était du à mon fichier config ou à son require().

Par contre chose que je ne comprends pas, dans mon data(endroit ou j'ai ma connexion à la db et ou j'ai mes fonctions), j'appelle mon fichier config php par require("config.php"); et cela fonctionne.

J'ai essayé de mettre require("./config.php"); pour corriger l'url relative et je tombe sur une page blanche avec mon echo que j'ai placé juste avant ce require()

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 déc. 2008, 17:01

Tu peux enlever les ./ car c'est facultatif si les fichiers que tu inclues sont dans le même dossier. Par contre, cela est déroutant pour PHP quand il s'agit d'un script inclus qui lui même fait des include() ou require() d'autres scripts.
C'est un peu tordu, car l'inclusion fait hériter le chemin de base du script qui a commencé l'inclusion. surtout, si toutes les inclusions font référence à des chemin relatifs :boire4:

Pour info, include() fait la même chose que require() ou require_once().

Revenons à notre problème.

Enlève tous les echos que tu as ajouté pour ne pas fausser le test et concentre toi maintenant sur le script en question. Voici le script que tu dois tester:
<?php
require("../data.php");
//session_start();
   
   if(isset($_POST["titre"])){
      if(!empty($_POST["titre"]))
         $titre = $_POST["titre"];/* récupere les valeur ds le formulaire*/
      else
      $titre = "";
   }
   if(isset($_POST["texte"])){
      if(!empty($_POST["texte"]))
         $texte = $_POST["texte"];
      else
      $texte = "";
   }
   
   $datemaj = strftime("%Y-%m-%d");
   
   $reqinsert = 'INSERT INTO news (news_id, titre, texte, dateP) VALUE (\'\',\''.$titre.'\',\''.$texte.'\',\''.$datemaj.'\')';
   
   //echo $reqinsert;
   
   if(!empty($_POST["titre"]) AND !empty($_POST["texte"])){
      mysql_query($reqinsert)or die(mysql_error());

      include("news.php"); // <-- objet du test

      exit();
   }
   
?> 
Que vois-tu après exécution?
Modifié en dernier par sadeq le 17 déc. 2008, 17:14, modifié 2 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 16 Messages

17 déc. 2008, 17:06

Apparemment le problème est résolu, les espaces en début de code étaient du à des espaces que j'avais mit après ma balise de fermeture php dans mon fichier de config...

Je vais tester si toute ma partie admin fonctionne puis je ferai mon identification!

En tout cas merci pour cette aide, ça ma bien fait avancé puis j'aurai bien appris ! :D