session start não funciona

1. session start não funciona

Tiago Pereira de Azevedo
tiagopraz

(usa Debian)

Enviado em 03/10/2017 - 10:08h

Galera fiz um sistema de login com PHP 5.6.31 e MySQL usando um tutorial da internet mesmo, pois sou novato na área de desenvolvimento web, é um sistema de login básico usando session e fiz usando uma máquina com FreeBSD, para o sistema funcionar existem quatro páginas, uma de login, outra de conexão ao banco de dados, uma de autenticação e a página principal. O que ocorre é que a base de dados funciona normalmente, a conexão nela também assim como o arquivo de autenticação que checa os dados na base, porém depois de fazer login e o redirecionamento ser feito para a página principal, a página principal retorna para a página de login, é como se a sessão fosse iniciada (de fato é, o arquivo de sessão é gerado no diretório /tmp) e não fosse identificada pela página principal. Para testar, coloquei em um servidor com Ubuntu Server 14.10 e funcionou normalmente, ou seja, o código das páginas estão corretos, o redirecionamento é feito por javascript e está funcionando também com as condições em PHP.


PÁGINA DE LOGIN (login.php):
<html>
<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 = "localdb";
$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 {
var_dump($_SESSION);
echo "<center>Você está logado. Utilize o Painel com inteligencia! :D</center>";
}
?>


A página userauthentication.php está validando os dados e redireciona para a página painel.php, daí a painel.php retorna para login.php.
Fiz um teste na página painel.php e coloquei o código var_dump($_SESSION); no lugar do script de redirecionamento para login.php, o resultado foi:
/usr/local/www/apache24/data/painel.php:7: array(0) { }

Usei também print_r ($_SESSION); e o resultado foi:
Array ( )

Não sei mais o que fazer pois no Ubuntu Server funciona normalmente.





  


2. Re: session start não funciona

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 03/10/2017 - 10:48h

Oi, tudo bem ?

Acredito que o erro está acontecendo porquê você usa session_start() depois de enviar dados para o cliente...

Veja a primeira nota sobre a função session_start() http://php.net/manual/pt_BR/function.session-start.php

Chame o session_start() na primeira linha de cada página que precise usar a sessão.

Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts