header et textarea - PHP - Programmation
Marsh Posté le 12-06-2008 à 17:26:42
Salut,
remplace la ligne 18 par
Code :
|
et copie le résultat.
Cela vient peut-être du fait qu'une de tes variable contient un saut de ligne.
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
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
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.
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
Marsh Posté le 13-06-2008 à 12:25:56
J'avais même pas fait gaffe à ça En fait j'avoue n'avoir lu qu'en travers
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
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 |
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.
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);
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.
Marsh Posté le 13-06-2008 à 17:18:18
Prends ce code :
Code :
|
Marsh Posté le 14-06-2008 à 09:24:47
ReplyMarsh 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); |
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 |
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)...
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!
<?
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 ê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é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!