Nasıl $ _GET üzerinden bir URL bir karma işareti kabul edebilir?

4 Cevap php

Ben anlamak mümkün olmuştur ne itibaren, karma işaretleri (#) sunucusuna gönderilmez, o yüzden aşağıda URL gibi verileri ayrıştırmak için ham PHP kullanmak mümkün olacak olası görünmüyor:

index.php?name=Ben&address=101 S 10th St Suite #301

Ben bu $ _GET verilerle form alanları önceden doldurmak için arıyorum. Nasıl bu JavaScript (veya jQuery) ile yapmak ve insanlar JavaScript kullanarak değil benim formu kırmak olmaz bir çare var ki? (Genellikle adres alanına) bir karma varsa Şu anda, bundan sonra her şey çözümlenir veya $ _GET saklanmaz.

4 Cevap

Sen karma kodlamak gibi yapmanız gerekir urlencode (php) veya encodeURIComponent (JavaScript).

"Hash" script görür asla neden olan istek, bir parçası değildir.

Webdestroya dediğim gibi, URL ile bir istek göndermek gerekir

index.php?name=Ben&address=101%20S%2010th%20St%20Suite%20%23301

HTML formları kullanarak iseniz formu göndermek, o zaman dize değeri auto-urlencoded olacaktır.

Kullanıcı bir e-posta linki tıklayarak edilecek ve e-posta işlenen karma işareti görmek isteyecektir

Sen Ben before Eğer e-posta sopa alıntı ne linki kodlamak gerekir. Ne var şu anda hiç bir URL değil.

Sen isteğe + yerine sorgu parametreleri bağlamında %20 içinde bir boşluk kodlamak ama onlar 'don URL'lerin bir belirleyici özelliği olduğu için, kesinlikle ham bir boşluk içeremez Eğer sessizce hatayı düzeltmek bir web tarayıcısında bir URL bir boşluk yazarsanız t boşluk içeri var, ama bu mekanların dolu eğer bir e-posta istemcisi düz metin bir URL dışarı almak değildir.

Orada + yerine boşluklar kodlayan alternatif bir fonksiyon bazen %20. + isterseniz her koşulda geçerli değil, ama normalde bu iyi kaçınılmalıdır:

index.php?name=Ben&address=101+S+10th+St+Suite+%23301

sonra PHP'nin urlencode fonksiyonunu yerine daha standart rawurlencode kullanmak istiyorum.

Aksi bir HTTP URL bir karma betimleyici (tarayıcıyı kaydırmak için sayfanın parçası) anlamına gelir çünkü iki durumda da, must, %23 için karma kodlamak. Bu sayfanın kendi adresinin bir parçası değildir; hatta sunucuya tarayıcıdan geçmedi, bu nedenle kesinlikle o-den alamaz $_GET ya da herhangi başka bir arabirim.

Orada pek çok diğer karakterler bir URL dizesine sokulmadan önce% kodlanmış olmalıdır, adres gibi bir bileşeni vardır, ya da geçersiz veya başka işlevsel olmayan bir URL ile size bırakacağım. Tüm bu %23 iş bir URL komik bakarsa ... iyi, onunla yaşamak zorunda kalacaksınız. Bu URL'ler hep böyle baktım ne var.

Ben genellikle bir çerez Kaldırıldığında üzerinde karma saklamak

ej:

window.unload = function(){

 if(document.location.hash) setCoockie('myhash',document.location.hash);

};