2010-03-31 3 views
2

En utilisant Php, je voudrais extraire l'URL actuelle d'une page incluant toutes les variables qui y sont attachées. $ _SERVER ['PHP_SELF'] renvoie uniquement l'URL sans la variable. aucune idée de quelle fonction j'ai besoin.php extraire l'url complète avec les variables

exemple: www.site.com/?v1=xyz & v2 = 123

en utilisant $ _SERVER [ 'PHP_SELF'] Je ne reçois que: www.site.com par opposition à l'ensemble url. en utilisant $ _GET [] individuellement n'est pas une option car je ne suis pas sûr de ce que les variables sont attachées à l'URL.

merci

Répondre

6

Vous pourriez sortir le contenu de la variable super-globale $_SERVER: il y a beaucoup de choses intéressantes là-dedans ;-)


Par exemple, l'appel d'une page avec une URL comme ceci:

http://localhost/temp/temp.php?a=10&b=glop 

Et en utilisant:

var_dump($_SERVER); 

je reçois au moins:

array 
    ... 
    'HTTP_HOST' => string 'localhost' (length=9) 
    ... 
    'REQUEST_METHOD' => string 'GET' (length=3) 
    'QUERY_STRING' => string 'a=10&b=glop' (length=11) 
    'REQUEST_URI' => string '/temp/temp.php?a=10&b=glop' (length=26) 
    'SCRIPT_NAME' => string '/temp/temp.php' (length=14) 
    'PHP_SELF' => string '/temp/temp.php' (length=14) 
    'REQUEST_TIME' => int 1270060299 


là, je suppose au moins ceux qui pourraient vous intéresser:

  • $_SERVER['QUERY_STRING']: contient toute la chaîne de requête; à-dire la liste de tous les paramètres et leurs valeurs
  • $_SERVER['REQUEST_URI']: contient l'URI demandé - y compris les paramètres
0

Utilisez $_SERVER['QUERY_STRING'] pour récupérer la partie des variables.

Vive

3
$request = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']; 

Pour le chemin complet et chaînes de requête.

+1

Cela ne dupliquerait-il pas les paramètres? –

0

La meilleure solution que j'ai trouvé est jusqu'à présent celui-ci: http://hayageek.com/php-get-current-url/

function getCurrentURL() { 
    $currentURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://"; 
    $currentURL .= $_SERVER["SERVER_NAME"]; 

    if($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") { 
     $currentURL .= ":".$_SERVER["SERVER_PORT"]; 
    } 

    $currentURL .= $_SERVER["REQUEST_URI"]; 
    return $currentURL; 
} 
0

Deux lignes:

$base_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']; 

url = $base_url . $_SERVER["REQUEST_URI"];