Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1309 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  header et textarea

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

header et textarea

n°1745529
ozf
Posté le 12-06-2008 à 16:00:55  profilanswer
 

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!

mood
Publicité
Posté le 12-06-2008 à 16:00:55  profilanswer
 

n°1745583
Profil sup​primé
Posté le 12-06-2008 à 17:26:42  answer
 

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
n°1745761
leflos5
On est ou on est pas :)
Posté le 13-06-2008 à 03:37:02  profilanswer
 

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
 

n°1745776
gatsu35
Blablaté par Harko
Posté le 13-06-2008 à 07:42:17  profilanswer
 

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

n°1745836
ozf
Posté le 13-06-2008 à 10:18:19  profilanswer
 

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.

n°1745841
gatsu35
Blablaté par Harko
Posté le 13-06-2008 à 10:23:13  profilanswer
 

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

n°1745938
leflos5
On est ou on est pas :)
Posté le 13-06-2008 à 12:25:56  profilanswer
 

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

n°1745947
FlorentG
Unité de Masse
Posté le 13-06-2008 à 12:36:12  profilanswer
 

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
n°1745974
ozf
Posté le 13-06-2008 à 13:38:46  profilanswer
 

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);

n°1746012
skeye
Posté le 13-06-2008 à 14:13:59  profilanswer
 

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 -
mood
Publicité
Posté le 13-06-2008 à 14:13:59  profilanswer
 

n°1746222
Profil sup​primé
Posté le 13-06-2008 à 17:18:18  answer
 

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
n°1746344
leflos5
On est ou on est pas :)
Posté le 14-06-2008 à 02:13:24  profilanswer
 

Et ça donne quoi ?

n°1746357
gatsu35
Blablaté par Harko
Posté le 14-06-2008 à 09:24:47  profilanswer
 

leflos5 a écrit :

Et ça donne quoi ?


du code html de merde  [:petrus75]

n°1746363
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-06-2008 à 11:03:51  profilanswer
 

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)
n°1746376
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 14-06-2008 à 11:47:03  profilanswer
 

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
n°1746401
Profil sup​primé
Posté le 14-06-2008 à 12:48:33  answer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  header et textarea

 

Sujets relatifs
Interdire le HTML dans un textarea ?Comment faire un makefile qui retrouve les header précompilés dans les
Implémentation d'une classe dans un header ?Vider le contenu d'un textarea en cochant un bouton de type "radio"
Warning: Cannot modify header information - headers already sent byBannière avec largeur automatique dans le header
Rafraichissement champt TEXTAREADecalage du header sous Safari
Commantaire / antispamm / header JPG 
Plus de sujets relatifs à : header et textarea


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR