PHP: giriş sonra orijinal sayfaya kullanıcıyı dönersek

4 Cevap php

Bir özellikle PHP, web sitenize giriş yaptıktan sonra orijinal sayfaya bir kullanıcı dönmelidir nasıl ilgili herhangi bir 'en iyi uygulamalar' var mı? örneğin Giriş yapmadınız ise bir StackOverflow soru görüntülerken ediyorsam, nasıl ben giriş eğer ben bu soruya dönmek sağlamak istiyorsunuz?

Benim araştırma, bu $ _SERVER ['HTTP_REFERER'] değişkeni etrafında danışma merkezlerinin bir sürü gibi görünüyor. Temel olarak, referer not almak ve bu oturumda depolamak, işiniz bittiğinde o sayfaya geri yönlendirme.

Bu sorun HTTP_REFERER en iyi güvenilir olmasıdır.

This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.
— [http://php.net/manual/en/reserved.variables.server.php]

Sitenin diğer alanlarına yönlendirmek için referer herhangi düzenlemeler rutin kontrolleri izinleri tarafından ele alınacaktır. Referer blanked alırsa, bu sadece geldikleri site yerine sayfa ana sayfaya kullanıcıyı yönlendirmek için kabul edilebilir olabilir. Bu olsa gereksiz kullanıcı düşmanca görünüyor, ve ben bu işlemek için biraz daha iyi bir yol olacağını umuyordum.

4 Cevap

Giriş sayfasında:

<form action="controller/LoginController" method="post">
<?php

if($_SERVER['HTTP_REFERER']){
  echo '<input type="hidden" name="l" value="'.$_SERVER['HTTP_REFERER'].'" />';
}

?>
<!-- the rest of the form -->
<input type="submit" />
</form>

Giriş kontrol ünitesi, size $_POST['l'] değer almak ve bu URL, kendi web sitesi üzerinde olup olmadığını görmek. Değilse, bu URL'ye yönlendirir başka, varsayılan sayfaya yönlendirme.

Kullanıcı zaten açtıysa giriş sayfasında, geri ana sayfasına falan kullanıcıyı yönlendirmek emin olun. Bu giriş geri yönlendirme gibi durumlarda önleyecektir.

$_SERVER['HTTP_REFERER'] bir tarayıcı sorumluluktur. Ayrıca, çoğu zaman oldukça güvenilirdir. Tarayıcı göndermek değilse bu konuda endişeleriniz varsa, ya da, yerine oturumu kullanabilirsiniz.

sadece $_SESSION['lastvisitpage'] geçerli sayfa URL set her sayfada. Oturum açma o zaman $_SESSION['lastvisitpage'] yönlendirebilirsiniz.

Belki bir oturumun yardımıyla, kendi son ziyaret sayfasını saklamak eğer daha iyi olurdu.

Kullanıcı web sitenize ilk kez bir sayfa isterse, yeni bir oturum başlatın ve geçerli URI ile last-URI başlatılamadı. Bu oturum açma sayfası kadar başka bir sayfa istendiğinde last-URI zaman bu güncelleyin. Kimlik doğrulaması başarılı olursa Şimdi, last-URI olarak URI kullanıcıya yönlendirebilirsiniz.

Her sayfada bir giriş formu varsa, geçerli URI depolandığı gizli bir girişi kullanmak

if(user_not_logged_in())
{
    $link = "http://example.com/login?continue=path/to/current/page";
    echo '<a href="'.$link.'">Loign</a>';
}

Bu benim, ve Google gibi siteler, bunu nasıl olduğunu. Sen ancak değişken devam edecek ve garip URL'lerin bunu sterilize ilk kontrol emin olmak gerekir.

Başka bir seçenek AJAX kullanmak ve kullanıcı herhangi bir sayfaya giriş için izin olduğunu. Kullanıcı oturum açtığında, sen, AJAX formu göndermek isteği geri geldiğinde yenileyin.


Ben kullanıcının özel bir menü giriş linke tıklarsa, otomatik olarak kullanıcı nereden düğmeye bastı sayfasına yönlendirileceksiniz istediğini düşünüyorum diye düşünüyorum. Ben inanıyorum, bu mantık bir kusurdur. StackOverflow atın. Ben giriş basın Sırf ben geçen vardı soruya dönmek istiyorum anlamına gelmez.

Ancak, kişi geriye, ben bir soru upvoted ve giriş bana açılan var gibi sanki gitmek istiyor varsaymak doğru olacağını bazı durumlar vardır. Ben orada link tıklandığında ise, ben geri gitmek istiyorum varsaymak güvenli olacaktır. Ama nav çubuğunda sadece giriş bağlantı ima anlamı yok.

Ben kullanıcı giriş için bir AJAX arama yapmak önermek ve başarılı AJAX tepki sadece geçerli sayfayı yenileyin olacaktır.