例如,用户无法访问任何PHP文件,例如www.mywebsite.com/mypage.php
如果用户未登录,则会将用户重定向回登录页面。
问题是他们 能够访问以下网址:www.mywebsite.com/test/mydocument.pdf
。
如果他们没有登录,我如何拒绝访问并重定向到登录页面?
答案 0 :(得分:0)
类似的问题在这里 php redirect if not logged in
只需查看会话
if(!isset($_SESSION['login'])){
header("Location: http://www.example.com/login.php");
}
此外,通过会话,您可以为用户设置权限,以根据其等级访问文件。
答案 1 :(得分:0)
我所做的是当用户登录时,我设置了一个会话变量,如此
$_SESSION['loggedin'] = true;
然后,在每个页面上,我都是在页面的非常开头
session_start();
if(!isset($_SESSION['loggedin'] || $_SESSION['loggedin'] !== true){
header('Location: http://www.foo.com/login.php');
exit(); <-- THIS IS VERY IMPORTANT
}
确保包括exit();功能调用。否则,客户端可以拒绝重定向请求,并且页面的其余部分将呈现。这样,即使客户端拒绝重定向请求,他们获得的只是一个空白页面。玩得开心:)
PS:如果你想聪明并且不想重复代码,可以创建一个名为“functions.php”的PHP文件(或者你喜欢的类似的东西)。然后,在functions.php内部创建一个名为“requireLogin()”的函数
function requireLogin(){
if(!isset($_SESSION['loggedin'] || $_SESSION['loggedin'] !== true){
header('Location: http://www.foo.com/login.php');
exit(); <-- THIS IS VERY IMPORTANT
}
}
现在,在您要保护的每个页面中,执行此操作
session_start();
require('functions.php');
reuireLogin();
BOOM页面受到保护,页面的开头看起来更清晰。
答案 2 :(得分:0)
我确信这个问题有多种解决方案。我发现自己最常做的就是如下:
应该有很多关于如何从php发送文件到浏览器的例子,所以我不会在这里讨论,但是你应该知道肯定存在必须减轻的安全风险以确保用户只下载您希望他们有权访问的文件。