我正在尝试了解如何编写PHP代码以仅允许登录访问者访问目录/文件夹。我已经有了.htaccess
规则,可以在访问 url 时加载 PHP 文档,它会像我想要的那样重定向到登录页面。但是我正在尝试了解PHP以在用户登录时加载url内容。
这是我到目前为止所拥有的:
<?php
/* Protect directory files with login. */
/* Load WordPress heading */
require_once('wp-load.php');
require_once ABSPATH . WPINC . '/formatting.php';
require_once ABSPATH . WPINC . '/capabilities.php';
require_once ABSPATH . WPINC . '/user.php';
require_once ABSPATH . WPINC . '/meta.php';
require_once ABSPATH . WPINC . '/post.php';
require_once ABSPATH . WPINC . '/pluggable.php';
wp_cookie_constants();
/* If user is logged-in else redirect to login */
is_user_logged_in() || auth_redirect();
我找到了这个答案来使用以下代码获取当前页面网址:
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
但是,如果用户已登录,如何编写表达式来加载页面?
对于那些想知道我用来加载登录检查.php .htaccess
规则的人,文件是这样的:
RewriteCond %{REQUEST_URI} ^.*protected/.*
RewriteRule ^protected/(.*)$ login-check.php?file=$1 [QSA,L]
您必须将
用户登录的信息保存在 $_SESSION 中,以便每次加载页面时都可以对其进行验证。
你需要的是这样的东西:
当用户登录时,您应该执行以下操作:
if($user == 'user' && $pass =='password'){ $_SESSION['auth']['user'] = $user; $_SESSION['auth']['logged'] = true;}
创建一个函数来检查用户是否已登录:
函数检查日志用户($user) { 如果 ($_SESSION['auth']['user'] != $user || $_SESSION['auth']['logged'] != true) header('location:redirectpage.php'); 回显"此处的页面内容"。}
在每个"受保护"PHP 文件的开头调用该函数:
请记住,这是一个checkLoggedUser($_SESSION['auth']['user']);
示例,出于安全原因,不惜一切代价避免使用 logged==true。
对不起,我的英语不好。