header et textarea

header et textarea - PHP - Programmation

Marsh Posté le 12-06-2008 à 16:00:55    

Bonjour à tous,  
je remplis un formulaire avec du code php pour ensuite l'envoyer sur une autre page avec un header, jusque là rien de méchant, jusqu'à ce que je remplit ma <textarea> en faisant des lignes différentes, si je ne met qu'une seule ligne ca marche sans problème, parcontre s je saisi un text en faisant des "Entrée" pour des retours à la ligne là il me met le message:
 
Warning: Header may not contain more than a single header, new line detected. in /home/ac/public_html/Intranet/Poste/Ajout.php on line 18
 
Je comprend pas vraiment pourquoi, je met mon code ci dessous, jespere que vous pourrez m'aider!  
 
 

Spoiler :

<?
require("./inc/utils.inc" );
require("./inc/mysql.inc" );
$Erreur="";
if ($Boolenvoye==1)  
{
 // Contrôle des champs obligatoires
 $Obligatoires=array("NomPrenom","DateConfig","NomPoste",);
 for ($i=0;$i<count($Obligatoires);$i++)  
 {
  if (strlen(${$Obligatoires[$i]})==0)  
  {
   $Erreur = "Le champ suivant doit &ecirc;tre obligatoirement saisi : ";
   $Erreur .=$Obligatoires[$i]."<br>";
  }
 }  
 if (strlen($Erreur)==0) {
  header("Location: FinAjout.php?NomPrenom=$NomPrenom&Info=$Info" );
 }
}
 
//Définition du type par défaut!
$Fixe="0";
?>
 
<html>
<head><title>Ajout d'un poste</title></head>
<body bgcolor=#C1DCFF>
 
<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
  <tbody>
    <tr align="center"><td><h3><span style="color: rgb(255, 0, 0); font-weight: bold;">
  <?  
       echo $Erreur;
   ?>
 </span></h3>
 
  <br></td></tr>
   
  <tr><td>
<form method="get" action="Ajout.php" name="Ajout">
<input type="hidden" name="Boolenvoye" value=1>
  <table style="text-align: left; height: 32px; width: 100%;" border="0" cellpadding="2" cellspacing="2">
    <tbody>
 <tr align="left">
    <td style="background-color:#336699; font-weight: bold; color: rgb(255, 255, 255); width: 184px;">Nom Pr&eacute;nom de l'utilisateur : </td>
    <td><input type="Text" name="NomPrenom" Value="<? echo $NomPrenom; ?>"></td>
 </tr>
  <tr align="left">
    <td style="background-color:#336699; font-weight: bold; color: rgb(255, 255, 255); width: 184px;">Autres informations : </td>
    <td> <textarea name="Info" cols="50" rows="10" Value="<? echo $Info; ?>"><? echo $Info; ?></textarea></td>
 </tr>
   </tbody>
  </table>
  <br><br>
  <div style="text-align: center;"><input type="Submit" value="Validez"></div>
</form>
</td></tr>
  <tr align="center">
  <td>
  <a href="Liste.php">Retour</a>  
  </td>
  </tr>
  </tbody>
</table>
<br>
</body>
</html>


 
Bon j'ai coupé au plus court le code pour ne pas polluer!

Reply

Marsh Posté le 12-06-2008 à 16:00:55   

Reply

Marsh Posté le 12-06-2008 à 17:26:42    

Salut,
remplace la ligne 18 par  

Code :
  1. <?php
  2. echo("<pre>Location: FinAjout.php?NomPrenom=$NomPrenom&Info=$Info</pre>" );
  3. ?>


et copie le résultat.
Cela vient peut-être du fait qu'une de tes variable contient un saut de ligne.


Message édité par Profil supprimé le 12-06-2008 à 17:27:06
Reply

Marsh Posté le 13-06-2008 à 03:37:02    

Le problème vient du protocole http qui définit un \r\n (retour à la ligne) entre chaque attribut d'entête.
 
En mettant directement le texte récupéré de ta textarea dans une url, tu envois aussi les \r\n des retours à la ligne saisis.
 
Pour encoder correctement tu as une fonction toute faite http://fr.php.net/manual/fr/function.urlencode.php
 

Reply

Marsh Posté le 13-06-2008 à 07:42:17    

nan mais merde quoi, un formulaire complet comme ça, ça se traite en POST et non en GET
 
faire du get depuis un formulaire est stupide

Reply

Marsh Posté le 13-06-2008 à 10:18:19    

Perso je connais pas trop la difference entre GET et POST c'est juste moins long a écrire (Oo la féneasse)!
Sinon j'ai pas tout compris a urlencode, j'ai testé ca ne marche pas mieu toujours le même message!
 
De même pour <pre></pre> aucuns changements.

Reply

Marsh Posté le 13-06-2008 à 10:23:13    

GET les parametres sont presents dans l'url, et donc ouverture à tout et n'importe quoi et en plus le get est limité en taille
POST les parametres sont bien planqués dans la requetes donc tu ne vois rien et donc plus secure, et pas limité en taille

Reply

Marsh Posté le 13-06-2008 à 12:25:56    

J'avais même pas fait gaffe à ça :D En fait j'avoue n'avoir lu qu'en travers :D
 
Le <pre> il sert à rien pour ton problème c'était pour jetter un oeil au contenu.
 
En fait y'a 2 choses:
* le formulaire de base gagnerait à être envoyé en POST.
* ta redirection en cas d'erreur peut rester comme ça de mon avis et là faut utiliser urlencode($info)
 
Un petit détail, j'ai l'impression que tu utilises le vilain register_global à on puisque je vois pas de $_GET dans ton code. Spa bien :o

Reply

Marsh Posté le 13-06-2008 à 12:36:12    

gatsu35 a écrit :

GET les parametres sont presents dans l'url, et donc ouverture à tout et n'importe quoi et en plus le get est limité en taille
POST les parametres sont bien planqués dans la requetes donc tu ne vois rien et donc plus secure, et pas limité en taille


Non.

 

GET c'est pour récupérer l'entité décrite par l'URL. Plus simplement pour "appeller" une page. Et uniquement appeller.

 

POST c'est pour envoyer des données à la resource décrite par l'URL. Donc poster des données qui vont modifier l'état de l'application (ajout, modification, etc.).

 

L'utilisation de l'un ou de l'autre est parfaitement définie, et obéit à des règles précises. Si on veut appeller une entité, qu'elle peut être mise en cache et qu'elle ne cause pas d'effets de bords (à part du logging), on utilise du GET. Si on veut modifier des choses (genre ajouter ou supprimer un élément), on utilise du POST.


Message édité par FlorentG le 13-06-2008 à 12:36:31
Reply

Marsh Posté le 13-06-2008 à 13:38:46    

Bon je suis passer en mode POST pour faire plaisir a tout le monde, mais par contre ca ne marche toujours pas pourtant j'ai fait le urlencode($Info);

Reply

Marsh Posté le 13-06-2008 à 14:13:59    

ozf a écrit :

Bon je suis passer en mode POST pour faire plaisir a tout le monde, mais par contre ca ne marche toujours pas pourtant j'ai fait le urlencode($Info);


surtout ne donne pas l'erreur ni la dernière version de ton code.[:dawak]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-06-2008 à 14:13:59   

Reply

Marsh Posté le 13-06-2008 à 17:18:18    

Prends ce code :

Code :
  1. <?
  2. require("./inc/utils.inc" );
  3. require("./inc/mysql.inc" );
  4. $Erreur="";
  5. if ($Boolenvoye==1)
  6. {
  7.     // Contrôle des champs obligatoires
  8.     $Obligatoires=array("NomPrenom","DateConfig","NomPoste",);
  9.     for ($i=0;$i<count($Obligatoires);$i++)
  10.     {
  11.         if (strlen(${$Obligatoires[$i]})==0)
  12.         {
  13.             $Erreur = "Le champ suivant doit &ecirc;tre obligatoirement saisi : ";
  14.             $Erreur .=$Obligatoires[$i]."<br>";
  15.         }
  16.     }
  17.     if (strlen($Erreur)==0) {
  18.         header('Location: FinAjout.php?NomPrenom='.$NomPrenom.'&Info='.nl2br($Info));
  19.     }
  20. }
  21.  
  22. //Définition du type par défaut!
  23. $Fixe="0";
  24. ?>
  25.  
  26. <html>
  27. <head><title>Ajout d'un poste</title></head>
  28. <body bgcolor=#C1DCFF>
  29.  
  30. <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
  31.  <tbody>
  32.    <tr align="center"><td><h3><span style="color: rgb(255, 0, 0); font-weight: bold;">
  33.  <?
  34.       echo $Erreur;
  35.   ?>
  36. </span></h3>
  37.  
  38.  <br></td></tr>
  39.  
  40.  <tr><td>
  41. <form method="get" action="Ajout.php" name="Ajout">
  42. <input type="hidden" name="Boolenvoye" value=1>
  43.  <table style="text-align: left; height: 32px; width: 100%;" border="0" cellpadding="2" cellspacing="2">
  44.    <tbody>
  45.     <tr align="left">
  46.                 <td style="background-color:#336699; font-weight: bold; color: rgb(255, 255, 255); width: 184px;">Nom Pr&eacute;nom de l'utilisateur : </td>
  47.                 <td><input type="Text" name="NomPrenom" Value="<? echo $NomPrenom; ?>"></td>
  48.     </tr>
  49.         <tr align="left">
  50.                 <td style="background-color:#336699; font-weight: bold; color: rgb(255, 255, 255); width: 184px;">Autres informations : </td>
  51.                 <td> <textarea name="Info" cols="50" rows="10" Value="<? echo $Info; ?>"><? echo $Info; ?>

Message cité 1 fois
Message édité par Profil supprimé le 13-06-2008 à 17:19:53
Reply

Marsh Posté le 14-06-2008 à 02:13:24    

Et ça donne quoi ?

Reply

Marsh Posté le 14-06-2008 à 09:24:47    

leflos5 a écrit :

Et ça donne quoi ?


du code html de merde  [:petrus75]

Reply

Marsh Posté le 14-06-2008 à 11:03:51    

ozf a écrit :

Bon je suis passer en mode POST pour faire plaisir a tout le monde, mais par contre ca ne marche toujours pas pourtant j'ai fait le urlencode($Info);


 
 
 
 [:jean-guitou]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-06-2008 à 11:47:03    

gatsu35 a écrit :

GET les parametres sont presents dans l'url, et donc ouverture à tout et n'importe quoi et en plus le get est limité en taille
POST les parametres sont bien planqués dans la requetes donc tu ne vois rien et donc plus secure, et pas limité en taille


Si, POST est limité en taille dans le php.ini il me semble ... et avec $_POST, tu peux uploader un fichier (tant qu'on est dans les différences)...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 14-06-2008 à 12:48:33    

oups désolé je n'avais pas vu çà... bon bah tant pis.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed