Istemci tarafında (javascript) windowss.location.hash kullanabilirsiniz biliyorum ama yine de sunucu tarafından erişmek için bulamadık.
Istemci tarafında (javascript) windowss.location.hash kullanabilirsiniz biliyorum ama yine de sunucu tarafından erişmek için bulamadık.
Yanıtlar:
ASP.Net posta desteklerinde URL karmasını devam ettirmemiz gereken bir durum vardı. Tarayıcı karmayı varsayılan olarak sunucuya göndermediğinden, bunu yapmanın tek yolu bazı Javascript kullanmaktır:
Form gönderildiğinde, hash ( window.location.hash
) öğesini yakalayın ve sunucu tarafı gizli giriş alanına kaydedin urlhash
.
Sunucuda , bu değeri bir şey yapmanız gerekiyorsa kullanabilirsiniz. Gerekirse bile değiştirebilirsiniz.
İstemciye sayfa yüklendiğinde , bu gizli alanın değerini kontrol edin. Otomatik oluşturulan kimlik bilinmeyeceğinden, içinde bulunduğu DIV tarafından bulmak isteyeceksiniz. Evet, burada .ClientID ile biraz hile yapabilirsiniz, ancak tüm bu Javascript'in harici bir dosyada yaşamasına ve genel bir şekilde kullanılmasına izin verdiği için sadece sarmalayıcı DIV'yi kullanmayı daha basit bulduk.
Gizli giriş alanı geçerli bir değere sahipse, bunu URL karması ( window.location.hash again
) olarak ayarlayın ve / veya diğer işlemleri gerçekleştirin.
Alan seçimini kolaylaştırmak için jQuery, vb ... kullandık. Sonuç olarak, birkaç jQuery çağrısı, biri değeri kaydetmek ve diğeri geri yüklemek için kullanılır.
Göndermeden önce:
$("form").submit(function() {
$("input", "#urlhash").val(window.location.hash);
});
Sayfa yüklenirken:
var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
window.location.hash = hashVal;
}
IsHashValid()
" undefined
" veya işlemek istemediğiniz diğer şeyleri kontrol edebilir .
Ayrıca, $(document).ready()
elbette uygun şekilde kullandığınızdan emin olun .
RFC 2396 bölüm 4.1:
Tanımlanan kaynak üzerinde bir alım eylemi gerçekleştirmek için bir URI referansı kullanıldığında, çapraz tarama ("#") karakteriyle URI'dan ayrılan isteğe bağlı parça tanımlayıcısı, alımdan sonra kullanıcı aracısı tarafından yorumlanacak ek referans bilgilerinden oluşur işlem başarıyla tamamlandı . Bu nedenle, bir URI'nin parçası değildir, ancak genellikle bir URI ile birlikte kullanılır.
(vurgu eklenmiştir)
Çünkü tarayıcı bu kısmı sunucuya iletmiyor, üzgünüm.
Muhtemelen tek seçenek onu istemci tarafında okumak ve manuel olarak sunucuya aktarmaktır (GET / POST / AJAX). Saygılarımızla Artur
Malcan'da geri düğmesi ve tarayıcı geçmişi ile nasıl oynanacağını da görebilirsiniz.
Sadece bir GET / POST üzerindeki parçayı görmeye çalışmadığınızı ve aslında sunucu tarafı kodunuzdaki bir URI nesnesinin bu kısmına nasıl erişeceğinizi bilmek istemiyorsanız, Uri'nin altındadır. ( MSDN belgeleri ).
GET istekleri için olası çözüm:
Yeni Bağlantı biçimi: http://example.com/yourDirectory?hash=video01
Bu işlevi denetleyicinin üstüne doğru çağırın veya http://example.com/yourDirectory/index.php
:
function redirect()
{
if (!empty($_GET['hash'])) {
/** Sanitize & Validate $_GET['hash']
If valid return string
If invalid: return empty or false
******************************************************/
$validHash = sanitizeAndValidateHashFunction($_GET['hash']);
if (!empty($validHash)) {
$url = './#' . $validHash;
} else {
$url = '/your404page.php';
}
header("Location: $url");
}
}