Ir ao conteúdo

Posts recomendados

Postado

Criei um sistema de login usando PHP versão 5.6.31 usando session, o sistema tem uma página de login com form e inputs que manda os dados para uma página de autenticação que por sua vez conecta ao banco de dados usando uma página de conexão definida no include da página de autenticação; e tem também a página principal chamada painel.php que será exibida se a sessão estiver sido iniciada. Acontece que usando a página de login para tal, ela me exibe a mensagem que o login foi aceito, ou seja se conectou ao banco e verificou que os dados estavam corretos, a página de login então redireciona para a página painel.php, aí que está o problema, a sessão não é identificada na página painel.php, a página de login redireciona para ela (painel.php) e ela me retorna para a página de login. A base de dados está correta e a conexão a ela também, estou usando no servidor com FreeBSD, o acesso e as permissões no diretório de gravação das sessions (session.save_path = /tmp) está tudo ok, pois ao clicar no botão para submit na página de login a sessão é aberta e os arquivos são gerados neste diretório. Não sei mais o que fazer, criei um servidor usando Ubuntu server 14.10, criei a base de dados com os mesmos dados e coloquei os arquivos nele, funcionou perfeitamente, mas no FreeBSD não funciona, a página painel.php fica me redirecionando para a login.php sempre.

 

Página de LOGIN (login.php):

<html>
<head><title>SISTEMA DE LOGIN</title></head>
<body>
<form name="loginform" method="post" action="userauthentication.php">
    E-mail: <input type="text" name="email" /><br /><br />
    Senha: <input type="password" name="senha" /><br /><br />
<input type="submit" value="Entrar">
</form>
</body>
</html> 

Página de AUTENTICAÇÃO (userauthentication.php):

<?php
include "con_db.php";
?>
<html>
<head><title>Autenticando usuário</title>
<script type="text/javascript">
function loginsucessfuly() {
    setTimeout("window.location='painel.php'", 4000);
}
function loginfailed() {
    setTimeout("window.location='login.php'", 4000);
}
</script>
</head>
<body>
<?php
$email=$_POST['email'];
$senha=$_POST['senha'];
$sql = mysql_query("SELECT * FROM usuarios WHERE email = '$email' AND senha = '$senha'") or die (mysql_error());
$row = mysql_num_rows($sql);
if($row > 0) {
    session_start();
    $_SESSION['email']=$_POST['email'];
    $_SESSION['senha']=$_POST['senha'];
    echo '<center>"Login efetuado com sucesso! Redirecionando ao painel...."</center>';
    echo '<script>loginsucessfuly()</script>';
} else {
    echo '<center>"Nome de usuário ou senha inválidos! Aguarde para tentear novamente!"</center>';
    echo '<script>loginfailed()</script>';
}
?>

 

Página de CONEXÃO AO BANCO (con_db.php):

<?php
$host = "localhost";
$user = "root";
$pass = "*6330Tgopraz/";
$banco = "cadastro";
$conexao = mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($banco) or die(mysql_error());
?>

 

Página PRINCIPAL (painel.php):

<?php
include "con_db.php";
?>
<?php
session_start();
if(!isset($_SESSION['email']) || !isset($_SESSION['senha'])) {
    echo "<script language='javascript'>window.location.replace('login.php')</script>";    
    exit();
} else {
    echo "<center>Você está logado. Utilize o Painel com inteligencia! :D</center>";
}
?>

 

Usando este código na página painel.php ela me retorna para a página login.php no FreeBSD, já no Ubuntu Server funciona normalmente usando as mesmas versões do PHP e do MySql.

 

No lugar do redirecionamento echo "<script language='javascript'>window.location.replace('login.php')</script>";  coloquei o código var_dump($_SESSION); e o resultado foi:

/usr/local/www/apache24/data/wpmasters/painel.php:7: array(0) { }

 

Então tirei o código var_dump($_SESSION); e usei o código rint_r ($_SESSION); e o resultado da página painel.php foi: Array ( ) 

 

Alguém tem ideia do que pode ser? as configurações do php.ini estão corretas pelo que comparei ao php.ini do Ubuntu Server.

 

 

 

  • Moderador
Postado

@tiagopraz Olá.

 

Há algumas observações a se fazer no seu código.

1) O session_start em todos os lugares que for usar, deve ser a primeira coisa a ser declarada no php.

2) No arquivo  userautenticantion.php,  remova todas as tags html.  deixe apenas php, pois o papel dele é só receber os dados e valida-los.

 

3) está faltando algumas coisas para que o painel.php  funcione bem..

 

Eu recomendo que você leia este post aqui:

 

Use o modelo que eu postei ali.. tem toda a explicação. 

Seguindo passo a passo meu modelo, vai funcionar sem erro.

 

PS2:  Recomendo também atualizar seu php, comece a usar o 7, pois tem funções que foram removidas do php 5

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!