Bu bir geri bağlantı oluşturmak için güvenlidir:
$backLink = htmlentities($_SERVER['HTTP_REFERER']);
veya daha iyi bir çözüm var mı?
Daha kolay bir yolu böyle bir şey yapmak olabilir:
<a href="javascript:history.back()">Go back</a>
Bu Referer başlığını doldurma tarayıcıda güveniyor, ama yerine "Geri" düğmesini tarayıcı basarak tam olarak aynı şeyi yapar değil.
Aslında yerine forward yönde tarayıcı geçmişi önceki sayfa ekleme, tarayıcı geçmişi back gider çünkü bu daha iyi olarak kabul edilebilir. Bu Geri düğmesine hareket beklediğiniz gibi davranır.
Bu sürece onun varlığı için kontrol olarak oldukça güvenlidir. Bazı tarayıcılarda bu kapatılabilir, ve ben nasıl olsa tarayıcılar için zorunlu olduğundan emin değilim. Ancak temel, bunu varolan sayılmaz edilir. (RFC2616 referer-başlık var olmalıdır demek değildir.)
Eğer gerçekten navigasyon ters gerekiyorsa, belki de bunun yerine önceki kaydetmek için bir oturum değişkeni kullanabilirsiniz (gerçekten akımı, ancak geri bağlantı görüntüledikten sonra güncellemek) ziyaret etti sayfasını.
Göz önüne alındığında:
Hayır, güvenli değil. Tehlikeler çok büyük değil, ama faydaları küçük.
Bazı durumlarda çalışacaktır. Ancak, farkında olması gerektiğini HTTP referer başlık is not guaranteed. Kullanıcı ajanlar (tarayıcılar, arama spoders vb) doğru ya da değil bir şey göndermek için dayanıyordu olamaz. Bir kullanıcı sayfasına doğrudan gözatarsa ek olarak, hiçbir referer başlık mevcut olacaktır. Bazı internet güvenlik yazılımı ürünleri bile "güvenlik" gerekçesiyle HTTP referer şerit.
Bu çözümü kullanmak istiyorsanız, bu gibi (bu kullanılacak olan duruma bağlıdır) geri bağlantı gösteren, ya da bir varsayılan başlangıç sayfası falan bağlantı olarak değil yerinde bir geri dönüş var emin olun.
Alternatif bir çözüm "history.back" gitmek için javascript kullanmak olabilir. Bu kullanıcı oldu önceki sayfaya dönmek için tarayıcınızın geri / Geçmiş işlevini kullanacağız.
ASCII dışı kodlama bozarsa çünkü Htmlentities dikkatli olmalıdır. Örneğin,
echo(htmlentities("Привет, друг!")); //Contains russian letters
olarak gösterilir
Ïðèâåò, äðóã!
Elbette yanlış olduğunu.
O istediği gibi her tarayıcı URL'leri olmayan AMSY'li karakter gönderir. Unicode (Rusya, Windows-1251) Sistemin mevcut charset IE mozilla.
Yani, o htmlspecialchars'dan ile htmlentitiesi değiştirmek yararlı olabilir.