Récupérer uniquement la racine du site d'un referer

Récupérer uniquement la racine du site d'un referer - PHP - Programmation

Marsh Posté le 12-07-2006 à 01:51:06    

Bonjour, je cherche un moyen d'extraire uniquement la racine d'un site.
Exemple :
Le site d'origine est http://www.bagu.biz/modules/news/
Et je souhaite que la page appelée par un lien récupère le referer puis en extrait uniquement ceci : http://www.bagu.biz
 
J'ai bêtement cru qu'il suffisait de faire ceci :
 

Code :
  1. <?php
  2. $uri=$_SERVER['HTTP_REFERER'];
  3. ?>
  4. <a href="<?php echo $uri; ?>sm/" target="_self"><img src="./squirrelmail.jpg" alt="SquirrelMail" style="border: 0;" /></a>
  5. <br /><br />
  6. <a href="<?php echo $uri; ?>im/" target="_self"><img src="./ilohamail.gif" alt="SquirrelMail" style="border: 0;" /></a>
  7. <br /><br />
  8. <a href="<?php echo $uri; ?>rm/" target="_self"><img src="./roundcube.gif" alt="SquirrelMail" style="border: 0;" /></a>


 
Mais cela donne http://www.bagu.biz/modules/news/sm/ (pour le premier lien) au lieu de ce que je souhaite qui serai http://www.bagu.biz/sm/
 
Comment puis-je y parvenir ?
Merci


Message édité par bagu le 12-07-2006 à 02:02:50
Reply

Marsh Posté le 12-07-2006 à 01:51:06   

Reply

Marsh Posté le 12-07-2006 à 02:01:17    

Code :
  1. <?php
  2. $url = parse_url($_SERVER['HTTP_REFERER']);
  3. $uri = $url[host];
  4. ?>


 
http://fr.php.net/manual/fr/function.parse-url.php


Message édité par Absyn7he le 12-07-2006 à 02:02:18
Reply

Marsh Posté le 12-07-2006 à 02:11:43    

Merci beaucoup...par contre, je viens de voir que si je tape directement l'url, $_SERVER['HTTP_REFERER'] est vide...
 
Comment contourner le probleme ?

Reply

Marsh Posté le 12-07-2006 à 02:13:22    

Si tu tapes directement l'url il n'y a pas de site référent donc la variable est vide.

Reply

Marsh Posté le 12-07-2006 à 02:17:57    

aie...
 
il n'y a pas moyen de récupérer ce qui a été tapé à la manière de $_SERVER['HTTP_REFERER']
 
Comme ca, il me suffirai de mettre un condition disant que si $uri est vide, alors, j'utilise ce qui à été tapé pour récupérer l'hote (ce que je ne sais pas faire non plus...pas la condition, mais la récupération de l'hote dans ces circonstances...)
 
Merci encore de ta patience.

Reply

Marsh Posté le 12-07-2006 à 02:19:04    

Code :
  1. $else = "http://".$_SERVER['HTTP_HOST '].$_SERVER['REQUEST_URI '];


 
http://absynthe.is.free.fr/server2.php


Message édité par Absyn7he le 12-07-2006 à 02:23:48
Reply

Marsh Posté le 12-07-2006 à 02:29:20    

je ne comprend pas trop, en effet, j'ai fais ceci qui ne semble pas fonctionner :
 

Code :
  1. <?php
  2. $url = parse_url($_SERVER['HTTP_REFERER']);
  3. $uri = $url[host];
  4. if (!$uri) {$uri=$_SERVER['HTTP_HOST '].$_SERVER['REQUEST_URI '];}
  5. ?>


Message édité par bagu le 12-07-2006 à 02:30:28
Reply

Marsh Posté le 12-07-2006 à 02:32:34    

Code :
  1. if ($uri == '')
  2. {
  3. $uri="http://".$_SERVER['HTTP_HOST '].$_SERVER['REQUEST_URI '];
  4. }


Message édité par Absyn7he le 12-07-2006 à 02:33:08
Reply

Marsh Posté le 12-07-2006 à 02:33:52    

Au risque de passer pour un con ...
 
C'est quoi une URI ?

Reply

Marsh Posté le 12-07-2006 à 02:34:54    

Reply

Marsh Posté le 12-07-2006 à 02:34:54   

Reply

Marsh Posté le 12-07-2006 à 02:39:05    

Cela ne fonctionne pas non plus...
 
Quand je tape http://www.techni-art.com/webmail/
 
je devrais obtenir pour le lien n°1 http://www.techni-art.com/sm/
 
or là, j'obtiens http://http:///sm/
 
alors je sais d'ou viens le http:// en trop, mais je ne vois pas pourquoi le reste est vide...
 
Voici mon code actuel :

Code :
  1. <?php
  2. $url = parse_url($_SERVER['HTTP_REFERER']);
  3. $uri = $url[host];
  4. if ($uri == '')
  5. {
  6. $uri="http://".$_SERVER['HTTP_HOST '].$_SERVER['REQUEST_URI '];
  7. }
  8. ?>
  9. <a href="http://<?php echo $uri; ?>/sm/" target="_self"><img src="./squirrelmail.jpg" alt="SquirrelMail" style="border: 0;" /></a>
  10. <br /><br />
  11. <a href="http://<?php echo $uri; ?>/im/" target="_self"><img src="./ilohamail.gif" alt="SquirrelMail" style="border: 0;" /></a>
  12. <br /><br />
  13. <a href="http://<?php echo $uri; ?>/rm/" target="_self"><img src="./roundcube.gif" alt="SquirrelMail" style="border: 0;" /></a>


 
Merci

Reply

Marsh Posté le 12-07-2006 à 02:41:17    

Au temps pour moi :
 

Code :
  1. if ($uri == '')
  2. {
  3. $uri=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  4. }

Message cité 1 fois
Message édité par Absyn7he le 12-07-2006 à 02:41:51
Reply

Marsh Posté le 12-07-2006 à 02:57:42    

Argh du coup j'ai cela comme adresse : http://www.techni-art.com/webmail//sm/
 
je pense que je vais modifier mon $uri=$url[host] afin de lui inclure le / et je vais l'enlever des liens...
 
 
Merci encore de ton aide précieuse

Reply

Marsh Posté le 12-07-2006 à 23:37:14    

Absyn7he a écrit :

Au temps pour moi :
 

Code :
  1. if ($uri == '')
  2. {
  3. $uri=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  4. }



Au lieu de $uri == '' ca serait mieux ca non ?  
 

Code :
  1. if (empty($uri))
  2. {
  3. $uri=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  4. }


Message édité par Infosactualite le 12-07-2006 à 23:37:35
Reply

Marsh Posté le 13-07-2006 à 00:49:45    

Code :
  1. function empty($foo)
  2. {
  3.     if (trim($foo) == '')
  4.     return TRUE;
  5.     else
  6.     return FALSE;
  7. }


 
Ca revient exactement au même.

Reply

Marsh Posté le 13-07-2006 à 09:36:02    

tu devrais utiliser les expressions régulières sinon

Reply

Marsh Posté le 13-07-2006 à 12:37:16    

Au final, le code suivant fonctionne à merveille :
 

Code :
  1. <?php
  2. $url = parse_url($_SERVER['HTTP_REFERER']);
  3. $uri = $url[host]."/";
  4. if ($uri == '/')
  5. {
  6. $uri=$_SERVER['HTTP_HOST'];
  7. $uri= $uri."/";
  8. }
  9. ?>
  10. <a href="http://<?php echo $uri; ?>sm/" target="_self"><img src="./squirrelmail.jpg" alt="SquirrelMail" style="border: 0;" /></a>
  11. <br /><br />
  12. <a href="http://<?php echo $uri; ?>im/" target="_self"><img src="./ilohamail.gif" alt="SquirrelMail" style="border: 0;" /></a>
  13. <br /><br />
  14. <a href="http://<?php echo $uri; ?>rm/" target="_self"><img src="./roundcube.gif" alt="SquirrelMail" style="border: 0;" /></a>


 
Merci à tous pour votre aide ;)


Message édité par bagu le 13-07-2006 à 12:37:35
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed