2017-11-28 15 views
0

내가 작성한 URL에 따라보기를 반환 할 라우터가있는 작은 프로젝트를 시작했습니다 (존재하는 경우). 대한경로 기반 mvc에서 로그인/등록 시스템을 올바르게 구현하려면 어떻게해야합니까?

<?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'); 
} 

}

이제 템플릿은 하드입니다,하지만 난 나중에 데이터베이스에서 페이지 이름을 얻으려면, 그래서 내가 동적 페이지를 가질 수 있습니다. 그래서 내가이 코드로 어떻게 적절한 로그인 시스템을 만들 수 있는지 알아야합니다. 나는 로그인 페이지에 '/ 로그인'링크를 연결하여 대시 보드로 리다이렉트시켜 데이터를 관리 할 수있는 곳 (예 : 워드 프레스, 페이지 만들기 등)을 원합니다. 데이터가 누락 된 경우 댓글로 문의하십시오.

답변

0

로그인 시스템을 만들려면 로그 된 int 사용자 만 액세스 할 수있는 URL 집합이 필요할 것입니다.

private $_logged_in_uris = []; 

다음으로 인증해야 할 URL을 인식하도록 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 [ 'uri']를 사용하고 있는지 물어볼 수 있습니까? PHP가 여러분에게 드러 낼 수있는 슈퍼 전역에서 직접 URI를 가져 오는 것이 가장 좋습니다. $ _SERVER [ 'REQUEST_URI']는이 경우에 편리합니다.

사용자가 인증되었는지 알아 보려면 사용자가 사용자 이름과 암호로 로그인 한 후에 세션 변수를 설정해야합니다. 그런 다음 $ _logged_in_uris 내의 uri와 uri를 비교 한 다음 세션 변수를 검사 할 수 있습니다. 세션 변수가 설정되면 웹 사이트의 해당 부분에 액세스 할 수 있습니다.

+0

정상적인 방문자가 잠글 예정인 유일한 페이지는 대시 보드 페이지입니다. 나머지는 '로그인'을 클릭하여 $ user->를 활성화했는지 확인하는 PHP 파일이 필요합니다. login ($ username, $ password)? –