Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/04/2011, 17h28   #1
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 100
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 100
Points : 28
Points : 28
Par défaut pb de variable avec un retour chariot présent dans un textarea

Bonjour,

Je vous explique mon problème:

J'ai créé un formulaire en html dans lequel il y a un zone de texte pour écrire le titre d'un sujet et un textearea pour y mettre le message.

A l'envoi, les données sont transmises par un $_POST.

Sur cette page, je fais un contrôle qu'il y a bien présence d'un sujet et d'un message.
Tout ce passe très bien s'il n'y a pas de "retour chariot" dans le message. Les controles sont bien réalisés.
Dans le cas contraire, plus rien ne fonctionne et aucun controle n'est réalisé.

Je ne comprend pas pourquoi. Je vous mets mon script qui gère mes controles ci-dessous.
Si quelqu'un peut m'expliquer, ce sera avec grand plaisir.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
$sujet = $_POST['sujet'];
$message = $_POST['message'];
 
if(empty($sujet))
{
	echo"Votre message n\'a pas de titre.";
}
else
{
	if(empty($message))
	{
		echo"Votre message est vide.";
	}
	else
	{
 
	}
}
lumycaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 23h37   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Est-ce normal que le cas "les deux sont remplis" ne contienne rien ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 18h44   #3
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 100
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 100
Points : 28
Points : 28
Citation:
Envoyé par sabotage Voir le message
Est-ce normal que le cas "les deux sont remplis" ne contienne rien ?
Pour le moment oui, car je fais juste des tests. Il y a une commande "echo" (qui n'y est pas ici) pour voir le résultat pour le moment.
Dans le script définitif il y aura une requete sql pour stocker les données.
lumycaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 19h14   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Quand tu dis
Citation:
plus rien ne fonctionne et aucun controle n'est réalisé
tu veux dire que tu n'obtiens aucun des 3 echo ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 19h16   #5
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 100
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 100
Points : 28
Points : 28
Citation:
Envoyé par sabotage Voir le message
Quand tu dis
tu veux dire que tu n'obtiens aucun des 3 echo ?
Oui, c'est bien ça.

J'ai réussi à trouver une parade pour rentrer dans la première condition en faisant un "if(isset($sujet) && strlen($sujet)==0)"
mais là, j'ai un souci avec mon header('location:boite.php?mess='.$message.''); car ma variable $message contient des retours ligne.
lumycaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 20h23   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Saurais-tu produire un code qui permette de reproduire ton problème ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h00   #7
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 100
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 100
Points : 28
Points : 28
Oui, voici le script que je veux faire.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<?php
$sujet = $_POST['sujet'];
$message = $_POST['message'];
 
if(isset($sujet) && strlen($sujet)==0)
{
       header('location:boite.php?message='.$message.'');
}
else
{
	if(empty($message))
	{
		 header('location:boite.php?sujet='.$sujet.'');
 
	}
	else
	{
	    mysql_query("INSERT INTO messagerie SET message='$message', sujet='$sujet'");
	}
}
?>
lumycaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h04   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pas ce que tu veux faire, un code qui permette de reproduire le problème que tu rencontres.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h35   #9
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 100
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 100
Points : 28
Points : 28
Citation:
Envoyé par sabotage Voir le message
Pas ce que tu veux faire, un code qui permette de reproduire le problème que tu rencontres.
Et bien le code que j'ai mis ci-dessus provoque mon pb. il est lié au fait que ma variable $message (qui est un texte) a des retours chariot dedans. Ce qui provoque le message d'erreur suivant: Warning: Header may not contain more than a single header, new line detected. in /mnt/159/sdb/6/7.....
lumycaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h42   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tu aurais gagné du temps si tu nous avais donné le code et les erreurs dés le début.

Utilise rawurlencode() sur les données que tu places dans l'url.
Au passage quand même, re-transmettre du texte dans l'url c'est un peu crado.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h52   #11
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 100
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 100
Points : 28
Points : 28
Citation:
Envoyé par sabotage Voir le message
Tu aurais gagné du temps si tu nous avais donné le code et les erreurs dés le début.

Utilise rawurlencode() sur les données que tu places dans l'url.
Au passage quand même, re-transmettre du texte dans l'url c'est un peu crado.
C'est pour éviter à la personne qui a écrit un message d'avoir à le retapper si elle oublie d'y mettre un titre.
S'il existe un moyen de le faire plus propre, je suis preneur.
lumycaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h56   #12
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
une session php.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 22h01   #13
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 100
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 100
Points : 28
Points : 28
Citation:
Envoyé par sabotage Voir le message
une session php.
Oupsssssss. C'est si simple que je n'y ai même pas pensé. Merci encore, je vais modifier mon script.
lumycaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 00h56   #14
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Au passage fait attention avec strlen car cette fonction n'est pas compatible utf-8 et cet encodage est utilisé de plus en plus souvent (même pour des sites uniquement en français) ne serait-ce que pour compatibilité avec des lib comme jquery ou des fonctions php comme json_encode etc.

Donc si besoin, pour l'équivalent de strlen et autres fonctions sur les chaines compatibles utf-8 tu peux regarder ce lien.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h35.


 
 
 
 
Partenaires

Hébergement Web