Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/06/2011, 00h13   #1
Membre du Club
 
Homme Alexandre
Étudiant
Inscription : novembre 2009
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2009
Messages : 70
Points : 67
Points : 67
Par défaut Include non effectué, bon chemin

Bonjour à tous,

Je me trouve aujourd'hui confronté a un problème épineux, dont je n'arrive pas a trouver la porte de sortie, c'est pourquoi je m'adresse a vous.

Premièrement, situons le problème. Je suis en train de regrouper tout les processus d'authentification d'un site web en une seule fenêtre. J'ai choisi d'utiliser un div caché dans un élément présent sur toute les pages de ce site web, que j'active avec un script javascript. Dans ce div est inclus le formulaire d'authentification.

Ma première question est une question d'ordre théorique.
Dans l'hypothèse ou je suis capable de créer un lien vers une page .php, et que ce lien est valide, un include de cette page .php est il dans TOUT les cas obligé de fonctionner ?

Je pose cette question parce qu'au moment d'importer mon travail sur le site en ligne, mon include marche sur TOUTE les pages web du site, SAUF sur l'accueil, ou la fenêtre (qui s'ouvre bien) reste vide.

La première chose a laquelle j'ai pensé était une erreur bête de php/html dans l'include, mais il s'avère que la page chargée est la même peu importe ou on se trouve dans le site web, et si cet include marche sur toute les pages, pourquoi pas sur la page d'accueil ?

J'ai essayé de vérifier l’accès du lien depuis ma page d'accueil de la façon suivante:

Code :
1
2
3
4
5
 
<div id=auth>
<a href="/../../auth.php">lien</a>
<?php include("/../../auth.php"); ?>
</div>
Quand j'affiche le div, je retrouve bien entendu mon lien, qui pointe vers la bonne page, et qui est valide ( si je clique, j'arrive bien sur mon formulaire d'authentification), mais en revanche, l'include, lui, ne se fait pas. Et encore une fois, ceci n'arrive QUE sur la page d'accueil du site web.

Comme je sais pertinemment que dans l'informatique y'a rien de magique, je sais que soit j'ai du faire une erreur quelque part, soit que je ne connais pas toute les subtilités de la fonction include, soit qu'il y a une autre chose qui coince, mais que cette chose existe et que ce n'est pas tombé du ciel.

Auriez vous des propositions a me faire quand a la résolution de ce problème ?

En vous remerciant par avance...
Al_th est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2011, 01h30   #2
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Tu confonds chemin Unix et chemin HTTP. Ton lien va se référer au chemin HTTP pour rediriger vers la bonne page. Ton include va chercher le fichier dans le système de fichiers (donc chemin Unix).
Dans ton utilisation de l'include, tu lui demandes de remonter de deux niveaux à partir de la racine même de ton système de fichiers, ce qui n'est absolument pas possible (il va rester à la racine) et d'inclure le fichier auth.php qui est donc à la racine. Je doute qu'il existe ..
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2011, 01h42   #3
Membre du Club
 
Homme Alexandre
Étudiant
Inscription : novembre 2009
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2009
Messages : 70
Points : 67
Points : 67
Mwi, regrettable erreur effectivement.

Cependant, admettons que mes pages soient stockées sur un serveur accessible par ftp dans lequel mon fichier auth.php se trouverait dans l'arborescence :
Code :
include/file_include/auth.php
Si mon fichier contenant l'include se trouve dans :
Code :
authrepath/path2/top.php
dans mon fichier top.php, si je fais un include de la forme :
Code :
<?php include("/../../include/file_include/auth.php"); ?>
je suis bien censé récupérer le fichier auth.php dans mon include n'est ce pas ?

Ou bien quand on effectue un include, on part forcément de la racine du systeme de fichier? Et dans ce cas l'include devrait etre de la forme :

Code :
<?php include("/include/file_include/auth.php"); ?>
En l'occurence, ce qui est étrange, c'est que je le récupère bien sur toute les pages web de mon site internet, sauf sur l'acceuil. Et pourtant mon top.php contenant le div et le auth.php ne bougent pas en cours de route
Al_th est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2011, 01h55   #4
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Encore une fois, le premier slash de ton include le renvoie à la racine de ton système de fichiers.
Ton accès FTP pointe vers un dossier de ton système de fichiers. Par exemple :
Citation:
/htdocs/sites/monsite1
Le chemin à partir de la racine de ton système de fichiers serait :
Citation:
/htdocs/sites/monsite1/include/file_include/auth.php
Ce qui donnerait :
Code :
1
2
3
<?php
include( '/htdocs/sites/monsite1/include/file_include/auth.php' );
?>
A priori dans la configuration de ton VHOST, un DOCUMENT_ROOT est correctement configuré et tu es censé pouvoir accéder à ton fichier comme tel :
Code :
1
2
3
<?php
include( $_SERVER['DOCUMENT_ROOT'] . '/include/file_include/auth.php' );
?>
Et pour prendre ton exemple avec un chemin relatif :
Citation:
Envoyé par Pimouss_Epita Voir le message
dans mon fichier top.php, si je fais un include de la forme :
Code :
<?php include("/../../include/file_include/auth.php"); ?>
Ton premier slash est de trop :
Code :
<?php include("../../include/file_include/auth.php"); ?>
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2011, 02h02   #5
Membre du Club
 
Homme Alexandre
Étudiant
Inscription : novembre 2009
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2009
Messages : 70
Points : 67
Points : 67
C'est donc cela !

Je te remercie donc pour cette réponse complête, j'pense avoir saisi le principe, il me manquait juste l'information du "le premier slash = racine du dossier"
Al_th est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h46.


 
 
 
 
Partenaires

Hébergement Web