我的页面上有一个函数登录它的工作原理如下:
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);
?>
变量设置正常,一切正常。
提前致谢。
答案 0 :(得分:0)
我添加评论,但我的代表还不够高。出于好奇,那时你正在设置的其他会话变量? - 我问,因为我正在运行你的代码(被剥离)并且它返回OK。我只是想到这里有更多的东西,而不仅仅是那个。你是否在包含或任何东西的任何地方调用session_start()两次?
答案 1 :(得分:0)
我知道了。我的代码一切都很好,我只是做了一个条件,我的代码永远不会真正错误的用户名/密码,因此,不访问我的功能(工作正常)。删除第二部分(在和之后)部分条件后,我的代码工作正常。
if (isset($_POST['submitLogin']) and autentica($_POST['emailLogin'],$_POST['passwordLogin']){
entrarSistema($_POST['emailLogin'],$_POST['passwordLogin']);
}
我通常会提出问题并在那之后几分钟找到我的答案,我认为这是我的一个坏习惯。即便如此,我花了最后5个小时来调试它。
谢谢!