创建一个设置$ _SESSION变量的函数

时间:2012-10-27 14:41:32

标签: php session

我创建了一个网站,您需要登录才能访问不同的页面,没什么特别的。 为了让用户保持登录状态,我将会话设置在每个页面的顶部。

我的问题是,我不想在每个页面上设置不同的会话变量。我宁愿有一个函数,我可以调用它来设置它们。另外,我不需要每个页面上的所有变量,所以我希望函数接受可选参数(例如每个页面上没有使用的电子邮件或个人资料图片)。

我在每个页面的顶部调用它:

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

?>

'session.php'文件是这样的:

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

我尝试了一些东西,但它只是让我犯了很多错误。 有人已经这样做了或者发现了一个脚本吗?那可能吗?

5 个答案:

答案 0 :(得分:0)

首先,如果你想要做的是重载你的功能,你就不能这样做。有关详细信息,请参阅this。但是,您可以这样做:

<?php

set_variables($username, $email, $picture,$group)
{
$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
$_SESSION['picture'] = $picture;
$_SESSION['group'] = $group;
}
?>

将此功能放在session.php文件中。

答案 1 :(得分:0)

我不确定我是否理解正确,但如果我这样做,你需要做的就是创建一个新文件,我们称之为“Session_Variables.php”。

创建文件后,将以下代码粘贴到其中:

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

然后,最后,只需用以下代码替换旧代码:

include("Session_Variables.php");

答案 2 :(得分:0)

与您提出的问题没有直接关系,但您应该真正在重定向标题后添加exit;。即使没有登录,客户端也可以忽略标题并仍然加载页面。

答案 3 :(得分:0)

如果你想让set_variables($username, $email)像我想的那样工作,你需要写这样的东西。

<强> 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.
}
?>

你可以像这样使用它

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

答案 4 :(得分:0)

我认为你需要移动session_start();到实际的页面。在session_start()上使用require_once;不是一个好计划。