我开始了一个小项目,我有一个路由器,它将返回视图,具体取决于您填写的URL(如果存在)。
<?php
require_once 'page.php';
class Route
{
private $_uri = array();
private $_method = array();
/*
* Builds a collection of internal URL's to look for
* @param type $uri
*/
public function add($uri, $method = null)
{
$this->_uri[] = '/' . trim($uri, '/');
if($method != null){
$this->_method[] = $method;
}
}
public function submit()
{
$uriGetParam = isset($_GET['uri']) ? '/' . $_GET['uri'] : '/';
$page = new Page('index.twig');
}
}
现在模板是硬编码的,但我想稍后从数据库中获取页面名称,所以我可以拥有动态页面。这就是为什么我需要知道如何使用此代码创建正确的登录系统。我想要&#39; / login&#39;链接到登录页面,将我重定向到我可以管理数据的仪表板,如wordpress,创建页面等。如果我错过了数据,请在评论中询问我。
答案 0 :(得分:0)
如果您要创建登录系统,那么您很可能希望拥有一组只能由已登录的int用户访问的URL。
private $_logged_in_uris = [];
接下来,您将要修改add()函数以识别需要进行身份验证的网址。
/*
* Builds a collection of internal URL's to look for
* @param type $uri
*/
public function add($uri, $method = null,$authenticated=false)
{
$this->_uri[] = '/' . trim($uri, '/');
if($authenticated){
$this->_logged_in_uris[] = '/' . trim($uri,'/');
}
if($method != null){
$this->_method[] = $method;
}
}
我可以问你为什么要使用$ _GET [&#39; uri&#39;]?最好直接从PHP向您公开的超级全局中获取URI。在这种情况下,$ _SERVER [&#39; REQUEST_URI&#39;]很方便。
要确定用户是否经过身份验证,您需要在用户使用用户名和密码登录后设置会话变量。然后,您可以将$ uri与$ _logged_in_uris中的uris进行比较,然后检查会话变量。如果设置了会话变量,那么他们就可以访问您网站的那一部分。