Sorgu dizesi ve çapa dahil, tüm URL alın

6 Cevap

Dahil sayfalarında, - çapa (ben yanlış kelimeyi kullanıyor olabilir # sonra metin dahil) geçerli sayfayı istemek için kullanılan tüm URL almak için bir yolu var mı?

yani, sayfa foo.php bar.php dahildir. Ben foo.php içinde çözüm kullanıyorsanız, bunu bar.php? Blarg = a # blahblahblah söylemek gerekir

6 Cevap

Hayır, ben karma sunucu geçti geçmez (dize including #) beri, bu sadece tarayıcı bir davranış özelliğidir, korkmuyorum. $_SERVER['REQUEST_URI'] değişken ancak geri kalanını içerir.

Eğer gerçekten karma olduğunu bilmek gerekiyorsa, (daha sonra bir form takın olabilir, ya da sunucuya göndermek karma içeriğini içeren document.location.hash JavaScript özelliğini kullanmak zorunda olacak bir ajax isteği ile).

Bir Ajax son nokta bu URL'yi gönderen bir JavaScript onload fonksiyonu kullanılarak, (# sonra parçası) çapa dahil, tam URL'yi geçebilir.

Yapamazsınız - Eğer sonraki istek üzerine sunucuya göndermek için JavaScript ile bir çerez karma değerini yazmak gerekecek.

port veya https ile Bu örnek, gösterinin tam URL isteği

function curPageURL() {
            $pageURL = 'http';
            if(isset($_SERVER["HTTPS"]))
            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;
        }

kullanımı: echo curPageURL();

Sen rawurlencode funcion kullanarak çapa iletebilirsiniz.

Temelde sadece böyle bir şey yapmanız gerekir:

bar.php?blarg=a<?php echo rawurlencode('#blahblahblah')?>

Yes you definately can. Refering to the PHP documentation http://ca.php.net/manual/en/function.parse-url.php

<?php
  $url = 'http://username:password@hostname/path?arg=value#anchor';

  print_r(parse_url($url));

  echo parse_url($url, PHP_URL_PATH);
?>

çıktısı

Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)