[Resolvido] Sessão em PHP
Srs,
Não estou conseguindo implantar a funcionalidade de restrição de acesso em meu sistema. Quero que os usuários só acessem mediante login e senha.
Os exemplos que encontrei na net são exemplos simples, geralmente apenas com funções.
Veja minha situação (não vou me ater aos detalhes são fica muito código).
Meu formulário de login joga o $_POST na função autenticaSession();
case 'autenticar':
include_once 'app.dao/UserDAO.php';
$user = new UserDAO();
$user->autenticaSession($_POST);
break;
função autenticaSession();
public function autenticaSession($_POST){
isset($_POST["indexlogin"]) ? $this->setLogin($_POST['indexlogin']) : FALSE; // verificar se está vazia e atribui os valores com setLogin e setSenha
isset($_POST["indexpasswd"]) ? $this->setSenha($_POST['indexpasswd']) : FALSE;
if(!$this->getLogin() || !$this->getSenha()){ // Se não existe nada funcao erroSession(), que mostra um script e redireciona de volta ao form de login;
$this->erroSession();
exit;
}else{
$mysql = new MySQLConnection();
$sql = "SELECT * FROM $this->table
WHERE $this->Login = '" . $this->getLogin() . "' AND $this->Senha = '" . $this->getSenha() . "'";
$mysql->execute($sql);
if($mysql->totalRegistro() == 1){
while ($array = $mysql->nextRow()){
$this->setLogin($array['Login']);
$this->setNome($array['Nome']);
}
session_start();
$_SESSION['login'] = $this->getLogin(); // atribui os valores
$_SESSION['nome'] = $this->getNome(); // atribui os valores
$_SESSION['autoriza'] = 'sim';
$_SESSION['codigo'] = rand();
$sql = "UPDATE $this->table SET $this->Codigo = ". $_SESSION['codigo'] . " WHERE $this->Login = '" . $_SESSION['login'] . "'";
$this->mysql($sql);
$href = $_SERVER['PHP_SELF'] . "?module=principal&acao=home"; // sou direcionado para a página principal da aplicação
header("Location: $href");
}else{
$this->erroSession();
}
}
}Para autenticar esse código funciona legal....
Ao montar uma página qualquer chamo a seguinte função passando o template ($tpl).
public function view($tpl){
$pagina = new Pagina();
$pagina->header('XXXX');
echo '<body>';
echo '$_SESSION[login] = ' . $_SESSION['login'] . "<BR>"; // somente para verificar
echo '$_SESSION[autoriza] = ' . $_SESSION['autoriza'] . "<BR>"; // somente para verificar
echo '$_SESSION[codigo] = ' . $_SESSION['codigo'] . "<BR>"; // somente para verificar
echo '<div id="pagina">';
$pagina->topo();
$pagina->menu();
echo '<div id="conteudo">';
include "app.templates/$tpl.php";
$pagina->controller();
echo '</div>';
$pagina->rodape();
echo '</div></body></html>';
Acontece que dá Undefined variable: _SESSION.
Aí a dúvida. $_SESSION não é global?
Não consigo acessar ela de uma classe diferente?
Elas são setadas na classe UserDAO.
Quando vou na classe Pagina, elas não estão definidas.
Preciso de um esclarecimento e uma dica de como resolver, posteriormente criar uma função verificar se existe ou não a sessões $_SESSION['login'].
Obrigado....
Discussão (8)
Carregando comentários...