Intérrogation sur unset() ?
9 messages
• Page 1 sur 1
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Intérrogation sur unset() ?
Bonjour,
Pour ma culture perso., je ne comprend pas très bien l'utilisation du unset($erreur); dans le code suivant ? J'ai bien compris que cette fonction permet de détruire la variable $erreur mais à t'elle vraiment sa place dans ce code et si oui pourquoi ?
Merci de vos lumières
Pour ma culture perso., je ne comprend pas très bien l'utilisation du unset($erreur); dans le code suivant ? J'ai bien compris que cette fonction permet de détruire la variable $erreur mais à t'elle vraiment sa place dans ce code et si oui pourquoi ?
- Code: Tout sélectionner
<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = 'upload/photo/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1),
$extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg
!';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜ
Ýàáâãäåçèéêëìíîïðòóôõöùúû
üýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_',
$dest_fichier);
// copie du fichier
$photo = $dest_fichier;
if (move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier .
$dest_fichier)) { echo "copie effectuée"; }
}
?>
Merci de vos lumières
- honolulu
- WRInaute impliqué

- Messages: 942
- Inscription: 8 Nov 2005
Re: Intérrogation sur unset() ?
unset = http://fr2.php.net/manual/fr/function.unset.php
isset = http://fr2.php.net/manual/fr/function.isset.php
rtfm
isset = http://fr2.php.net/manual/fr/function.isset.php
Si une variable a été détruite avec la fonction unset(), la fonction isset() renverra FALSE.
rtfm
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Intérrogation sur unset() ?
Merci honolulu ,
moi aussi je consulte le manuel php quand je ne sais pas mais dans le contexte actuelle du code, je ne comprend toujours pas ce que fait cette fonction ici ^^ ?
Quelle est l'intérêt de détruire la variable $erreur ?
moi aussi je consulte le manuel php quand je ne sais pas mais dans le contexte actuelle du code, je ne comprend toujours pas ce que fait cette fonction ici ^^ ?
Quelle est l'intérêt de détruire la variable $erreur ?
- honolulu
- WRInaute impliqué

- Messages: 942
- Inscription: 8 Nov 2005
Re: Intérrogation sur unset() ?
c'est une sorte de reset, de "remise à 0" qui vient d'ailleurs (d'un autre script) effectivement.. il ne sert pas à grand chose ici 
edit : désolé, je ne voulais pas être condescendant dans le 1er post
edit : désolé, je ne voulais pas être condescendant dans le 1er post
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Intérrogation sur unset() ?
Effectivement e-kiwi, il sagit d'un script d'upload que l'on trouve un peut partout (-http://www.siteduzero.com/forum-83-854-p1-systeme-d-upload.html par exemple). Mais même dans cette exemple, je vois pas pourquoi cette fonction est présente ?
Pas de soucis honolulu
.
Pas de soucis honolulu
-

anemone-clown - WRInaute passionné

- Messages: 1277
- Inscription: 11 Nov 2007
Re: Intérrogation sur unset() ?
Bonjour,
elle vient détruire toute affectation préalable de la variable du nom $erreur. Le script fait un unset car ensuite il teste sur un isset; or même en mettant à la variable à '' (chaine vide) ou à la valeur false, le isset renverra vrai... Seules une variable totalement inexistante renvoie false sur un isset. Le unset est donc indispensable dans ce cas.
Si tu veux faire autrement : tu remplaces unset($erreur) par $erreur = '' puis pour le test !isset($erreur), tu remplaces par $erreur != ''
Ensuite, la technique unset/isset est nettement, mais nettement plus rapide que l'affectation a une chaine vide puis test d'une chaine, car dans le cas du unset/isset, c'est juste une comparaison de bit.
(en gros, c'est 8 à 16 fois plus rapide que le test d'une chaine de caractère).
En résumé, c'est la technique utilisée par les bons (les vrais) programmeurs.
Jef (7-8 ans d'assembleur et qui tape encore quelques lignes en fortran interfacé à du prolog)
elle vient détruire toute affectation préalable de la variable du nom $erreur. Le script fait un unset car ensuite il teste sur un isset; or même en mettant à la variable à '' (chaine vide) ou à la valeur false, le isset renverra vrai... Seules une variable totalement inexistante renvoie false sur un isset. Le unset est donc indispensable dans ce cas.
Si tu veux faire autrement : tu remplaces unset($erreur) par $erreur = '' puis pour le test !isset($erreur), tu remplaces par $erreur != ''
Ensuite, la technique unset/isset est nettement, mais nettement plus rapide que l'affectation a une chaine vide puis test d'une chaine, car dans le cas du unset/isset, c'est juste une comparaison de bit.
En résumé, c'est la technique utilisée par les bons (les vrais) programmeurs.
Jef (7-8 ans d'assembleur et qui tape encore quelques lignes en fortran interfacé à du prolog)
- honolulu
- WRInaute impliqué

- Messages: 942
- Inscription: 8 Nov 2005
Re: Intérrogation sur unset() ?
anemone-clown a écrit:Ensuite, la technique unset/isset est nettement, mais nettement plus rapide que l'affectation a une chaine vide puis test d'une chaine, car dans le cas du unset/isset, c'est juste une comparaison de bit.(en gros, c'est 8 à 16 fois plus rapide que le test d'une chaine de caractère).
merci pour cette précision
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- interrogation ??
- interrogation ???
- Intérrogation : tréma
- une interrogation
- Interrogation sur Adwords
- Divers interrogation, backlink? pagerank?
- Plusieurs interrogation à propos du DOCTYPE
- Interrogation sur le duplicate content
- Interrogation sur une extension
- Help : Pb de réécriture avec pt interrogation à gauche
- La Google Dance existe-elle encore ? (octobre 2003) - 22-10-2003
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

