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 :

include avec arguments


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2024
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Janvier 2024
    Messages : 153
    Par défaut include avec arguments
    bonjour
    je voudrais faire un include avec des arguments
    J'ai recopié un truc qui dans son cas marche mais pas dans celui que je veux maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include('../../../titre.php?clef=Toto?mot=yabou');  ?>
    sachant que titre.php contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $clef=$_GET['clef'];
    $mot=$_GET['mot']/
    echo '<title> pouetpouet'.$clef.$mot'-Id </title>'; ?>
    Je reconnais que je ne sais pas du tout passer des arguments à des fichiers

  2. #2
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 463
    Par défaut
    Bonjour,

    Les instructions include ou require vont charger le script php via le système de fichier et pas via une url, tu ne peux donc pas ajouter des paramètres d'url dans le chemin en paramètre de include.

    Tu peux simplement déclarer les variables $clef et $mot dans le script avec include sans utiliser la superglobale $_GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // fichier 1
    $clef = 'ABC';
    $mot = 'un titre';
     
    include('../../../titre.php');
     
     
    // fichier titre.php
    echo '<title>' . htmlspecialchars($clef . $mot) . '-Id</title>';

  3. #3
    Nb
    Nb est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Par défaut
    Salut,
    Include peut utiliser des url si php est configuré pour. Par contre c est vraiment, mais vraiment degeulasse.

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Janvier 2024
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Janvier 2024
    Messages : 153
    Par défaut
    OK ! Merci ça fait bien ce que je veux.

    Question : pourquoi "htmlspecialchars"

    Deuxième question : Tu as vu que j'empile les '.../'. Peut-on éviter ça ? Y a-t-il un moyen de donner un chemin absolu comme en html. J'ai tenté '/' et '\' mais aucun des deux ne fonctionne.

    Pour finir j'ai des états d'âme concernant include.

    On a donc <?php include(fichier) ?>
    Avec ma logique entre les balises il doit y avoir du code php sauf que le fichier contient du html, à savoir les meta, et je m'aperçois en tatonnant que je dois le laisser comme ça tel quel ... donc entre mes balises il y a du code html sans 'echo' ...
    Comment se fait-il que ça passe ?

    J'ai même envie de dire que l'instruction 'include' ferme le mode php car si je mets un 'echo' dans le fichier ça bugue. Je dois y écrire à nouveau <?php echo ?>

  5. #5
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 463
    Par défaut
    Citation Envoyé par noradan Voir le message
    Question : pourquoi "htmlspecialchars" ?
    Pour éviter les failles XSS.
    Au passage, à ne pas confondre avec les injections sql.



    Si ton projet a un seul point d'entrée (un seul fichier php recevant toutes les requêtes http du client, autrement appelé front controller), tu peux créer un fichier de configuration avec une constante spécifiant le chemin absolu vers la racine du projet (ce chemin peut être défini dynamiquement via __DIR__ ) pour ensuite inclure ce fichier de configuration dans le point d'entrée de ton projet afin d'utiliser la constante dans les autres scripts.

    Cette solution est moins adaptée si ton projet a plusieurs point d'entrée (c-a-d si l'utilisateur peut appeler différents fichiers php via l'url) car il faut inclure le fichier de configuration dans chaque point d'entrée en déterminant le chemin relatif vers ce fichier par rapport au script courant, ce qui reviens à peu près au problème initial.

    Par exemple, un fichier config.php à la racine de ton projet contenant une constante spécifiant le chemin absolu de la racine du projet sur le serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
     
    const PROJECT_DIR = __DIR__ . '/'; // /var/www/html/
    Dans un fichier de ton site situé par exemple à la racine de ton projet, tu peux inclure le fichier de configuration pour utiliser ensuite la constante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    include 'config.php';
     
    include PROJECT_DIR . 'dossier1/dossier2/title.php'; // /var/www/html/dossier1/dossier2/title.php
    Dans un second fichier situé par exemple dans admin/index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    include '../config.php';
     
    include PROJECT_DIR . 'dossier1/dossier2/title.php'; // /var/www/html/dossier1/dossier2/title.php


    A propos de tes questions sur include :
    Dans ta logique, il faudrait ajouter ou enlever les balises php selon si le fichier est inclu ou non, ce qui ne serait pas pratique.
    Dans un fichier php, le code php doit être valide et doit donc être des balises <?php ... ?>, peu importe que ce fichier soit inclu ou non dans un autre fichier.

    Si c'est plus simple/logique pour toi, tu peux effectivement considérer que include ferme la balise php avant d'inclure le fichier php.

Discussions similaires

  1. appel d'un module externe avec argument en entree
    Par oursblanc dans le forum Modules
    Réponses: 6
    Dernier message: 21/10/2005, 00h16
  2. [Système] Pb d'include avec $_GET
    Par JSuper_Kitten dans le forum Langage
    Réponses: 6
    Dernier message: 28/09/2005, 16h23
  3. problème include avec win 2003 / IIS6
    Par fredoche dans le forum ASP
    Réponses: 3
    Dernier message: 26/09/2005, 18h36
  4. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 09h04
  5. [C#] Equivalent Property avec arguments de VB.NET
    Par Antz dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/03/2004, 14h14

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