【问题标题】:Using $_SESSION variables on a function在函数上使用 $_SESSION 变量
【发布时间】:2015-04-19 04:44:04
【问题描述】:

我的页面上有一个登录功能,它的工作原理如下:

    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 变量不起作用。请注意,这 2 个函数在同一个文件中,这是函数:

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

我的 index.php 包含所有页面,我使用 url_rewrite 添加我需要的代码,并在其最顶部:

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

奇怪的是,如果我用这段代码直接调用一个名为 test.php 的文件:

<?php
    setCodeAlerta(2);
?>

变量设置好,一切正常。

提前致谢。

【问题讨论】:

    标签: php session


    【解决方案1】:

    我会添加评论,但我的代表还不够高。出于好奇,您设置的那个时候是否有其他会话变量可用? - 我问是因为我正在运行您的代码(精简)并且它返回正常。我只是在想这不仅仅是那个。您是否在包含或其他任何地方的任何地方调用 session_start() 两次?

    【讨论】:

      【解决方案2】:

      我明白了。我的代码一切都很好,我只是做了一个条件,我的代码永远不会真正输入错误的用户名/密码,因此,不能访问我的函数(它工作正常)。删除此条件的第二部分(and 之后)后,我的代码运行良好。

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

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

      谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-08
        • 2017-12-12
        • 1970-01-01
        • 2012-11-19
        相关资源
        最近更新 更多