2011-03-07 11 views
19

मैं निम्नलिखित कोड का उपयोग कर रहा हो रही वर्तमान URLवर्तमान URL

$current_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

वहाँ एक ही प्राप्त करने के लिए, या वर्तमान URL प्राप्त करने के लिए बेहतर तरीका हो सकता है किसी भी अन्य रास्ता नहीं है पाने के लिए?

धन्यवाद।

उत्तर

33

the reference से:

<?php 

function curPageURL() { 
    $pageURL = 'http'; 

    if ($_SERVER["HTTPS"] == "on") { 
     $pageURL .= "s"; 
    } 
    $pageURL .= "://"; 

    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 

    return $pageURL; 
} 
?> 
+0

मुझे विश्वास है कि आपको HTTPS मान की जांच करने से सावधान रहना होगा क्योंकि यह अपाचे और आईआईएस के बीच अलग है। – Jacob

+0

@ जैकोब हाँ, और apace के लिए आलेख पढ़ें और आईआईएस – diEcho

+1

आलेख वास्तव में अच्छा था –

8

आप यहाँ URL प्राप्त करने के एक काफी फेल सेफ तरीका है सर्वर चर पर निर्भर सावधान रहना होगा, और ... यह निर्भर करता है कि क्या वेबसर्वर आप देना चाहता है।

$url = ''; 

if (isset($_SERVER['HTTPS']) && filter_var($_SERVER['HTTPS'], FILTER_VALIDATE_BOOLEAN)) 
    $url .= 'https'; 
else 
    $url .= 'http'; 

$url .= '://'; 

if (isset($_SERVER['HTTP_HOST'])) 
    $url .= $_SERVER['HTTP_HOST']; 
elseif (isset($_SERVER['SERVER_NAME'])) 
    $url .= $_SERVER['SERVER_NAME']; 
else 
    trigger_error ('Could not get URL from $_SERVER vars'); 


if ($_SERVER['SERVER_PORT'] != '80') 
    $url .= ':'.$_SERVER["SERVER_PORT"]; 

if (isset($_SERVER['REQUEST_URI'])) 
    $url .= $_SERVER['REQUEST_URI']; 
elseif (isset($_SERVER['PHP_SELF'])) 
    $url .= $_SERVER['PHP_SELF']; 
elseif (isset($_SERVER['REDIRECT_URL'])) 
    $url .= $_SERVER['REDIRECT_URL']; 
else 
    trigger_error ('Could not get URL from $_SERVER vars'); 

echo $url;