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 :

[Sécurité] code propre: privilegier function ou include ?


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Par défaut [Sécurité] code propre: privilegier function ou include ?
    Bonjour,
    Voila dans un souci d'avoir un code le plus propre et sémantiquement correct, je voulais savoir si le plus correct était d'utiliser une fonction ou un include, dans le cas d'un affichage :
    Par exemple imaginons une pagination des résultats d'une requetes sous la forme:
    << < page 3/13 > >>
    Si je veux utiliser l'affichage de la navigation des pages ainsi dans plusieurs page différente, plutot que de réécrire le code, j'aimerai en faire une fonction php, qui prend en paramètres la pageMax, ainsi que quelques autres parametres : la page actuelle etc...
    Mais vaut il mieux utiliser une fonction avec parametres pour l'affichage ? Ou bien un include('navig_page.php') ? Et si j'utilise un include, commen passer les paramètres ? Juste en les définissant avant d'appeller le include ?

    Merci de répondre a un codeur soucieux de la propreté et qualité de son code

  2. #2
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    L'include (ou le require) permet de simplifier le code de chaque page et de le répartir en plusieurs librairie.

    Les variables utilisées dans un include sont utilisable partout

    exemple :
    mapage.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pageMax = 4;
    $numpage = 1;
    include("pagination.php")
    pagination.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "page $numpage/$pageMax";
    cela fonctionne (normallement...)

  3. #3
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Sinon regarde au niveau des variables de SESSION..

  4. #4
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut Re: code propre: privilegier function ou include ?
    Citation Envoyé par Raay
    Bonjour,
    Voila dans un souci d'avoir un code le plus propre et sémantiquement correct, je voulais savoir si le plus correct était d'utiliser une fonction ou un include
    Les deux mon capitaine !
    Tu fais un fichier par fonctionnalité, par exemple affichage.php s'occupera de tout ce qui est affichage, user.php s'occupera de tout ce qui est relatif aux utilisateurs, ...
    puis dans chaque tu définis des fonctions qui te permettent de faire ce que tu veux
    Bien sur tu peux rafiner, si ton systeme de pagniation est complexe, tu va vouloir faire un fichier à part, afin de ne pas avoir un énorme fichier affichage...

    C'est comme ça que je vois les choses...
    HTH

  5. #5
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Par défaut
    Merci a vous deux

    @raptor70: Je n'utiliserai pas de variables de sessions vu que je n'en ai pas besoin pour mon projet actuellement.
    Quant a la solution du include, je ne comprends pas trop comment répartir le code en plusieurs librairies ? Au contraire ca veut dire qu'il faut créer un fichier pour chaque fonctionnalité non ? Enfin je suppose que l'idée de librairies est plutot atteinte par un ou des includes de fichiers contenant des fonctions, comme la solution de Mr N. Sinon pour le passage de variables au fichiers include, ce qui me gene c'est qu'en regardant le fichier inclut, on ne voit pas directement de quelles variables il a besoin, contrairement au fonctions ou on peut le voir dans l'entete, de plus le passage de parametres ne me parait pas tres conventionnel dans la mesure ou on ne passe pas réellement de paramètres au fichier, c'est plutot le fichier qui va chercher ce dont il a besoin.

    Parallèlement, utiliser une fonction pour l'affichage me fait un peu bizarre, pour moi ca serait a priori plutot pour les calculs et autres traitement. Apres tout pour afficher l'entete et le pied de page, en général on utilise un include non ? Donc pour continuer dans la logique je me dis que c'est mieux d'utiliser des include pour les 'morceaux' d'affichage de pages.

    @Mr N: J'aime bien cette solution, mais dans ce cas c'est plutot un appel de fonction qui est fait, c'est juste que cette fonction est en quelque sorte 'classée' dans un fichier dédié au fonctions d'affichage.

    Le fait est qu'aussi pour structurer mon site je programme un peu a la maniere des templates: j'essaye de structurer données et affichage, c'est pourquoi ca me fait également un peu bizarre d'utiliser une fonction pour l'affichage. Mais le fait de mettre ces fonctions dans un fichier dédié a l'affichage est séduisant, dans la mesure ou ce fichier pourrait ensuite se retrouvé (ou etre complémenté) dans un dossier de thème, comme en utilisant un include, pour avoir des affichages différents selon les thèmes

  6. #6
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 950
    Par défaut
    les theme, c'est plus avec du CSS, non?

    pour l'accés aux données nescesasire "non viblbles directement" lors qu'il s'agit d'un include...

    bein si tu as a faire un include (deja include_once c'est mieux, je pense)
    deux alternantives :

    1/ tu les lance en debut de script, ayant une portée globale, tu peut ensuite accéder aux fonctions contenues de partout, ce n'est pas ta solution

    2/tu les lance là ou tu veut que soit effectué ton affichage, ce n'est donc plus une ntino de librairie, mais un appel a une fonctionalitée specifique fournie par un fichier donné.

    la solution 2/ est une solution "dediée" : elle n'est pas polyvalente et a donc toujours besoin ds meme variables/methodes.

    ca marche un jours, ca marche toujours... (enfin sauf chez cro$oft :p )

  7. #7
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Par défaut
    J'avoue ne pas tout comprendre

    Les themes c'est plutot avec du css oui, mais je ferais en sorte que comme dans un systeme de template j'ai des pages contenant des données, et dans les themes j'ai des pages s'occupant de l'affchage, qu'on pourra redefinir au besoin.
    Citation Envoyé par hansaplast
    pour l'accés aux données nescesasire "non viblbles directement" lors qu'il s'agit d'un include...
    Je vois pas le verbe de la phrase donc je n'en comprends pas trop le sens ^^;
    Ensuite si je parle d'include l'affichage, je veux pouvoir utiliser plusieurs fois le meme affichage dans la meme page, et donc je ne peux pas utiliser include_once.

    Pourquoi le 1/ n'est pas ma solution ? J'ai du mal a suivre. En fait le 1/ c'est d'utiliser des fonctions, tout betement non ?

    Pour le 2/ c'est ce que je suppose en disant appeller un include au lieu d'une fonction. Tu dis qu'elle n'est pas polyvalente dans la mesure ou les parametres ne sont pas fixés et doivent impérativement porter le meme nom ? Si c'est ca je suis d'accord

  8. #8
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 950
    Par défaut
    pour l'accés aux données nescesasire "non viblbles directement" lors qu'il s'agit d'un include...
    c'est clair, c'est pas clair? c'est plus clair?

    en fait "non visible directement" car dans un fichier externe
    "nescessaire" car t'en a besoin.


    pour le include_once tu a raison


    le 1/ s'applique si tu veut faire des fonctions, en quel cas, ca te permet de verifier si tu as tous les bon parametres a passer.

    le 2/ s'applique si tu est sur d'avoir les variables globales nescessaires.

    si tu veut appeller plusieurs fois cet "outil" de création de contenu, je te conseil les fonctions, le code sera plaus calir.

    en effet, sinon, le nommage de tes variable sera a refaire a chaque fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $toto = 3;
    $foo = 5;
    $requete = "select...";
    $bdd = $maclasseSQL->query($requete);
    include "tata/bar.php";
     
    $toto = 4;
    $foo = 12;
    $requete = "select...";
    $bdd = $maclasseSQL->query($requete);
    include "tata/bar.php";
    alors que pour le 1/ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    include_once "tata/bar.php";
    $requete = "select...";
    creationSuperMagique(3,5,$requete);
    $requete = "select...";
    creationSuperMagique(4,12,$requete);
    il me semble que 1/ est plus clair, non?

  9. #9
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Par défaut
    Oui je pense que je vais opter pour des fonctions, en les mettant dans un fichier fonctions_affichage pour les regrouper

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Qu'est ce que cela veux dire un "code propre" selon-vous ?
    Par kagura dans le forum Général Conception Web
    Réponses: 45
    Dernier message: 09/02/2016, 14h22
  2. Réponses: 2
    Dernier message: 05/07/2005, 14h46
  3. Code propre ? :)
    Par Orus dans le forum C++
    Réponses: 24
    Dernier message: 09/12/2004, 18h16
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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