php / html - http_referer

6 Cevap php

Ben bir web sitesi oluşturma ve belirli bir sayfada, önceki sayfaya kullanıcıyı göndermek isteyen duyuyorum. PHP / HTML için oldukça yeni ve fikirler ve yardım için bazı mevcut kodu kullanarak edilmiştir.

Varolan kodu aşağıdaki yöntemi kullanır:

if (! empty($HTTP_REFERER)) 
{
    header("Location: $HTTP_REFERER");
} else 
{
    header("Location: $CFG->wwwroot");
}

Bu kodu kullandığınızda, ancak http_referer her zaman boş ve kök sayfaya yönlendiriliyorsunuz kullanıcı olarak kabul edilir. Bu kodda herhangi bir bariz kusurlar?

6 Cevap

Sen kullanmanız gerekir:

$_SERVER['HTTP_REFERER']

HTTP Referrer olmayan boş bile geçerli veya alan olmak güvenmeyin. İnsanlar bu değişken IF-ELSE fıkra boş tarafına gitmek için herhangi bir çek bırakarak bu set var seçebilirsiniz.

Eğer geri kullanıcıyı yönlendirmek için kullanabileceğiniz bir değer yapacağını ya URL veya POST parametreleri bir parametre boyunca göndererek bu karşı koruyucu olabilir.

isset ($ _SERVER ['HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']:'';

Bir önceki sayfaya geri kişiyi göndermek ve ne olursa olsun yönlendirme doğru ayarlanmış olma çalışmak istedim varsa, bir şey gibi .. URL (veya POST) için GET parametresini ekleyin .. Eğer URL kodlamak gerekir olabilir

http://www.domain.com.au/script.php?return=http%3a%2f%2fwww.domain.com.au%2fthis-is-where-i-was%2f

PHP'nin urlencode() işlevini kullanabilirsiniz.

Ayrıca referer başlığı boş veya zaten eksik olabilir, bu yüzden onu hiç güvenmek gerektiğini unutmayın ..

Kullanmak gerekir

$_SERVER['HTTP_REFERER']

Ancak php.ini içinde register_globals yapılandırması bakmak, güvenlik nedeniyle kapalı olmalıdır. Sen PHP Manual site daha okuyabilirsiniz.