PHP kullanarak giriş yaptıktan sonra önceki sayfaya yönlendirme

3 Cevap

Diyelim ki iletişim sayfasına gitmek istediğinizi varsayalım. Ama almak için, site giriş yapmamı gerektiriyor. Giriş yaptıktan sonra, iletişim sayfasına yönlendiriliyorsunuz gerekiyordu, ama başka bir yerde dilerim. Ne ben giriş yaptıktan sonra istediğiniz sayfaya yönlendirileceksiniz gerektiği gibi yapmalıyız?

Ben bu yine oturumları ile yapabilirdi ama bir şey var, güçlü bir his var. Yaklaşım ne olmalıdır?

3 Cevap

Sen üç genel yaklaşımlar var:

  1. Oturumda önceki sayfayı saklayın;
  2. GET değişkeni olarak sayfayı saklayın; veya
  3. Giriş sayfasına bir iç yönlendirme yapmak.

(1) gibi bir şey görünüyor:

<?php
session_start();
if (!$_SESSION['userid']) {
  $_SESSION['page'] = '/contact';
  header('Location: /login');
  exit;
}
...
?>

Başarılı giriş $_SESSION['page'] almak ve yönlendirmek.

(2) herhangi bir oturum değişkeni orada dışında benzer. Bunun yerine var:

header('Location: /login?return=/contact');

yönlendirme geçmek. Giriş sayfası kullanıcı adı ve parola için bir istek ile kullanıcıya sunuyor sayfada gizli form alanı olarak dahil olacak.

(3) benzer fakat ayrı bir sayfaya yönlendirme değildir. Bunun yerine her sayfa potansiyel bir giriş sayfası olabilir. Kullanıcı giriş formuna kaydedilir değilse bunun yerine sunulmuştur. URL hala "/ iletişim" olacaktır. Her sayfa algılamak ve girişimlerini oturum idare edecek.

Bu yöntemin avantajı bir daha az dış yönlendirme olduğunu ve gönderilen formları işlemek daha kolaydır. Bu derken birisi senin sayfalardan birinde bir form doldurur ve sonra teslim tıklar hayal demek. Sistem kendi oturum açma süresi doldu görür. Eğer yeni bir sayfaya yönlendirir ve sonra geri yönlendirmek, onlar muhtemelen tüm form alanlarını yeniden girmeniz gerekir. Eğer giriş kolu ise dolaylı olarak gizli girişler gibi tüm form alanları içerebilir ve bir kez sorunsuz orijinal sayfanın sunulması gibi davranın kaydedilir.

Yaklaşım normalde kullanın:

  1. Kullanıcı oturum değilse iletişim sayfasında, giriş sayfasına yönlendirmek
  2. Giriş sayfasında (sayfa ayarlanır kullanıcı iletişim sayfasından yani gelen) $_SERVER['HTTP_REFERER'] değişkeni kullanmak ve gizli bir alan olarak bu saklayın.
  3. Kullanıcı günlükleri sonra geri onlar vardı onları sayfaya yönlendirebilirsiniz.

Bu konuda güzelliği otomatik olarak her sayfada oturum değişkenleri ayarlamak zorunda kalmadan olarak giriş gerektiren tüm sayfalar için çalışıyor olmasıdır.

Bir ihtar: giriş yaparken referer olarak sayfa sitenizde değil, tamamen farklı bir site üzerinde olduğunu kontrol edin, durumda kullanıcı, örneğin, Google'dan gelmek oldu gerekir.

Ben sorgu dizesinde geçerli URL geçen, giriş sayfasına yönlendirmek için eğilimindedir.

The page to protect

session_start();

if (!isset($_SESSION['user_id']))
{
    // Fetch current URL
    $this_url = $_SERVER['REQUEST_URI'];

    // Redirect to login page passing current URL
    header('Location: login.php?return_url=' . urlencode($this_url));
    exit;
}

// Continue processing
echo 'Hello from this page';

The login page

session_start();

// Simulate logging in user
$_SESSION['user_id'] = 1;

// Fetch URL to redirect to
$return_url = isset($_GET['return_url']) ? $_GET['return_url'] : 'site_home.php';

// Redirect back
header('Location: ' . $return_url); 

Yukarıdaki kodda sadece Normalde kullanıcı form üzerinden kendi kimlik sunmalıdır içeri giriş sürecini simüle, kimlik bilgileri doğrulandıktan sonra kullanıcı geri yönlendirmek için sayfanın URL oturum bu boyunca muhafaza edilmelidir süreci. Ya sorgu dizesinde veya formda gizli bir giriş alanı üzerinden URL'sini geçirmek için devam edebilirsiniz.