PHP if(登录)然后(加载页面)else(重定向登录)?

时间:2015-01-26 06:18:59

标签: php wordpress directory

我试图了解如何编写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]

1 个答案:

答案 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。

抱歉我的英语不好。