检查用户是否不是来自url


check if user didnt come from url

如果用户不是来自某个URL,我该如何检查PHP并重定向它们?

例如,如果它们来自hello.php,什么都不会发生,但如果它们来自任何其他页面,它们会被重定向吗?

您可以使用$_SERVER['HTTP_REFERER']值来确定用户的来源:

$referer = $_SERVER['HTTP_REFERER'];
if (preg_match('/hello'.php$/', $referer) === 1) {
    echo 'Came from hello.php';
} else {
    echo 'Did not come from hello.php';
}

不过,你应该小心。客户端可以更改HTTP_REFERER标头值。换句话说,永远不要认为它是正确的。

if ( strpos( $_SERVER["HTTP_REFERER"] , 'hello.php') === false ) {
    header('Location: http://www.example.com/');
    exit;
}

但是,一些浏览器会剪切这个refer参数

有两种方法,在PHP中,最好的方法是使用$_SERVER['HTTP_REFERER'],

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

但这个变量并不总是被设置的,因为有些服务器可能会将其设置为null,因此不能完全依赖它。

您的其他选择是使用Javascript,这是一种比HTTP_REFERER、更可靠的方法

var previous_url = document.referrer;