PHP die()目录中的所有文件

时间:2019-03-08 19:56:30

标签: php jquery mysql ajax die

因此,我正在为客户端创建管理面板,并且已经设置了一个PHP类,称为Login::isAdminLoggedIn.,因此,目前我必须使用的方法是浏览每个页面并将其添加到顶部。

有没有一种方法可以die()整个目录,例如

--- Admin (die this one)
    --- index.php (inherited)
    --- logout.php (inherited)

因为要花很长时间才能全部添加,而且代码很多。

如果需要,我可以分享Login::isAdminLoggedIn类。

如果PHP无法做到这一点,我也在页面上使用jQuery/Ajax,这也是一种选择。

---在这里编辑代码---

    <?php
class Login {
        public static function isLoggedIn() {
                if (isset($_COOKIE['TBCookie'])) {
                        if (DB::query('SELECT user_id FROM login_tokens WHERE token=:token', array(':token'=>sha1($_COOKIE['TBCookie'])))) {
                                $userid = DB::query('SELECT user_id FROM login_tokens WHERE token=:token', array(':token'=>sha1($_COOKIE['TBCookie'])))[0]['user_id'];
                                if (isset($_COOKIE['TBCookie_'])) {
                                        return $userid;
                                } else {
                                        $cstrong = True;
                                        $token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong));
                                        DB::query('INSERT INTO login_tokens VALUES (\'\', :token, :user_id)', array(':token'=>sha1($token), ':user_id'=>$userid));
                                        DB::query('DELETE FROM login_tokens WHERE token=:token', array(':token'=>sha1($_COOKIE['TBCookie'])));
                                        setcookie("TBCookie", $token, time() + 60 * 60 * 24 * 7, '/', NULL, NULL, TRUE);
                                        setcookie("TBCookie_", '1', time() + 60 * 60 * 24 * 3, '/', NULL, NULL, TRUE);
                                        return $userid;
                                }
                        }
                }
                return false;
        }
        public static function isLoggedInAdmin(){
            $userid = Login::isLoggedIn();
            $admin = DB::query('SELECT id FROM users WHERE id = :userid AND admin = 1', array(':userid' => $userid))[0]['id'];
            if($admin === null){
                die('You shouldn\'t be here <a href="index.php">Go Back</a>');
            }else{
                return intval($admin);
            }
        }
}

因此,它的工作方式是将当前用户的cookie检查到login_tokens数据库中的一个cookie中,该数据库具有user_id列,然后从{{ 1}}。

然后将其放入user_id中,并检查用户数据库中具有该ID的用户是否也具有等于1的管理行。

如果在用户内未找到admin,则返回null,因此页面将死掉并说出其消息。

如果用户的管理行等于1,则我返回isLoggedIn

---编辑功能---

如果普通用户可以访问管理区域的链接,那么我将杀死该页面,因为他们不是管理员,并且不希望他们在后端看到仅管理员可以看到的任何机密信息,这可以完成通过在PHP中调用isLoggedInAdmin函数。

当管理员出现时,一切正常进行,他们可以访问一切。

---编辑问题---

我要问的是,他们是否是userID的每一页的方法,而不必说DIE并在每个页面的顶部添加die页面。

0 个答案:

没有答案