Tester des variable $_POST

Répondre
Ladaman
le 30/03/2007 à 10:47
Ladaman
Salut à tous,

Je souhaite tester des variables envoyées par un formulaire avec la méthode post.
Pour cela j'utilise la fonction isset et mon script fonctionne mais seulement à moitié; je m'explique:
Je test ma variable et si elle existe (c'est à dire si le champ du formulaire a été rempli), je lui attribue le contenu du champ du formulaire. Jusque là, rien d'exceptionnel et ça marche mais dans le cas où le formulaire n'est pas rempli, je veux donner à ma variable une valeur du genre "Vide". Mais là ça ne marche pas !!!
Voilà mon code:

Code:
if (isset ($_POST["adresse"])) {
$mailaddress=$_POST["adresse"];
}
else {
$mailaddress = "Vide";
}


Ensuite je fais un simple:
Code:
print ($mailaddress);

mais au lieu de m'afficher "Vide", il ne m'affiche rien.

Est ce que quel qu'un peut me dire ce qui ne va pas dans mon code ?

Merci d'avance de votre aide.
LA GLOBULE
le 30/03/2007 à 11:21
LA GLOBULE
Quand tu soumets ton formulaire, meme si tu ne saisis rien dans ton champ texte, $_POST['adresse'] sera quand meme isset, mais cette variable sera vide.

Il faut donc, en plus de tester avec un isset, faire un test sur la taille de la chaine contenu dans ta variable avec un strlen par exemple.
Ladaman
le 30/03/2007 à 12:18
Ladaman
Salut,

Merci pour ces infos.
Je dois donc faire un test du genre: si strlen = 0 alors $mavariable="vide"

Dans ce cas là, ça sert à quoi de tester avec un isset ?
LA GLOBULE
le 30/03/2007 à 12:30
LA GLOBULE
Ca sert à tester que la variable existe bien.

Si jamais un mec (un "hacker") balance une requête POST sur ta page (requête qu'il construira lui même sans passer par ton formulaire) et que tu ne testes pas avec un isset, çà va générer une erreur.

Et oui, il faut tester si strlen == 0.
Bzh
le 30/03/2007 à 12:33
Bzh
<?php

if( ! empty( $_POST['variable'] ) ){

//La variable est bien déclaré et n'est pas vide


}

?>


Voila, tester que la variable existe et n'est pas null !

Bye
LA GLOBULE
le 30/03/2007 à 12:44
LA GLOBULE
Attention a empty qui retourne true meme si ton champ n'est pas vide (tape un 0 dans ton champ, empty te retournera true).

C'est pour ça, isset et strlen, c'est le futur :)

(en fait, empty fait son boulot, c'est juste que c'est un "faux amis", car souvent, on croit qu'il teste si c'est vide ou non, donc attention Ladaman ! Car il me semblait que tu voulais tester que le champ était vide)
Ladaman
le 02/04/2007 à 16:25
Ladaman
Salut et merci à tous pour votre aide.

Voilà ma version:
if (isset ($_POST["name"]) && strlen($_POST["name"]) != 0) {
$nom=$_POST["name"];
}
else {
$nom="error";
}


Ca ne casse pas trois pattes à un canard mais ça marche.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours