Url absolu à partir d'un Url relatif

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Url absolu à partir d'un Url relatif

par FredoMkb » 05 mai 2008, 15:14

Le protocole si c'est tjrs http:// que tu utilises tu peux bien le rajouter en dur. Pour le domaine tu as $_SERVER['SERVER_NAME'].
Merci pour ta réponse, en effet, entre temps j'avais trouvé le "$_SERVER['SERVER_NAME']", et j'ai aussi trouve un "$_SERVER['SERVER_PROTOCOL']", mais il faut le parser pour avoir la partie utile, seulement, je n'ai pas encore trouvé les différents protocoles reconnus pour réaliser un parsage correct en toutes circonstances (où peut-on trouve cette info ?)...

Bref, ça avance, mais ce n'est pas encore ça... en tout cas, j'ai un peu de mal à me faire à l'idée qu'il n'existe aucune méthode simple (fonction native Php) pour trouver cette info sans passer par autant de manipulations... bizarre non ? :?

En attendant, voici où j'en suis pour le moment :
<?php
if (isset($_GET['doc'])) {
	$protocole = strtolower(current(explode('/',$_SERVER['SERVER_PROTOCOL'])));
	$url = $protocole.'://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/'.$_GET['doc'];
}
?>
Bon, ça a l'air de fonctionner, en tout cas avec le protocole "http", mais je trouve tout ceci bien compliqué tout de même :(

Merci en tout cas Ouckileou pour ton aide :)

[Edit]
Bon, après quelques recherches, il semblerait que la variable "$_SERVER['SERVER_PROTOCOL']" ne prend que deux valeurs : "http" ou "https" (voir ce lien)... mon parsage peut donc bien fonctionner en l'état :)
[/Edit]

par ouckileou » 05 mai 2008, 14:37

Le protocole si c'est tjrs http:// que tu utilises tu peux bien le rajouter en dur. Pour le domaine tu as $_SERVER['SERVER_NAME'].

par FredoMkb » 05 mai 2008, 13:24

Regarde les variables $_SERVER
En effet Ouckileou, mais j'ai quand-même un petit problème :(

Je m'explique par un exemple :

1. Soit un fichier Html qui se trouve à l'adresses : "http://www.mon.site.fr/dossier/folder/fichier.html" ;

2. Soit un petit script Php qui se trouve dans le répertoire : "http://www.mon.site.fr/dossier/" ;

3. Le script reçois en paramètre le chemin relatif du fichier Html, soit : "folder/fichier.html" ;

4. Le script doit générer un lien avec l'adresse Url absolue du dit fichier, c'est à dire, exactement l'adresse du point 1 ;

5. Avec un simple "$_SERVER['SCRIPT_NAME']" ou un "$_SERVER['PHP_SELF']" je récupère l'adresse Url du script ;

6. J'applique la fonction "diraname()" pour n'avoir que le chemin jusqu'au répertoire du script ;

7. Je fais une concaténation du répertoire du script avec le chemin relatif au fichier en question ;

8. J'ai pas tout bon puisqu'il me manque encore le protocole, "http://" pour cet exemple, et le domaine ou "Host", "www.mon.site.fr" en l'occurrence ;

Voilô où j'en suis pour le moment... pas bien réjouissant faut avouer :(

Alors, ma question est relativement simple, même si je me doute que la réponse ne l'ait pas forcément :

Comment obtenir, à partir d'un chemin relatif, une adresse Url absolue exploitable ?

Voici mon peit bout de code actuel :
<?php
if (isset($_GET['doc'])) {
	$url = dirname($_SERVER['SCRIPT_NAME']).'/'.$_GET['doc'];
}
?>
Des idées ?

Merci :)

par ouckileou » 05 mai 2008, 11:54

Regarde les variables $_SERVER

Url absolu à partir d'un Url relatif

par FredoMkb » 05 mai 2008, 10:13

Bonjour à tous :)

J'ai beau chercher, je ne trouve pas de fonction native Php efficace qui permette de retourner le Url absolu à partir d'un Url relatif !? :huh:

Autrement dit, supposons une adresse de ce type :
http://www.mon.site.fr/dossier/folder/fichier.html
Je voudrais la retrouver en entier, protocole y compris, juste en fournissant par exemple "/folder/fichier.html"... est-ce possible ? :?

Merci de vos lumières :)