Besoin d'explication sur la fonction isset()

Eléphant du PHP | 63 Messages

05 déc. 2005, 13:09

Bonjour à tous,

En suivant des tutos sur le PHP, et plus particulièrement sur la récupération des valeurs d'un formulaire, je m'aperçois que selon le tutoriel, j'ai çà :

Code : Tout sélectionner

$prenom = $_POST['prenom']; $nom = $_POST['nom'];
ou çà :

Code : Tout sélectionner

$prenom = isset($_POST['prenom']); $nom = isset($_POST['nom']);
J'ai donc essayé de me documenter sur cette fonction et voilà ce que j'ai trouvé :
isset

(PHP 3, PHP 4, PHP 5 )
isset -- Détermine si une variable est affectée
Description
bool isset ( mixed var [, mixed var [, ...]] )

isset() renvoie TRUE si la variable var est définie, FALSE sinon.

Si une variable a été détruite avec la fonction unset(), la fonction isset() renverra FALSE. isset() reverra FALSE lors du test d'une variable de valeur NULL. Notez aussi que le caractère nul ("\0") n'est pas équivalent à la constante PHP NULL.

Attention ! : isset() fonctionne uniquement avec des variables car l'utilisation de toute autre chose aura comme conséquence une erreur d'analyse. Pour vérifier si une constants est définie, utilisez la fonction defined().
Mais j'avoue que je ne comprends pas bien la différence entre les 2 codes.

Pourriez-vous m'expliquer, ou du moins m'orienter vers des liens détaillant mieux cette fonction ?

Merci d'avance.
@+ fafane84
Web Tutoriels (site test) et DivX Tutos : les tutos de fafane84

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 déc. 2005, 13:37

la fonction isset permet de s'assurer que la variable existe

Si, par exemple, dans un formulaire, tu demandes le nom, le prenom et l'age du visiteur, pour t'assurer que ces champs sont saisies, tu peut faire isset($_POST["nom"])

si cette fonction retourne vrai, c'est que la variable existe, si elle retourne faux, c'est qu'elle n'existe pas

L'une des principales utilisations de cette variable est d'éviter l'attribution depuis une variable qui n'existe pas
//Attribution dans $a d'une variable qui n'existe pas
$a = $b;

//Attribution à $a de $b seulement si cette dernière existe
if (isset($b)) {
  $a = $b
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 63 Messages

05 déc. 2005, 14:24

Merci de ta réponse zeus !!!

A la lecture de ton post, j'en concluais donc qu'il me fallait rajouter cette fonction, seulement voilà après l'avoir testé, je ne suis pas sûr de bien l'utiliser.

En incluant cette fonction de cette manière :

Code : Tout sélectionner

$prenom = isset($_POST['prenom']); $nom = isset($_POST['nom']);
les valeurs des champs sont remplacées par "1".

Tandis que sans la fonction isset(), si les champs ne sont pas servi rien ne s'affiche, ce qui semble logique.
Pour compenser cela, j'ai rajouté des conditions :

Code : Tout sélectionner

//Vérification nom if(empty($nom)) { print("<p class=\"centre important\">Vous devez obligatoirement saisir votre nom.</p>"); exit(); } // Vérification prénom if(empty($prenom)) { print("<p class=\"centre important\">Vous devez obligatoirement saisir votre pr&eacute;nom.</p>"); exit();
Je me demande donc si dans mon cas, il me faut vraiment utiliser cette fonction ?
Web Tutoriels (site test) et DivX Tutos : les tutos de fafane84

ViPHP
ViPHP | 2144 Messages

05 déc. 2005, 14:38

isset() te permet de savoir si la variable existe, et te renvoit donc un boolean vrai si elle existe, sinon faux (ce qui à l'affichage peut donner 1 ou 0 )

Tu dois utiliser la fonction isset() dans un if
ex:
if (isset($_POST['prenom'])) 
     $prenom = $_POST['prenom'];


 
la fonction empty permet de vérfier si la variable contient quelque chose.( renvoit true si vide, sinon false)
Donc généralement, dans un traitement de formulaire, on vérfie d'abord avec isset() si la variable existe, ensuite on peut vérifier si elle contient quelque chose avec empty()

Eléphant du PHP | 63 Messages

05 déc. 2005, 17:01

Ah OKAY !!! :)

Seulement, excusez-moi d'être lourd :oops: , si je comprends bien cette fonction ne sert que si l'on n'est pas sûr de çà syntaxe, n'est-ce pas ???

Car si dans le cas où le champs du formulaire s'appelle "nom" et que que la variable est libellé $nom = $_POST['nomerroné']; la fonction sera donc utile.

Mais si on est sûr qu'il n'y a pas d'erreur, l'est-elle vraiment ?
Web Tutoriels (site test) et DivX Tutos : les tutos de fafane84

ViPHP
ViPHP | 2144 Messages

05 déc. 2005, 22:24

Elle a de multiple usage, par exemple, l'utilisateur peut très bien arriver sur une page de traitement sans être passé par la page du formulaire avant.
La bonne pratique, c'est de vérifier que ce qu'on récupère par get, post, session existe bien avec isset
Modifié en dernier par iclo le 06 déc. 2005, 14:06, modifié 1 fois.

Eléphant du PHP | 63 Messages

06 déc. 2005, 12:08

Merci, je comprend mieux maintenant :D

Je n'avais pas penser au fait que l'on puisse taper directement l'adresse de la page traitant les données provenant du formulaire :oops:
Web Tutoriels (site test) et DivX Tutos : les tutos de fafane84