5秒后重定向但仅允许引荐来源访问页面

Bir*_*rdy 3 javascript php .htaccess redirect

我试图让page1.php在5秒后重定向到page2.php.但是,page2.php必须是受限制的页面,只有在您从 - > mydomain.com/page1.php发送时才能查看该页面,如果您在地址栏中手动键入地址,则无法访问该页面.

我尝试过使用共享密钥,htaccess和php HTTP_REFERRER的方法.

我认为问题来自重定向,我相信这是因为重定向脚本没有发送HTTP_REFERRER,因此page2.php正在查看从重定向脚本发送的手动输入的URL.我试过一个简单的PHP重定向和JavaScript.以下是我使用过的两个不同的重定向脚本.

php版本.

header( "refresh:5;url=page2.php" );
Run Code Online (Sandbox Code Playgroud)

Javascript版本.

<script type="text/javascript">   
function Redirect() 
{  
    window.location="page2.php"; 
} 
setTimeout('Redirect()', 5000);   
</script>
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用完整的URL和/或没有http://,例如mydomain.com/page2.php.

Page2.php只需要接受来自page1.php的流量.我不反对如何实现这一目标.只要用户无法手动输入地址并访问该页面,就可以使用共享密钥或任何其他方面.我也完全清楚推荐人可能会被欺骗,但我没有专业知识可以提升.

Ska*_*ski 6

您可以使用会话数据来确保第2页的用户已通过第1页

通过会话的工作方式,encrypted string即使它根本没有加密也很安全.

在第1页:

session_start();
$_SESSION['secret_key'] = 'encrypted_string';
Run Code Online (Sandbox Code Playgroud)

在第2页:

session_start();
if($_SESSION['secret_key'] == 'encrypted_string'){
   // user is authorized
   echo 'You are authorized to see this page';

}
else{
    echo 'Please visit page1 before accessing this page';

}

// Logic for authorized user
Run Code Online (Sandbox Code Playgroud)

或者,第2页的更短版本:

if(empty($_SESSION['secret_key']) || $_SESSION['secret_key'] != 'encrypted_string'){
   die('You are not authorized to view this page.');
}

echo 'only authorized user will see from here forward';
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在测试时,请记住,一旦设置了会话,您将不得不在浏览器中删除会话,或者使用隐身模式再次进行测试.要删除chrome上的缓存ctrl+shift+delete并选择cookie和其他