我有 2 个文件:
// test-redirect1.php
<?php
session_start();
$_SESSION['ctrl_access'] = '81938193813819381';
// then some codes here...
?>
和这个文件:
// test-redirect2.php
<?php
session_start();
if ($_SESSION['ctrl_access'] != '81938193813819381') {
header( 'Location : goto-hell.php' );
}
// then some codes here...
?>
我想让test-redirect2.php
仅在test-redirect1.php
引用文件时继续。
我试图在test-redirect2.php
中使用$_SERVER["HTTP_REFERER"]
,但如果test-redirect1.php
header( 'Location : some-file' );
用作重定向,它就不会显示。
另外,我不想向用户显示ctrl_access
变量。这就是为什么我不想使用POST/GET方法。
所以,我决定和$_SESSION
一起去...
但是,$_SESSION
的问题是,一旦我在浏览器上打开test-redirect1.php
,就会创建该变量,然后我就可以打开test-redirect2.php
并传递if
条件。
如何让test-redirect2.php
仅在test-redirect1.php
引荐来源文件时继续?
谢谢。
"http referer" 变量由浏览器发送。 出于这个原因,这不是一种好的安全方法,因为它很容易被欺骗,但是,您已经回答了有关如何可靠地发送的问题。 当您通过用户单击链接从一个页面移动到另一个页面时,它会发送。
您可以通过多种方式使用 javascript 触发此行为,例如:
document.getElementById('some_link_id').click();
整个想法很糟糕。 成人网站因使用这种技术的安全性而臭名昭著,并且很容易使用允许您设置 HTTP 标头的浏览器插件来利用。
您使用的会话方法要好得多。