2010-08-23 5 views
1

Je suis dans le besoin d'inclure un fichier PHP que je ne peux atteindre avec une adresse HTTP complète. Je suis confus à propos de ce sujet, j'ai entendu dire que c'est une mauvaise pratique. Comment puis-je résoudre cela?Inclure/Exiger l'adresse HTTP

+0

Que fait ce fichier? Est-ce qu'il sert le code source? Si vous souhaitez d'autres suggestions, vous devrez ajouter quelques détails supplémentaires. –

+0

C'est un fichier qui est inclus dans plusieurs de mes autres pages. Il contient toutes sortes de scripts, HTML et quelques analyses. Je ne peux pas simplement le mettre dans toutes ces pages, parce que si j'ai besoin d'éditer quelque chose de mineur, je vais devoir parcourir toutes ces pages. – Benny

+0

dans ce lien, vous voyez que vous pouvez le faire avec include Exemple # 3 include() via http http://php.net/manual/en/function.include.php –

Répondre

1

Oui, il n'est pas recommandé d'inclure sur HTTP, sauf si vous êtes vraiment sûr de la source. Si vous voulez juste pour obtenir le contenu de celui-ci, sans exécuter du code PHP, vous pouvez utiliser:

Fot cela, le paramètre PHP allow_url_fopen doit être activée. Une autre option à l'aide cURL (sans vergogne pris du manuel PHP):

<?php 
// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 
?> 

Vous devez passer par htmlentities() si nescessary.

Si vous êtes sur le même serveur, vous pouvez utiliser:

<?php 
readfile('footer.html'); 
?> 
0

Il est très mauvaise pratique. Au lieu de l'inclure, pourquoi ne pas inclure une copie locale du fichier et utiliser SSH pour le synchroniser avec la copie sur le serveur distant.

+0

Ce serait trop compliqué pour mes besoins. – Benny

+0

Le copierait-il une fois (ou quand il change) serait-il trop compliqué? Est-ce que ce fichier change souvent? –

2

du manuel: http://php.net/manual/en/function.include.php

lire aussi avertissement de sécurité attaché

Si « URL fopen wrappers » sont activés en PHP (qui ils sont dans la configuration par défaut), vous pouvez spécifier le fichier être inclus en utilisant une URL (via HTTP ou autre wrapper pris en charge - voir Liste des protocoles/wrappers pris en charge pour une liste de protocoles) au lieu d'un chemin d'accès local. Si le serveur cible interprète le fichier cible comme du code PHP, les variables peuvent être transmises au fichier inclus à l'aide d'une chaîne de requête d'URL utilisée avec HTTP GET. Ce n'est pas à proprement parler la même chose que d'inclure le fichier et de lui faire hériter de la portée de la variable du fichier parent; le script est en cours d'exécution sur le serveur distant et le résultat est alors inclus dans le script local.