Intérrogation sur unset() ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par tryan, 8 Avril 2010.

  1. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    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 ?

    Code:
    <?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 :mrgreen:
     
  2. honolulu
    honolulu WRInaute impliqué
    Inscrit:
    8 Novembre 2005
    Messages:
    746
    J'aime reçus:
    0
  3. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    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 ?
     
  4. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    ca veut donc dire que tu l'a récupéré quelque part ce bout de code. il y avait peut-être avant une utilisation de $erreur.
     
  5. honolulu
    honolulu WRInaute impliqué
    Inscrit:
    8 Novembre 2005
    Messages:
    746
    J'aime reçus:
    0
    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 :wink:
    edit : désolé, je ne voulais pas être condescendant dans le 1er post :wink:
     
  6. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    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 :wink: .
     
  7. anemone-clown
    anemone-clown WRInaute passionné
    Inscrit:
    11 Novembre 2007
    Messages:
    1 577
    J'aime reçus:
    20
    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. :mrgreen:

    Jef (7-8 ans d'assembleur et qui tape encore quelques lignes en fortran interfacé à du prolog)
     
  8. honolulu
    honolulu WRInaute impliqué
    Inscrit:
    8 Novembre 2005
    Messages:
    746
    J'aime reçus:
    0
    merci pour cette précision :wink:
     
  9. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    idem, grand merci même si je n'ai pas tout comprit ^^, alors je vais relire jusqu'à ce que j'imprime :).
     
Chargement...
Similar Threads - Intérrogation unset() Forum Date
WordPress Interrogation sur structure de lien Débuter en référencement 2 Novembre 2021
PHP / CURL : interrogation page tiers ne fonctionne plus Développement d'un site Web ou d'une appli mobile 2 Octobre 2021
Commentaires-liens point d'interrogation. Développement d'un site Web ou d'une appli mobile 20 Juillet 2021
Point d'interrogation dans l'URL = duplicate ? Débuter en référencement 26 Décembre 2017
Points interrogation à la place des accents Développement d'un site Web ou d'une appli mobile 23 Novembre 2016
Duplicate content et URL en point d'interrogation Référencement Google 25 Novembre 2015
[résolue] Probléme redirection et point d'interrogation URL Rewriting et .htaccess 23 Novembre 2015
RedirectPermanent + problème lié au point d'interrogation URL Rewriting et .htaccess 24 Avril 2015
Interrogation et test sur la valeur d'un lien interne Tests et études de cas 14 Novembre 2014
URL rewriting et point d'interrogation URL Rewriting et .htaccess 8 Septembre 2014
Redirection d'une URL avec un point d'intérrogation URL Rewriting et .htaccess 2 Août 2014
Modifier un "." en "%2E" mais après le point d'interrogation URL Rewriting et .htaccess 7 Mars 2014
Point d'interrogation dans l'URL URL Rewriting et .htaccess 26 Juillet 2013
Interrogations sur le black hat Débuter en référencement 3 Mai 2013
Quelques interrogations sur l'analyse du trafic d'un espace privé Google Analytics 17 Janvier 2013
Réécrire des URL avec un p... de point d'interrogation ? URL Rewriting et .htaccess 10 Décembre 2010
RedirectPermanent et le problème de point d'interrogation dans l'Url Netlinking, backlinks, liens et redirections 31 Octobre 2010
Interrogation sur Adwords AdWords 28 Mars 2010
FPDF apostrophes remplacées par point d'intérrogation Développement d'un site Web ou d'une appli mobile 22 Février 2010
URL avec un point d'interrogation Débuter en référencement 31 Décembre 2009