Bonjour

Est-il correct d'afficher ce type de lien dans une fonction "include" ? Cela ne réponsente-t-il pas de dangers ?
<?php include("/home/users/00/24/home/www/top.php"); ?>


Le cas échéant merci de bien vouloir m'indiquer une piste à suivre, j'ai bien essayé d'ajouter que "top.php" mais il faut que ce fichier soit dans tous les dossiers et sous dossiers, pas pratique quand on doit modifier ce fichier sur toutes les pages. Smiley decu
Bonjour, je ne vois pas de problème. On est d'accord que là tu te trouve en local, sur ton ordinateur. Par contre lorsque tu mettra ton site en ligne tu devra modifier tous les liens.
J'ai fait un lien absolu pour essayer, mais ça ne fonctionne pas, la page me sort une erreur là où devrait apparaître le fichier. Le fichier est placé à la racine ; est-ce que ça a un rapport ? Je l'ai placé dans un dossier toujours à la racine ça ne change rien. Si, je colle le lien direct dans le navigateur ça fonctionne.
a écrit :
<?php include("http://www.exemple.org/top.php"); ?>


Voici les erreurs que j'obtiens, si ça peut aider :

a écrit :
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/users/00/24/home/www/index.php

Warning: include(http://www.exemple.org/top.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/users/00/24/home/www/index.php

Warning: include() [function.include]: Failed opening 'http://www.exemple.org/top.php' for inclusion (include_path='.:/usr/lib/php5') in /home/users/00/24/home/www/index.php


Merci Smiley cligne
Modifié par bulle97 (13 Nov 2009 - 09:25)
Ajoute le bon répertoire dans l'include path ou crée des liens symboliques, je vois pas trop d'autre solution.
Laurie-Anne a écrit :
Oui, là du coup... Autant faire des liens absolus.

Non, car si tu changes d'hébergement le site ne fonctionne plus du tout. Mieux vaut faire des liens relatifs, ou des liens partant d'une variable disponible dans tous les scripts et qui représente le chemin absolu (sur le serveur) du répertoire racine du site.

bulle97 a écrit :
J'ai fait un lien absolu pour essayer, mais ça ne fonctionne pas, la page me sort une erreur là où devrait apparaître le fichier.

(...)

URL file-access is disabled in the server configuration

Woula on se calme. On a dit faire des include avec un chemin absolu, pas faire des include d'URL! C'est pas du tout DU TOUT la même chose. En général, inclure une URL est interdit par les paramètres de PHP sur le serveur pour des raisons évidentes de sécurité. Combiné à un script PHP mal sécurisé, ça pourrait permettre à hacker même très nul d'injecter le code malicieux de son choix.

Ceci ne pose pas de problème de sécurité:
<?php
include("/chemin/absolu/sur/le/serveur/vers/mon/fichier.php");
?>

Ceci non plus:
<?php
include("../../../chemin/relatif/sur/le/serveur/vers/mon/fichier.php");
?>
(on notera qu'on peut utiliser un chemin relatif et remonter d'autant de répertoires que nécessaire)
Et ceci non plus:
settings.php à la racine du site:
<?php
$BASE_PATH = '/chemin/absolu/vers/repertoire/de/base/'
?>

blabla/truc/bidule.php:
<?php
include("../../settings.php"); // Le nombre de répertoire à remonter peut varier
include($BASE_PATH . "blabla/machin/fichier.php");
?>

Je précise rapidement que je ne connais rien à PHP, donc c'est sans doute plein d'erreurs, mais c'est pour montrer l'idée.
Et aussi: on peut récupérer, depuis un fichier .php, le chemin absolu sur le serveur du dossier de ce fichier. Donc pour définir $BASE_PATH, on peut demander à PHP de trouver la valeur tout seul comme un grande.
Modifié par Florent V. (13 Nov 2009 - 13:51)
a écrit :
<?php include("/chemin/absolu/sur/le/serveur/vers/mon/fichier.php"); ?>

Et alors de ça, comment je trouve le chemin au fichier ? Puisque j'obtiens ceci /home/users/00/24/home/www/top.php

Je ne vois pas trop ce que ça change ? Puisque le fichier est à la racine du site et même si je déplace ce fichier dans un dossier j'ai toujours une erreur et ce n'est pas faute d'essayer. J'ai bien compris que je dois pas mettre de lien du type "http://www.exemple.org" !


a écrit :
<?php include("../../../chemin/relatif/sur/le/serveur/vers/mon/fichier.php"); ?>

Et encore moins avec ça ... que viennent faire ../../ ici ? A quoi servent-ils ?


J'ai posté dans le forum débutant ou bien ?! Smiley biggol
Modifié par bulle97 (14 Nov 2009 - 01:22)