我试图了解如何编写PHP代码,只允许登录访问者访问目录/文件夹。我在访问网址时已经有.htaccess
规则来加载PHP文档,它会像我想要的那样重定向到登录页面。但我试图了解PHP在用户登录时加载网址内容。
这是我到目前为止所做的:
<?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();
我发现this answer使用此代码获取当前页面网址:
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;
}
但是,如果用户已登录,如何编写表达式来加载页面?
对于那些想要了解.htaccess
规则的人,我用来加载login-check.php文件是这样的:
RewriteCond %{REQUEST_URI} ^.*protected/.*
RewriteRule ^protected/(.*)$ login-check.php?file=$1 [QSA,L]
答案 0 :(得分:0)
您必须将用户登录的信息保存在$ _SESSION中,以便每次加载页面时都可以对其进行验证。
你需要的是这样的东西:
当您的用户登录时,您应该这样做:
if($ user ==&#39; user&#39;&amp;&amp; $ pass ==&#39; password&#39;){ $ _SESSION [&#39; auth&#39;] [&#39; user&#39;] = $ user; $ _SESSION [&#39; auth&#39;] [&#39;已记录&#39;] = true; }
创建一个函数来检查用户是否已登录:
function checkLoggedUser($ user){ if($ _SESSION [&#39; auth&#39;] [&#39; user&#39;]!= $ user || $ _SESSION [&#39; auth&#39;] [&#39;已记录&#39; ;]!= true) 报头(&#39;位置:redirectpage.php&#39); 回声这里的内容。&#39 ;; }
在每个受保护的&#39;开始时PHP文件调用函数:
checkLoggedUser($ _ SESSION [&#39; AUTH&#39;] [&#39;用户&#39;]);
请记住这是一个示例,出于安全原因,请不惜一切代价避免使用logged == true。
抱歉我的英语不好。