8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis un petit nouveau et avoue ne pas avoir beaucoup d'expérience dans le domaine du php...

J'utilise la fonction include et jusque la pas de problème..
copie du code:

<?
include ("connectes.php");
?>

Le fichier connectes est pour voir le nombre de personnes connectées sur le site.

Mais voila, j'ai eu la bonne idée de réorganiser mon site et avec pas loin de 100 pages, j'ai créer des répertoires différents.

seulement le fichier connectes.php est a la base du site, et les fichiers dans les répertoires ne sont plus alimenté par ce fichier source (logique).

Alors vous aller me dire d'ajouté (../) avant ...Héhéhéhé Smiley lol

Voila ma vrai question:
Ne voulant pas modifier manuellement chaque fichier, y a t'il une fonction pour que les repertoires et sous repertoires soient allimentés ?
De plus je ne suis pas sur que cela fonctionne car j'ai testé Smiley cligne (ajouté ../)

Je pensais a un style comme ceci:
<?
include ("http://www.eurojudo.be/connectes.php");
?>

Mais cela ne fonctionne pas !!

J'espère que vous saurez m'aider et que ma question n'est pas trop novice Smiley langue

Spirou
Salut,

Premièrement je te conseil de toujours entourer tes scripts de la façon suivante:
<?php ?>


Ensuite pour ton problème, je pense qu'il n'y a pas de solution miracle, tu devra modifier le chemin dans tous tes fichiers.

Mais je te conseil de t'aider d'un logiciel comme notepad++, qui va te permettre de faire une recherche dans tous les fichiers du répertoire de ton site.
Par exemple, tu recherche
include ("connectes.php");
et demande de modifier automatiquement par
include ($_SERVER['HTTP_HOST']."/connectes.php");


Maintenant pour ne pas faire la même erreur et pour aller plus loin dans la programmation, tu devrais peut être revoir ta façon de coder. Intéresse-toi assez rapidement à la POO.
Modifié par mng (03 Feb 2011 - 09:42)
Salut,

include ($_SERVER['HTTP_HOST']."/connectes.php");
est probablement une mauvaise idée. Pour des raisons de sécurité (comment être certain que le contenu de $_SERVER est sûr ?), et parce qu'un include en utilisant une URL ne va pas toujours fonctionner, cela dépend de la configuration de PHP. C'est d'ailleurs désactivé par défaut pour PHP5+.

Il serait plus efficace de définir une variable ou une constante au début de l'exécution de tes pages, et d'utiliser cette constante comme base pour tes chemins d'include.

Par exemple :
# Au début du fichier index.php :
define('INC_PATH', realpath(dirname(__FILE__) . '/../includes/');

# Lorsque tu dois faire un include
include(INC_PATH . 'fichier_a_inclure.php');


mng a écrit :
Intéresse-toi assez rapidement à la POO.
Heu, ça dépend quand même un peu des objectifs et des intérêts de chacun, hein. Si tu cherches simplement à gérer facilement une partie de ton site qui est souvent réutilisée, inutile de te mettre à potasser l'OO et tous les design patterns qui vont avec... Pour un dev, par contre, ça s'impose (ou en tous cas ça ne tardera pas à s'imposer, dès que tu toucheras de près ou de loin à un framework PHP...)

mng a écrit :
Premièrement je te conseil de toujours entourer tes scripts de la façon suivante:

<?php ?>
+1. De cette façon, tu es sûr que ton script PHP sera toujours exécuté, peu importe la configuration sur la machine qui exécute le code. Ce qui n'est pas le cas avec la forme abrégée <? ?> qui peut être désactivée via la config de PHP.
juste pour plussoyer mon collège ci-dessus, mais aussi pour deux trois choses:

dirname(__FILE__) depuis PHP 5.2 de mémoire, on a __DIR__.

include n'est pas une fonction mais un élément de langage, il est donc recommandé de prendre la syntaxe des éléments de langage (négligeable).

Idem pour la POO, petit +1. C'est pas la POO qui va faire que tu vas mieux hiérarchiser les fichiers. Par contre, utilisation de MVC ou autres designs patterns...

Et encore un +1 pour <?. Petit exemple ? Les prologues xml.
On peut aussi définir le chemin par défaut du répertoire include dans un fichier config (qui se trouve lui-même dans le répertoire "include") chargé au début de chaque page

dans le fichier includes/config.php

$dir =  dirname(__FILE__);

// selon qu'on soit sur windows ou linux (pas besoin de modifier en local et sur serveur de prod)
$os= (substr($_SERVER['DOCUMENT_ROOT'], 0, 1) == '/')  ? ":" : ";" ;

ini_set('include_path', ".".$os."".$dir."");


et plus besoin de spécifier le chemin.
Quand je fais un include, où que je sois sur mon site, je mets juste
<?php include('fichier_a_inclure.php') ; ?>



On peut aussi préciser le dossier des includes dans le htaccess
php_value include_path "/home/www/public_html/include/"
plus besoin non plus de spécifier le chemin quand on fait un include.
Modifié par xirt (03 Feb 2011 - 15:23)
voila merci a tous de vos réponses

Pour répondre en général a tous...(Car je commence à mis perdre ...)

Forcément une petite erreur de ma par lors de la mise en ligne de mon post mais bien entendu je met <?php ...?> erreur de frappe Smiley ravi

Poo je connais pas du tout et comme dit Thomas, je n'en aurais peut être pas l'utilité Smiley langue
Mais ceci dit je suis curieux et ferais une recherche sur ça.

Ensuite les multiples poste arrive (Je suis content car j'avais poster le même sur comment ca marche et au lieu d'aider les gens, on les déblatère...) et je commence a mis perdre donc je vais juste résumer la structure de mon site et celui qui a la bonne réponse me fais signe Smiley biggrin

www.monsite.be/connectes.php

Le fichier qui sert a voir le nombre de personnes sur le site.

Après cela j'ai des fichiers comme ceci:

www.monsite.be/1erfichier.php
www.monsite.be/2emefichier.php etc...

et d'autres comme ceci

www.monsite.be/1errépertoire/1erfichier.php
www.monsite.be/2emerépertoire/2emefichier.php etc

donc avec le code
<? php
include ("connectes.php");
?>
(Vous avez vu j'ai pas oublier le php Smiley ravi )

Tous les fichiers qui sont sur la racine du site, sont bien en contact avec connectes.php
Et les fichiers qui sont dans les répertoires, non pas de contact avec ce fichier...
d'où l'erreur et ma demande ...

Maintenant le site est complétement codé en html et je fais appel sur une ligne dans le code pour insérer ce fichier connectes.php avec la fonction include pour voir le nombre de personne connecté....

L'idée de xirt est bonne? et est-elle au niveau de mon problème?

Si il n'y a pas de solution, je me résoudrai à mettre ../ devant sur chaque page. Avec la fonction recherché et remplacé c'est vrais que je n'y avais pas pensé...lol

Maintenant je peux vous donner l'url du site si vous voulez ou le code du conectes.php?

Merci d'avance à tous

Spirou
spirou0069 a écrit :


L'idée de xirt est bonne? et est-elle au niveau de mon problème?

si ça ne marchait pas, je n'aurai pas posté Smiley cligne
Donc oui c'est une solution qui résoudra ton problème.
Modifié par xirt (04 Feb 2011 - 10:16)
Merci xirt Smiley confused

Je ne voulais pas t'offensée Smiley biggrin

La question était plus "développer svp" lol

Donc je vais développer moi même Smiley murf

1. <?php include('connectes.php') ; ?>

Mon code qui est sur toutes les pages pour afficher le nombre de visiteurs connectés.

2. le reste du code que tu donne:

$dir = dirname(__FILE__);

$os= (substr($_SERVER['DOCUMENT_ROOT'], 0, 1) == '/') ? ":" : ";" ;

ini_set('include_path', ".".$os."".$dir."");

La je bloque.... Si je comprend bien je déplace mon fichier connectes.php dans un répertoire includes, je crée un fichier config.php avec le code ci-dessus que je mets dans ce répertoire aussi.

C'est bien cela?
Merci d'avance

Spi

up^^
Modifié par spirou0069 (14 Feb 2011 - 18:24)