2012-10-27 2 views
0

다른 페이지를 방문하려면 로그인해야하는 사이트를 만들었습니다. 특별한 것은 없습니다. 사용자를 로그인 상태로 유지하려면 모든 페이지 상단에 세션을 설정하고 있습니다.

제 문제는 각 페이지의 상단에 다른 세션 변수를 설정하고 싶지 않다는 것입니다. 차라리 한 가지 기능을 설정하여 설정할 수 있습니다. 또한 각 페이지에서 모든 변수가 필요하지 않으므로 전자 메일 또는 모든 페이지에서 사용되지 않는 프로필 그림과 같은 선택적 매개 변수를 허용하는 기능을 원합니다. 내가 좋아하는 것

<?php 

require_once 'session.php'; 
confirm_logged_in(); 
$username = $_SESSION['username']; 
$email = $_SESSION['email']; 
$picture = $_SESSION['picture']; 
$group = $_SESSION['group']; 

?> 

이 더 같이하고 내가 필요한 변수 만 설정 할 수 있도록 :

<?php 

require_once 'session.php'; 
confirm_logged_in(); 
set_variables($username, $email); 

?> 

'세션을

나는 각 페이지의 상단에이 전화 .php '파일은 다음과 같습니다 :

<?php 
session_start(); 
function logged_in(){ 
    return isset($_SESSION['username']); 
} 
function confirm_logged_in(){ 
    if(!logged_in()){ 
     header('location: start.php'); 
    } 
} 
?> 

나는 몇 가지 시도를했지만 방금 막대한 양의 오류가 발생했습니다. 누군가 이미이 작업을 수행했거나이를 수행하는 스크립트를 발견 했습니까? 그게 가능하니?

+0

질문에 표시되는 오류를 추가하십시오. – Ray

+0

그럼 오류는 무엇입니까? – Shades88

+0

'$ _SESSION'에서 변수를 같은 이름의 전역 또는 로컬 변수로 추출해야합니까? 왜 그냥 세션을 사용하지 않습니까?슈퍼 글로벌 (superglobal)이라는 특성상 모든 범위에서 사용할 수 있습니다. 대신에'$ email = $ _SESSION [ 'email']; echo $ email;'그냥 세션을 직접 사용하지 않는 이유'echo $ _SESSION [ 'email'];'어떤 로컬로드를로드하는지에 대한 문제를 완전히 회피합니다. 또한, 전역 변수의 변경 사항을'$ _SESSION'으로 다시 동기화해야하는 번거 로움을 덜어줍니다. –

답변

0

우선 무엇을하고 싶은지 함수에 과부하가 있다면 그렇게 할 수 없습니다. 자세한 내용은 this을 참조하십시오. 그러나 다음 작업을 수행 할 수 있습니다.

이 함수는 session.php 파일에 넣습니다.

0

내가 제대로 이해했는지 확신 할 수는 없지만 그렇게했다면 "Session_Variables.php"라고 부르는 새 파일을 만들어야합니다. 파일을 생성

후, 다음 코드를 붙여 넣 직접 당신이 질문에 관련되지

include("Session_Variables.php"); 
0

:

<?php 
require_once 'session.php'; 
confirm_logged_in(); 
$username = $_SESSION['username']; 
$email = $_SESSION['email']; 
$picture = $_SESSION['picture']; 
$group = $_SESSION['group']; 
?> 

그런 다음, 마지막으로, 단지와 기존 코드를 대체 묻고,하지만 당신은 정말exit; 리디렉션 헤더 후 추가해야합니다. 클라이언트는 로그인하지 않고도 헤더를 무시하고 여전히 페이지를로드 할 수 있습니다. set_variables($username, $email)을 원한다고 생각하는 것처럼 만들고 싶다면 클라이언트는 이처럼 뭔가를 작성해야합니다.

0

Session.php

<?php 
session_start(); 
function logged_in(){ 
    return isset($_SESSION['username']); 
} 
    function confirm_logged_in(){ 
    if(!logged_in()){ 
     header('location: start.php'); 
    } 
} 
//Only Picture and group are Optionals 
function set_variables($username, $email, $picture = '', $group = ''){ 
    //you can check here is thoses variables are set or valid before assign them 
    $_SESSION['username'] = $username; 
    $_SESSION['email'] = $email; 
    $_SESSION['picture'] = $picture; 
    $_SESSION['group'] = $group; 
} 
//create a function that we need to retrieve thoses values 
function get_variable($name){ 
    if (isset($_SESSION[$name])) return $_SESSION[$name]; 
    return FALSE; //if the variable is not set. 
} 
?> 

그리고 당신은 당신이)합니다 (으로 session_start를 이동할 필요가 있다고 생각이

<?php 
require_once 'session.php'; 
confirm_logged_in(); 
set_variables($username, $email); 
$username = get_variable('username'); 
?> 
0

처럼 사용할 수 있습니다; 실제 페이지로. session_start();에 require_once 사용하기 좋은 계획이 아닙니다.

관련 문제