PHP &

5 Cevap php

Ben bir url karma bölümünü kaydetmek ve bir PHP değişken olarak bir yol bulmaya çalışıyorum. Bu fikir biraz çılgın, ama benimle ayı ...

Ben şu URL'den "konum" parçası ayıklamak ve bir PHP değişkeni olarak kaydetmek istiyorum.

http://www.example.com/#location

Ancak, bu da tartışma link, bir URL'nin JavaScript parçası üzerinden sadece ulaşılabilir olduğunu gösterir.

Ama fragman, URL çoğaltılamaz PHP tarafından ve daha sonra yeniden mod ile uzaklaştırılan bir bağlantı oluşturmak mümkün olurdu? Yani ....

Orijinal url:

http://www.example.com/location/#location

PHP URL düz "konuma" konum değişkeni sayesinde olur

Apache daha sonra bağlantıyı yeniden yazar:

http://www.example.com/#location

Ben bu sorunu çözmek için zarif bir yolu olup olmadığını merak ediyorum.

5 Cevap

Bunu okumak için JavaScript kullanmak gerekir. Birkaç farklı seçenek vardır - sayfa yük üzerine, ek URL parametreleri ne vardı sunucu anlatmak için bir XMLHttpRequest (AJAX isteği) kullanabilirsiniz. (Ayrıca Javascript üzerinden) ek parametreler olup olmadığını ve herhangi bulursanız, URL kendisi içine kodlanmış bu parametreleri olan farklı bir URL'ye geri göndermek için kontrol edebilir Alternatley.

Fragment bu thread Mod_Rewrite forumlarında göre, sunucuya hiçbir zaman gönderilmez. Eğer aslında sonra sayfayı değiştirmek için AJAX kullanmadığınız sürece Yani, bu imkansız olabilir.

Başka bir fikir Javascript $ _GET paramatresi içine karma açın ve sayfayı yenileyin sahip olacaktır.

PHP komut dosyası için AJAX ile karma fragmanı göndermek ve acil bir yenileme (sayfa reload) yapabilirdi

AJAX üzerinden sunucuya göndermek değerleri verdik. Siz OTURUM fragmanı değerlerini ayarlayabilirsiniz. Eğer sayfayı yenileyin, daha sonra gelen içeriği görüntülemek oturumda ve süreçte kuruldu fragmanını alabilirsiniz. Biz PHP_SELF / QUERY_STRING vb yoluyla fragmanı değerlerini almak olamıyorum çünkü bu Gmail gibi web sayfasının hızını artırmak gerekir.

Bu PHP's parse_url function döndürülen "fragman" değeri içinde ihtiva ediyor.

PHP manuel:

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

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>

Döndürür:

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