Geçerli sayfada (PHP) tam URL'sini Başlarken

3 Cevap php

Ben bu sayfada çalışıyorum: http://localhost/projectname/custom.php

Her iki <?php echo $_SERVER['REQUEST_URI']; ?> ve <?php echo $PHP_SELF; ?> tam yerini vermeyin. Ben tam url yerini kapmak için ne kullanmalıyım?

Teşekkürler

3 Cevap

Yerli bir yol olarak bildiğim kadarıyla yok, bu kullanabilirsiniz NUTE:

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;
}

Eğer geri bir bağlantı izleme komut geçerek bir URL'nin ucuna değişkenleri eklemek için çalışıyorsanız, örneğin, bu deneyebilirsiniz:

$URI = array();
foreach($_GET as $key=>$val)
{
   if ($key!="link"&&$key!="id"&&$key!="type") $URI[] = "$key=".urlencode($val);
}
if (sizeof($URI)>0) $link.="&".join("&",$URI);

Bu durumda, "link", "id" ve "tip" Ben takibi için gerekli değişkenler vardı, ama URL ben izlemek istedim o sanki benim komut dosyası tarafından sıyrılıp var bunun ucunda bir değişken vardı kendisine gönderilen sorgunun parçası; Ben (: $ linki. "Konum") header geçirmeden önce geri bağlantı URL eklemek gerekiyordu.

Bu size ulaşmak için çalışıyoruz ne ise bu harika çalışıyor ve örneğin yukarıda daha kısadır.

Bu bir kontrol ... Biraz uzun ve kirli ama iyi çalışıyor ...

 function absolutizeUrl ( $u, $p )
 {
    $url = parse_url( $u );
    $page = parse_url( $p );

    if ( strpos( $u , '/' ) === 0 )
    {
            //already absolute              
    } else {
            $basePath = '';
            if (
                    isset( $page[ 'path' ] )
                    && strpos( ltrim( $page[ 'path' ], '/' ), '/' )
            )
            {
                    $baseTokens = explode( '/', $page[ 'path' ] );
                    array_pop( $baseTokens ); // strip basename                     
                    $baseTokens[] = $u;
                    $u = join( '/', $baseTokens );
            }
    }
    if ( ! isset( $url[ 'host' ]))
    {
            $u = 'http://'.$page[ 'host' ].'/'.ltrim( $u, '/' );
    }
    return $u;
  }