IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Avantages de cet algo


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut Avantages de cet algo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_GET['id'])){
      $id =(int)$_GET['id'];
      unset($_GET['id']);
      //Suite du code avec $id
      ...
    }
    A quoi peut vraiment servir ce bout de code ? Pourquoi détruire $_GET['id'] et pour le reste du code bosser avec $id ?

    Merci d'avance...

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Il est vrai qu'à part être sûr que la valeur ne pourra être réutilisé sans être épurée et testée il n'y a aucun intérêt.
    Mais c'est tout de même un très bon point que d'interdire d'utiliser une variable brute.

  3. #3
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Ya quand même plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(isset($_GET['id']))
        $_GET['id'] = intval($_GET['id']);
    comme çà quelque-soit le code qui utilise la variable passée en paramètre elle est bien nettoyée. De plus cela permet de conserver un fonctionnement normal d'application sans se casser la tête.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Comme l'a dit transgohan on évite d'utiliser directement des variables externes comme $_GET, $_POST, $_COOKIE, puisque celles-ci peuvent être définies directement pas l'utilisateur.
    Dans ton exemple $_GET['id'] est transtypé en entier, et donc "id" sera nécessairement un entier.

    On peut faire aussi comme dit ThomasR, chacun fait suivant ses préférences et suivant ses besoins, mais l'important est de prendre l'habitude de vérifier ses variables avant de les utiliser.

    Souvent on profite de l'occasion pour attribuer une valeur par défaut, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = isset($_GET['id']) && is_numeric($_GET['id']) ? intval($_GET['id']) : 0;

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Bjr,
    Pour les données provenant d'un formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $id =$_POST['var'];
    unset($_POST['var']);
    Ceci ne résoudrait pas le problème de rafraichissement d'une page recevant les données d'un formulaire ?

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Tant que le formulaire est soumis en HTTP classique (et non pas avec un XHR) le rafraichissement de page se produit car le navigateur fait partir une nouvelle requête POST.

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Ceci ne résoudrait pas le problème de rafraichissement d'une page recevant les données d'un formulaire ?
    Théoriquement non.
    Quand on rafraichi (ou actualise) une page contenant un formulaire, les données sont à nouveaux transmises, donc ensuite à nouveau récupérées par le serveur et le même code sera alors exécuté.

    Ce que ThomasR à suggéré me semble plus judicieux : filtrer la donnée plutôt que la détruire.


    Ceci dit, quand on regarde comment procède certains FrameWork, ils procèdent en gros de la même manière que tu fais.
    En gros ils stockent les données GET/POST entre autre dans un Objet, les filtre par la même occasion.
    Les tableaux $_GET $_POST sont détruits/vidés, et c'est via l'Objet dédié qu'il faut exploiter coté application.

    Ce n'est pas tous les FrameWork qui le font, mais n'empêche ça se fait.

  8. #8
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Ceci ne résoudrait pas le problème de rafraichissement d'une page recevant les données d'un formulaire ?
    Non car le navigateur va exécuter la requête HTTP précédente, et pas à partir de la réponse HTTP.

Discussions similaires

  1. Aide sur complexité de cet algo
    Par laureat dans le forum Débuter
    Réponses: 4
    Dernier message: 18/09/2009, 13h33
  2. Que me renvoie cet algo Kruskal?
    Par arnoctambule dans le forum Général Java
    Réponses: 2
    Dernier message: 17/01/2008, 14h46
  3. Votre avis sur cet algo tres simple
    Par JoloKossovar dans le forum Général Java
    Réponses: 3
    Dernier message: 10/01/2008, 18h13
  4. cet algo ma rendu folle, aidez moi svp
    Par sarah_angel dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 06/11/2007, 22h35
  5. Corriger cet Algo et trier les éléments du tableau en ordre décroissant
    Par PIMPMAX dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 07/01/2007, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo