PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.php > isset
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
isset

Réponse
 
LinkBack Outils de la discussion
Vieux 19/09/2007, 21h37   #1
yoyo@invalid.fr
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut isset

Bonjour,

lors d'un formulaire via une méthode post on doit vérifier que les
variables du formulaire on bien été posté et stocker le résultat dans une
variable.

je me demandais si c'était obligatoire car si on fait un formulaire avec
beaucoup de post cela devient lourd.
  Réponse avec citation
Vieux 19/09/2007, 22h37   #2
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Le 19/09/2007 22:37, yoyo@invalid.fr a écrit :
>
> lors d'un formulaire via une méthode post on doit vérifier que les
> variables du formulaire on bien été posté et stocker le résultat dans une
> variable.
>
> je me demandais si c'était obligatoire car si on fait un formulaire avec
> beaucoup de post cela devient lourd.


De vérifier que $_REQUEST['cequetuveux'] existe et est correct, oui
cela me semble indispensable (tu peux faire la même chose avec $_POST
si tu préfères). Mais le mettre dans une autre variable, ce n'est pas
forcément obligatoire, dans le cas où tu ne prévois pas de valeur par
défaut et que la sanction d'un paramètre manquant est toujours la sortie
immédiate du script.

Donc, tu peux très bien avoir :
if (!isset($_REQUEST['foobar'])) die('Paramètre manquant');
if ($_REQUEST['foobar'] < 250) die('Paramètre trop petit');
if ($_REQUEST['foobar'] > 500) die('Paramètre trop grand');
... etc. ...
Puis :
$calcul = 3 * $_REQUEST['foobar'] + 27;
... etc. ...

Mais tu peux avoir besoin de :
$foobar = 300; /* valeur par défaut */
if (isset($_REQUEST['foobar'])) {
if (($_REQUEST['foobar'] >= 250) && ($_REQUEST['foobar'] <= 500)) {
$foobar = $_REQUEST['foobar'];
}
}
... etc. ...
Puis :
$calcul = 3 * $foobar + 27;
... etc. ...
  Réponse avec citation
Vieux 19/09/2007, 22h37   #3
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Le 19/09/2007 22:37, yoyo@invalid.fr a écrit :
>
> lors d'un formulaire via une méthode post on doit vérifier que les
> variables du formulaire on bien été posté et stocker le résultat dans une
> variable.
>
> je me demandais si c'était obligatoire car si on fait un formulaire avec
> beaucoup de post cela devient lourd.


De vérifier que $_REQUEST['cequetuveux'] existe et est correct, oui
cela me semble indispensable (tu peux faire la même chose avec $_POST
si tu préfères). Mais le mettre dans une autre variable, ce n'est pas
forcément obligatoire, dans le cas où tu ne prévois pas de valeur par
défaut et que la sanction d'un paramètre manquant est toujours la sortie
immédiate du script.

Donc, tu peux très bien avoir :
if (!isset($_REQUEST['foobar'])) die('Paramètre manquant');
if ($_REQUEST['foobar'] < 250) die('Paramètre trop petit');
if ($_REQUEST['foobar'] > 500) die('Paramètre trop grand');
... etc. ...
Puis :
$calcul = 3 * $_REQUEST['foobar'] + 27;
... etc. ...

Mais tu peux avoir besoin de :
$foobar = 300; /* valeur par défaut */
if (isset($_REQUEST['foobar'])) {
if (($_REQUEST['foobar'] >= 250) && ($_REQUEST['foobar'] <= 500)) {
$foobar = $_REQUEST['foobar'];
}
}
... etc. ...
Puis :
$calcul = 3 * $foobar + 27;
... etc. ...
  Réponse avec citation
Vieux 20/09/2007, 06h30   #4
Mickael Wolff
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

yoyo@invalid.fr a écrit :

> je me demandais si c'était obligatoire car si on fait un formulaire avec
> beaucoup de post cela devient lourd.


Bien venue dans le monde de la programmation Bien évidemment, tu
peux automatiser les traitements. Personnellement, j'utilise un fichier
XML qui décrit le formulaire, comme ça je fabriques le formulaire à
l'aide de cet XML, et la vérification se fait automatiquement à partir
de cette description.

Mais peut-être que d'autres ont des méthodes moins lourdes que
d'utiliser un DOMDocument juste pour ça

++
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
  Réponse avec citation
Vieux 20/09/2007, 06h30   #5
Mickael Wolff
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

yoyo@invalid.fr a écrit :

> je me demandais si c'était obligatoire car si on fait un formulaire avec
> beaucoup de post cela devient lourd.


Bien venue dans le monde de la programmation Bien évidemment, tu
peux automatiser les traitements. Personnellement, j'utilise un fichier
XML qui décrit le formulaire, comme ça je fabriques le formulaire à
l'aide de cet XML, et la vérification se fait automatiquement à partir
de cette description.

Mais peut-être que d'autres ont des méthodes moins lourdes que
d'utiliser un DOMDocument juste pour ça

++
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
  Réponse avec citation
Vieux 20/09/2007, 15h15   #6
yoyo@invalid.fr
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Mickael Wolff wrote:

> yoyo@invalid.fr a écrit :
>
>> je me demandais si c'était obligatoire car si on fait un formulaire avec
>> beaucoup de post cela devient lourd.

>
> Bien venue dans le monde de la programmation Bien évidemment, tu
> peux automatiser les traitements. Personnellement, j'utilise un fichier
> XML qui décrit le formulaire, comme ça je fabriques le formulaire à
> l'aide de cet XML, et la vérification se fait automatiquement à partir
> de cette description.
>
> Mais peut-être que d'autres ont des méthodes moins lourdes que
> d'utiliser un DOMDocument juste pour ça
>
> ++



j'en suis pas encore là!!!!

j'utilise isset pour les scripts de sessions, mais dans le cadre d'un
formulaire normal a quoi ça sert réellement de tester si la variable
existe.

finalement le seul controle indispensable d'un formulaire c'est de vérifier
qu'il soit pas envoyé vide et de verifier que les élements saisie soit
cohérant avec ce qui est demandé.
  Réponse avec citation
Vieux 21/09/2007, 07h35   #7
Mihamina (R12y) Rakotomandimby
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Bruno Desthuilliers wrote:

> Et que ce ne soit pas une tentative d'attaque de ton système,
> accessoirement... Maintenant, quelque chose m'échappe : comment veux-tu
> vérifier que le formulaire n'est pas posté vide et que les éléments
> saisis sont cohérents avec ce qui est demandé *sans* vérifier que les
> "variables" du formulaires ont bien été renseignées ???


Quand on a une page "multi formulaire" mal foutue, c'est à dire ou l'on
a plusieurs groupes de champs mais seul un groupe porte des données
utiles, alors il veut pouvoir ne considérer que les champs du groupe en
question.
C'est un exemple d'usage qui m'est venu comme ça, on the fly.
Mais pour ça il faut que le formulaire soit mal foutu.
  Réponse avec citation
Vieux 21/09/2007, 07h35   #8
Mihamina (R12y) Rakotomandimby
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Bruno Desthuilliers wrote:

> Et que ce ne soit pas une tentative d'attaque de ton système,
> accessoirement... Maintenant, quelque chose m'échappe : comment veux-tu
> vérifier que le formulaire n'est pas posté vide et que les éléments
> saisis sont cohérents avec ce qui est demandé *sans* vérifier que les
> "variables" du formulaires ont bien été renseignées ???


Quand on a une page "multi formulaire" mal foutue, c'est à dire ou l'on
a plusieurs groupes de champs mais seul un groupe porte des données
utiles, alors il veut pouvoir ne considérer que les champs du groupe en
question.
C'est un exemple d'usage qui m'est venu comme ça, on the fly.
Mais pour ça il faut que le formulaire soit mal foutu.
  Réponse avec citation
Vieux 26/09/2007, 17h19   #9
Olivier Masson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Mickael Wolff a écrit :

> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est
> nécessaire de traiter l'absence, voir de générer une erreur. Parce que
> si tu tente d'accéder à un élément d'un tableau qui n'existe pas, tu
> dois avoir un Warning (sur ta machine de développement).
>


Est-ce vraiment gênant de supprimer la vérif isset ?
Si lors de la vérif des valeurs on utilise @, quel est le soucis ?
Personnellement (ce qui est donc tout sauf un gage de qualité ),
j'utilise foreach ou array_map soit sur toutes les valeurs, soit sur un
tableau qui contient toutes les valeurs que je souhaite vérifier.
  Réponse avec citation
Vieux 26/09/2007, 17h19   #10
Olivier Masson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Mickael Wolff a écrit :

> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est
> nécessaire de traiter l'absence, voir de générer une erreur. Parce que
> si tu tente d'accéder à un élément d'un tableau qui n'existe pas, tu
> dois avoir un Warning (sur ta machine de développement).
>


Est-ce vraiment gênant de supprimer la vérif isset ?
Si lors de la vérif des valeurs on utilise @, quel est le soucis ?
Personnellement (ce qui est donc tout sauf un gage de qualité ),
j'utilise foreach ou array_map soit sur toutes les valeurs, soit sur un
tableau qui contient toutes les valeurs que je souhaite vérifier.
  Réponse avec citation
Vieux 27/09/2007, 06h49   #11
Mickael Wolff
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Olivier Masson a écrit :

> Est-ce vraiment gênant de supprimer la vérif isset ?


Ça dépend de ta psychorigidité ^^; Mais personnellement, je n'utilises
jamais isset, mais array_key_exists. Ça vient du fait que je ne
comprends pas pourquoi isset($toto['tata']) ne lève pas une exception si
la clé tata n'existe pas.

> Si lors de la vérif des valeurs on utilise @, quel est le soucis ?


Je n'aime pas ignorer les erreurs, warnings ou notices. C'est le
meilleurs moyen de tourner en rond pendant des heures autour d'un
problème résolvable en 30 s. Mais chacun ces passions

> Personnellement (ce qui est donc tout sauf un gage de qualité ),
> j'utilise foreach ou array_map soit sur toutes les valeurs, soit sur un
> tableau qui contient toutes les valeurs que je souhaite vérifier.


Comme toujours, ça dépend comment tu gères derrière.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
  Réponse avec citation
Vieux 27/09/2007, 06h49   #12
Mickael Wolff
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Olivier Masson a écrit :

> Est-ce vraiment gênant de supprimer la vérif isset ?


Ça dépend de ta psychorigidité ^^; Mais personnellement, je n'utilises
jamais isset, mais array_key_exists. Ça vient du fait que je ne
comprends pas pourquoi isset($toto['tata']) ne lève pas une exception si
la clé tata n'existe pas.

> Si lors de la vérif des valeurs on utilise @, quel est le soucis ?


Je n'aime pas ignorer les erreurs, warnings ou notices. C'est le
meilleurs moyen de tourner en rond pendant des heures autour d'un
problème résolvable en 30 s. Mais chacun ces passions

> Personnellement (ce qui est donc tout sauf un gage de qualité ),
> j'utilise foreach ou array_map soit sur toutes les valeurs, soit sur un
> tableau qui contient toutes les valeurs que je souhaite vérifier.


Comme toujours, ça dépend comment tu gères derrière.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
  Réponse avec citation
Vieux 27/09/2007, 11h49   #13
Dominique Ottello
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Mickael Wolff <mickael.wolff@laposte.net> écrivait :

> > Si lors de la vérif des valeurs on utilise @, quel est le soucis ?

>
> Je n'aime pas ignorer les erreurs, warnings ou notices. C'est le
> meilleurs moyen de tourner en rond pendant des heures autour d'un
> problème résolvable en 30 s. Mais chacun ces passions


Chez certains hébergeurs, à partir d'un certain nombre d'erreurs ou
warning masqués par @, il y a blocage du ou des scripts litigieux.
C'est ce qui se passe chez Free.
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.free.fr (http://ottello.net)
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
  Réponse avec citation
Vieux 27/09/2007, 11h49   #14
Dominique Ottello
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Mickael Wolff <mickael.wolff@laposte.net> écrivait :

> > Si lors de la vérif des valeurs on utilise @, quel est le soucis ?

>
> Je n'aime pas ignorer les erreurs, warnings ou notices. C'est le
> meilleurs moyen de tourner en rond pendant des heures autour d'un
> problème résolvable en 30 s. Mais chacun ces passions


Chez certains hébergeurs, à partir d'un certain nombre d'erreurs ou
warning masqués par @, il y a blocage du ou des scripts litigieux.
C'est ce qui se passe chez Free.
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.free.fr (http://ottello.net)
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
  Réponse avec citation
Vieux 28/09/2007, 10h25   #15
Olivier Masson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Dominique Ottello a écrit :

> Chez certains hébergeurs, à partir d'un certain nombre d'erreurs ou
> warning masqués par @, il y a blocage du ou des scripts litigieux.
> C'est ce qui se passe chez Free.


C'est-à-dire ? Ce n'est pas le blocage qui m'intéresse (j'utilise peu le
@ et pas free) mais la façon dont c'est détecté : ils parsent les
scripts ou c'est php qui peut renvoyer en silent les erreurs ignorées
par le @ ?
  Réponse avec citation
Vieux 28/09/2007, 10h25   #16
Olivier Masson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Dominique Ottello a écrit :

> Chez certains hébergeurs, à partir d'un certain nombre d'erreurs ou
> warning masqués par @, il y a blocage du ou des scripts litigieux.
> C'est ce qui se passe chez Free.


C'est-à-dire ? Ce n'est pas le blocage qui m'intéresse (j'utilise peu le
@ et pas free) mais la façon dont c'est détecté : ils parsent les
scripts ou c'est php qui peut renvoyer en silent les erreurs ignorées
par le @ ?
  Réponse avec citation
Vieux 28/09/2007, 20h53   #17
Dominique Ottello
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Olivier Masson <sisemen@laposte.net> écrivait :


> > Chez certains hébergeurs, à partir d'un certain nombre d'erreurs ou
> > warning masqués par @, il y a blocage du ou des scripts litigieux.
> > C'est ce qui se passe chez Free.

>
> C'est-à-dire ? Ce n'est pas le blocage qui m'intéresse (j'utilise peu le
> @ et pas free) mais la façon dont c'est détecté : ils parsent les
> scripts ou c'est php qui peut renvoyer en silent les erreurs ignorées
> par le @ ?


Je ne sais pas comment le filtrage est effectué ; il faudrait demander à
l'administrateur des pages persos.

Trente « warnings » dans le même script donne une erreur fatale et le
blocage du script. Ceci pour éviter des charges trop fortes pour de
l'hébergement mutualisé.
--
Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se
croire avec confiance où l'on n'est pas. Jean Dominique Cassini.
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
  Réponse avec citation
Vieux 28/09/2007, 20h53   #18
Dominique Ottello
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Olivier Masson <sisemen@laposte.net> écrivait :


> > Chez certains hébergeurs, à partir d'un certain nombre d'erreurs ou
> > warning masqués par @, il y a blocage du ou des scripts litigieux.
> > C'est ce qui se passe chez Free.

>
> C'est-à-dire ? Ce n'est pas le blocage qui m'intéresse (j'utilise peu le
> @ et pas free) mais la façon dont c'est détecté : ils parsent les
> scripts ou c'est php qui peut renvoyer en silent les erreurs ignorées
> par le @ ?


Je ne sais pas comment le filtrage est effectué ; il faudrait demander à
l'administrateur des pages persos.

Trente « warnings » dans le même script donne une erreur fatale et le
blocage du script. Ceci pour éviter des charges trop fortes pour de
l'hébergement mutualisé.
--
Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se
croire avec confiance où l'on n'est pas. Jean Dominique Cassini.
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
  Réponse avec citation
Vieux 05/10/2007, 23h12   #19
yoyo@invalid.fr
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Mickael Wolff wrote:

> yoyo@invalid.fr a écrit :
>
>> finalement le seul controle indispensable d'un formulaire c'est de
>> vérifier qu'il soit pas envoyé vide et de verifier que les élements
>> saisie soit cohérant avec ce qui est demandé.

> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est


justement est ce que si une variable esst vide est ce qu'elle existe dans la
cas ou l'internaute validerait un post vide.


> nécessaire de traiter l'absence, voir de générer une erreur. Parce que
> si tu tente d'accéder à un élément d'un tableau qui n'existe pas, tu
> dois avoir un Warning (sur ta machine de développement).
>
> Ça évite aussi d'user d'une expression régulière alors qu'il n'y a pas
> besoin
>

  Réponse avec citation
Vieux 05/10/2007, 23h12   #20
yoyo@invalid.fr
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Mickael Wolff wrote:

> yoyo@invalid.fr a écrit :
>
>> finalement le seul controle indispensable d'un formulaire c'est de
>> vérifier qu'il soit pas envoyé vide et de verifier que les élements
>> saisie soit cohérant avec ce qui est demandé.

> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est


justement est ce que si une variable esst vide est ce qu'elle existe dans la
cas ou l'internaute validerait un post vide.


> nécessaire de traiter l'absence, voir de générer une erreur. Parce que
> si tu tente d'accéder à un élément d'un tableau qui n'existe pas, tu
> dois avoir un Warning (sur ta machine de développement).
>
> Ça évite aussi d'user d'une expression régulière alors qu'il n'y a pas
> besoin
>

  Réponse avec citation
Vieux 05/10/2007, 23h23   #21
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Le 06/10/2007 00:12, yoyo@invalid.fr a écrit :
>>
>>> finalement le seul controle indispensable d'un formulaire c'est de
>>> vérifier qu'il soit pas envoyé vide et de verifier que les élements
>>> saisie soit cohérant avec ce qui est demandé.

>> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est

>
> justement est ce que si une variable esst vide est ce qu'elle existe dans la
> cas ou l'internaute validerait un post vide.


Je viens de me torturer l'esprit pendant 5 bonnes minutes en essayant de
comprendre ta phrase, mais je n'y arrive pas. Dans le doute, je vais
répondre quelque chose en espérant que ce sera la réponse à ta question.

1) La première chose à faire est de vérifier par isset si le tableau
$_REQUEST contient bien une entrée du nom qui t'intéresse.

2) Si le premier résultat est positif, la seconde chose à faire *peut*
être de regarder si la valeur est une chaîne vide, mais ce n'est pas
forcément obligatoire. Vérifier directement que la valeur est bien
de la forme que tu attends peut suffire (par exemple, pour un entier
positif, vérifier qu'elle contient un chiffre ou plus et aucun autre
caractère).


P.-S. : Ton adresse n'est toujours pas conforme aux recommandations pour
les adresses invalides. Ça t'ennuie de mettre le .invalid à la fin ?
  Réponse avec citation
Vieux 05/10/2007, 23h23   #22
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Le 06/10/2007 00:12, yoyo@invalid.fr a écrit :
>>
>>> finalement le seul controle indispensable d'un formulaire c'est de
>>> vérifier qu'il soit pas envoyé vide et de verifier que les élements
>>> saisie soit cohérant avec ce qui est demandé.

>> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est

>
> justement est ce que si une variable esst vide est ce qu'elle existe dans la
> cas ou l'internaute validerait un post vide.


Je viens de me torturer l'esprit pendant 5 bonnes minutes en essayant de
comprendre ta phrase, mais je n'y arrive pas. Dans le doute, je vais
répondre quelque chose en espérant que ce sera la réponse à ta question.

1) La première chose à faire est de vérifier par isset si le tableau
$_REQUEST contient bien une entrée du nom qui t'intéresse.

2) Si le premier résultat est positif, la seconde chose à faire *peut*
être de regarder si la valeur est une chaîne vide, mais ce n'est pas
forcément obligatoire. Vérifier directement que la valeur est bien
de la forme que tu attends peut suffire (par exemple, pour un entier
positif, vérifier qu'elle contient un chiffre ou plus et aucun autre
caractère).


P.-S. : Ton adresse n'est toujours pas conforme aux recommandations pour
les adresses invalides. Ça t'ennuie de mettre le .invalid à la fin ?
  Réponse avec citation
Vieux 06/10/2007, 13h21   #23
yoyo@invalid.news.free.fr
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Olivier Miakinen wrote:

> Le 06/10/2007 00:12, yoyo@invalid.fr a écrit :
>>>
>>>> finalement le seul controle indispensable d'un formulaire c'est de
>>>> vérifier qu'il soit pas envoyé vide et de verifier que les élements
>>>> saisie soit cohérant avec ce qui est demandé.
>>> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est

>>
>> justement est ce que si une variable esst vide est ce qu'elle existe dans
>> la cas ou l'internaute validerait un post vide.

>
> Je viens de me torturer l'esprit pendant 5 bonnes minutes en essayant de
> comprendre ta phrase, mais je n'y arrive pas. Dans le doute, je vais
> répondre quelque chose en espérant que ce sera la réponse à ta question.
>
> 1) La première chose à faire est de vérifier par isset si le tableau
> $_REQUEST contient bien une entrée du nom qui t'intéresse.
>
> 2) Si le premier résultat est positif, la seconde chose à faire *peut*
> être de regarder si la valeur est une chaîne vide, mais ce n'est pas
> forcément obligatoire. Vérifier directement que la valeur est bien
> de la forme que tu attends peut suffire (par exemple, pour un entier
> positif, vérifier qu'elle contient un chiffre ou plus et aucun autre
> caractère).
>
>
> P.-S. : Ton adresse n'est toujours pas conforme aux recommandations pour
> les adresses invalides. Ça t'ennuie de mettre le .invalid à la fin ?


désolé je me suis peux être mal exprimé.

j'ai eu le cas sur un script ou j'ai essayé de faire une isset suivi d'un
empty imbriqué dans le premier if.

je me demandais si le formulaire est posté vide est ce que les variables
testé par isset existe quand même,

ci joint un exemple de code.

if(isset($_POST['sexe']) && (isset($_POST['nom'])) &&
(isset($_POST['prenom'])) && (isset($_POST['code_postal']))
&&(isset($_POST['adresse'])) && (isset ($_POST['ville'])) &&(
isset($_POST['telephone'])) &&(isset($_POST['courriel'])) &&
(isset($_POST['message']))){
$sexe=$_POST['sexe'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$cp=$_POST['code_postal'];
$adresse=$_POST['adresse'];
$ville=$_POST['ville'];
$telephone=$_POST['telephone'];
$mail=$_POST['courriel'];
$demande=$_POST['message'];



$erreur = 0;
$message_erreur="Veuillez compléter";

if (empty($_POST['nom']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre nom <br>";
$erreur = 1;
}

if (empty($_POST['prenom']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre prénom
<br> ";
$erreur = 1;
}

if (empty($_POST['adresse']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre adresse
<br>";
$erreur = 1;
}

if (empty($_POST['code_postal']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre code postal
<br>" ;
$erreur = 1;
}else
if(!preg_match("!^[0-9]{5}$!",$_POST['code_postal']))
{
echo "<br/>veuillez saisir un Code Postal correct <br>";
$erreur = 1;
}

if (empty($_POST['ville']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre ville <br>";
$erreur = 1;
}


if (empty($_POST['telephone']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre téléphone
<br>";
$erreur = 1;
}
else
if (!preg_match("!^0[1-48][0-9]{8}$!", $_POST['telephone']))
{
echo "<br/>veuillez saisir un numéro téléphone correct <br>";
$erreur = 1;
}

if(empty($_POST['courriel']))
{

echo "<br/><p style= \"color:red;\"> $message_erreur votre mail <br>";
$erreur = 1;
}else
/*if (!preg_match("!^[a-z0-9.-_]+@[a-z.]+.[a-z]{2,3}$!"
$_POST['mail']))
{
echo "<br/>veuillez saisir une adresse email correct <br>";
$erreur = 1;
}*/



if ($erreur == 0){

erreur == 0){



$sql=pg_query($conn, "INSERT INTO contact(sexe, nom, prenom, adresse,
code_postal, ville, telephone, courriel, message)

VALUES('$sexe', '$nom', '$prenom', '$adresse', '$cp','$ville', '$telephone', '$mail','$demande')");


//echo "\n \n".$sexe.' ' .$nom.' ' .$prenom . ' '. "Votre demande a
bien été enregistrer nous la traiterons avec le plus grand soin";


}
}
  Réponse avec citation
Vieux 06/10/2007, 13h21   #24
yoyo@invalid.news.free.fr
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

Olivier Miakinen wrote:

> Le 06/10/2007 00:12, yoyo@invalid.fr a écrit :
>>>
>>>> finalement le seul controle indispensable d'un formulaire c'est de
>>>> vérifier qu'il soit pas envoyé vide et de verifier que les élements
>>>> saisie soit cohérant avec ce qui est demandé.
>>> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est

>>
>> justement est ce que si une variable esst vide est ce qu'elle existe dans
>> la cas ou l'internaute validerait un post vide.

>
> Je viens de me torturer l'esprit pendant 5 bonnes minutes en essayant de
> comprendre ta phrase, mais je n'y arrive pas. Dans le doute, je vais
> répondre quelque chose en espérant que ce sera la réponse à ta question.
>
> 1) La première chose à faire est de vérifier par isset si le tableau
> $_REQUEST contient bien une entrée du nom qui t'intéresse.
>
> 2) Si le premier résultat est positif, la seconde chose à faire *peut*
> être de regarder si la valeur est une chaîne vide, mais ce n'est pas
> forcément obligatoire. Vérifier directement que la valeur est bien
> de la forme que tu attends peut suffire (par exemple, pour un entier
> positif, vérifier qu'elle contient un chiffre ou plus et aucun autre
> caractère).
>
>
> P.-S. : Ton adresse n'est toujours pas conforme aux recommandations pour
> les adresses invalides. Ça t'ennuie de mettre le .invalid à la fin ?


désolé je me suis peux être mal exprimé.

j'ai eu le cas sur un script ou j'ai essayé de faire une isset suivi d'un
empty imbriqué dans le premier if.

je me demandais si le formulaire est posté vide est ce que les variables
testé par isset existe quand même,

ci joint un exemple de code.

if(isset($_POST['sexe']) && (isset($_POST['nom'])) &&
(isset($_POST['prenom'])) && (isset($_POST['code_postal']))
&&(isset($_POST['adresse'])) && (isset ($_POST['ville'])) &&(
isset($_POST['telephone'])) &&(isset($_POST['courriel'])) &&
(isset($_POST['message']))){
$sexe=$_POST['sexe'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$cp=$_POST['code_postal'];
$adresse=$_POST['adresse'];
$ville=$_POST['ville'];
$telephone=$_POST['telephone'];
$mail=$_POST['courriel'];
$demande=$_POST['message'];



$erreur = 0;
$message_erreur="Veuillez compléter";

if (empty($_POST['nom']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre nom <br>";
$erreur = 1;
}

if (empty($_POST['prenom']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre prénom
<br> ";
$erreur = 1;
}

if (empty($_POST['adresse']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre adresse
<br>";
$erreur = 1;
}

if (empty($_POST['code_postal']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre code postal
<br>" ;
$erreur = 1;
}else
if(!preg_match("!^[0-9]{5}$!",$_POST['code_postal']))
{
echo "<br/>veuillez saisir un Code Postal correct <br>";
$erreur = 1;
}

if (empty($_POST['ville']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre ville <br>";
$erreur = 1;
}


if (empty($_POST['telephone']))
{
echo "<br/><p style= \"color:red;\"> $message_erreur votre téléphone
<br>";
$erreur = 1;
}
else
if (!preg_match("!^0[1-48][0-9]{8}$!", $_POST['telephone']))
{
echo "<br/>veuillez saisir un numéro téléphone correct <br>";
$erreur = 1;
}

if(empty($_POST['courriel']))
{

echo "<br/><p style= \"color:red;\"> $message_erreur votre mail <br>";
$erreur = 1;
}else
/*if (!preg_match("!^[a-z0-9.-_]+@[a-z.]+.[a-z]{2,3}$!"
$_POST['mail']))
{
echo "<br/>veuillez saisir une adresse email correct <br>";
$erreur = 1;
}*/



if ($erreur == 0){

erreur == 0){



$sql=pg_query($conn, "INSERT INTO contact(sexe, nom, prenom, adresse,
code_postal, ville, telephone, courriel, message)

VALUES('$sexe', '$nom', '$prenom', '$adresse', '$cp','$ville', '$telephone', '$mail','$demande')");


//echo "\n \n".$sexe.' ' .$nom.' ' .$prenom . ' '. "Votre demande a
bien été enregistrer nous la traiterons avec le plus grand soin";


}
}
  Réponse avec citation
Vieux 06/10/2007, 21h25   #25
Bruno Desthuilliers
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

yoyo@invalid.news.free.fr a écrit :
>> Le 06/10/2007 00:12, yoyo@invalid.fr a écrit :
>>>> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est
>>> justement est ce que si une variable esst vide est ce qu'elle existe dans
>>> la cas ou l'internaute validerait un post vide.

(snip)
>
> désolé je me suis peux être mal exprimé.
>
> j'ai eu le cas sur un script ou j'ai essayé de faire une isset suivi d'un
> empty imbriqué dans le premier if.
>
> je me demandais si le formulaire est posté vide est ce que les variables
> testé par isset existe quand même,


C'est dans la spec HTTP, tout ça. Et la réponse est non. S'il n'y a
aucune valeur positionnée pour un champ de formulaire, ce champ
n'apparaitra pas dans la requête.


> ci joint un exemple de code.
>
> if(isset($_POST['sexe']) && (isset($_POST['nom'])) &&
> (isset($_POST['prenom'])) && (isset($_POST['code_postal']))
> &&(isset($_POST['adresse'])) && (isset ($_POST['ville'])) &&(
> isset($_POST['telephone'])) &&(isset($_POST['courriel'])) &&
> (isset($_POST['message']))){
> $sexe=$_POST['sexe'];
> $nom=$_POST['nom'];
> $prenom=$_POST['prenom'];
> $cp=$_POST['code_postal'];
> $adresse=$_POST['adresse'];
> $ville=$_POST['ville'];
> $telephone=$_POST['telephone'];
> $mail=$_POST['courriel'];
> $demande=$_POST['message'];
>





>
> $erreur = 0;
> $message_erreur="Veuillez compléter";
>
> if (empty($_POST['nom']))
> {
> echo "<br/><p style= \"color:red;\"> $message_erreur votre nom <br>";
> $erreur = 1;
> }
> if (empty($_POST['prenom']))
> {
> echo "<br/><p style= \"color:red;\"> $message_erreur votre prénom
> <br> ";
> $erreur = 1;
> }
>

(snip)

Doux Jésus...

Tu connais les notions de boucles, de tableau associatifs et de fonction
de rappel ? Parce que franchement, ça te simplifierait la vie...

principe:
1/ tu stockes dans tableau associatif les paires nom_du_champ =>
[nom_fonction_validation, valeur_defaut]. Les fonctions de validation
prennent en entrée un nom de champ, un tableau ($_POST dans ce cas), et
une valeur de défaut optionnelle (NULL par defaut)) et retournent une
paire [valeur, message_erreur].

2/ au retour du post, tu itères sur ces paires, et pour chacune tu
appelle la fonction de validation avec les données qui vont bien, et tu
stocke les résultat dans deux tableaux associatifs 'valeurs' et
'erreurs', ie:

$valeurs = array();
$erreurs = array();
foreach($champs as $nom=>$definition) {
list($valider, $defaut) = $definition;
list($val, $err) = $valider($nom, $_POST, $defaut);
$valeurs[$nom] = $val;
$erreurs[$nom] = $err;
}

2/bis : évidemment, il y a des cas où tu dois faire des validation plus
complexes. Il suffit alors de les ajouter *après* cette boucle - au
moins, le plus gros est fait.

3/ après ça, il suffit de tester le tableau $erreurs pour savoir si le
formulaire est valide.

Si oui, tu n'a plus qu'à soit insérer/mettre à jour tes données d'après
le tableau $valeurs (la construction de la requête SQL qui va bien étant
assez triviale grâces aux fonctions de traitement des tableaux).

Sinon, tu rappelles le fichier 'template' (ie: mélange de php et html)
qui défini ton formulaire en lui passant les deux tableaux, et tu
affiches le resultat.
  Réponse avec citation