ERRO de sessão no PHP

19/06/2018

0

Olá, desenvolvi um sistema web que esta rodando normal no xamp, quando fui subir ele na internet começou a dar erro na hora de logar no sistema, eu faço o login e aparece os seguintes erros:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/timer057/public_html/system/chamado/bd/conexao.php:15) in /home/timer057/public_html/system/chamado/logar.php on line 21

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/timer057/public_html/system/chamado/bd/conexao.php:15) in /home/timer057/public_html/system/chamado/logar.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /home/timer057/public_html/system/chamado/bd/conexao.php:15) in /home/timer057/public_html/system/chamado/logar.php on line 30

Alguém pode me ajudar? não sei oque é esse erro

segue os código de logar e conexão:

<?php
// Conexao com o banco
include ("bd/conexao.php");
$pdo=conectar();

// Login
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
// PDO
$sql = "SELECT * FROM usuario WHERE usuario=? AND senha=?";
$stm = $pdo->prepare($sql);
$stm->bindValue(1, $usuario);
$stm->bindValue(2, $senha);
$stm->execute();

if ($stm->rowCount() >= 1){
  	// Salva os dados do usuario na var resultado
	$resultado = $stm->fetchAll(PDO::FETCH_OBJ);
	
	// Se a sessão não existir, inicia uma
	if (!isset($_SESSION)) session_start();
	// Salva os dados encontrados na sessão
	$_SESSION['idUsuario'] = $resultado[0]->idUsuario;
	$_SESSION['nomeUsuario'] = $resultado[0]->nome;
	$_SESSION['tipoUsuario'] = $resultado[0]->tipo_usuario_idTipoUsuario;

	// Redireciona o usuario para a pagina correta dependendo do nivel de acesso
	if ($_SESSION['tipoUsuario'] == 1) {

		header("Location: admin/admin-home.php"); exit;
	} 
	elseif ($_SESSION['tipoUsuario'] == 2) {
		header("Location: user_ti/user_ti-home.php"); exit;
	}
	else {
		header("Location: user/user-home.php"); exit;
	}
}
else{
	echo "<script>alert('Usuario ou senha não correspondem.')</script>";
	 echo "<script>window.location = 'index.php';</script>";
}
?>



<?php
function conectar(){
	try {
		$pdo = new PDO('mysql:host=localhost;dbname=XXXXX', 'XXXX', 'XXXX');
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
      } // fecha try
      catch(PDOException $e){
      	echo 'ERRO: ' . $e->getMessage();
      }
      return $pdo;
  }
  ?>


Matheus Felipe

Matheus Felipe

Responder

Post mais votado

20/06/2018

A sessão é a primeira coisa que tu tem que abrir na pagina. Antes do include da conexao tu abre a sessao, nao precisa verificar se ela existe, só nomeia ela e starta:

<?php
session_name('teste');
session_start();

// Conexao com o banco
include ("bd/conexao.php");
$pdo=conectar();


e ai remove essa linha:
if (!isset($_SESSION)) session_start();


porque essa pagina só serve pra logar, tu vai chamar ela uma vez por sessão, entao não precisa testar se ela ta setada, estancia ela e starta direto.

espero ter ajudado. :D

Alex William

Alex William
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar