在函数上使用$ _SESSION变量

时间:2015-04-19 04:44:04

标签: php session

我的页面上有一个函数登录它的工作原理如下:

    function entrarSistema($email,$senha){
    if(isset($email) and (autentica($email,$senha)!=false)){

    $mysqli = connect_db();

    $result = mysqli_query($mysqli,"SELECT ID FROM px_user WHERE email = '$email'");

    $id = mysqli_fetch_array($result);

    $_SESSION['nome'] = autentica($email,$senha);
    $_SESSION['email'] = $email;
    $_SESSION['password'] = $senha;
    $_SESSION['ID'] = $id[0];
    $_SESSION['logado'] = true;

    }

    else{
        if(check_double($email)==1){
            setCodeAlerta(1);
            echo $_SESSION['status'];
        }

        else {
            setCodeAlerta(2);
        }
    }

}

这个函数工作正常,当我调用函数setCodeAlerta()时会设置Session变量,我声明的Session变量不起作用。请注意,这两个函数位于SAME文件上。这是函数:

function setCodeAlerta($numeroCodigo){
    $_SESSION['status'] = $numeroCodigo;
}

我的index.php包含了所有页面,我使用url_rewrite添加了我需要的代码片段,并将其放在最顶层:

if( !isset($_SESSION) ){ session_start(); }

奇怪的是,如果我使用以下代码直接调用名为test.php的文件:

<?php
    setCodeAlerta(2);
?>

变量设置正常,一切正常。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我添加评论,但我的代表还不够高。出于好奇,那时你正在设置的其他会话变量? - 我问,因为我正在运行你的代码(被剥离)并且它返回OK。我只是想到这里有更多的东西,而不仅仅是那个。你是否在包含或任何东西的任何地方调用session_start()两次?

答案 1 :(得分:0)

我知道了。我的代码一切都很好,我只是做了一个条件,我的代码永远不会真正错误的用户名/密码,因此,不访问我的功能(工作正常)。删除第二部分(在和之后)部分条件后,我的代码工作正常。

    if (isset($_POST['submitLogin']) and autentica($_POST['emailLogin'],$_POST['passwordLogin']){
    entrarSistema($_POST['emailLogin'],$_POST['passwordLogin']);
}

我通常会提出问题并在那之后几分钟找到我的答案,我认为这是我的一个坏习惯。即便如此,我花了最后5个小时来调试它。

谢谢!