Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Felipe Espinosa Fernandes

Problema na session_start(), não sei mais o que fazer!

Recommended Posts

Boa Tarde Galera,

 

Estou programando um painel para uma area gerenciavel em um site simples. Sou front end, e não tenho muita experiência com PHP e MySQL porém eu montei um painel, que funcionou perfeitamente no meu servidor local, porém quando subi ele para a hospedagem (hostgator) ele da o aviso:

 

"Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by... on line 5"

"Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by... on line 5"

 

 

Ja revirei a internet atras de soluções e não encontrei, e não estou vendo a lógica do problema.

 

Meu index.php:

 

 

<?php require_once('../connections/config.php'); ?>
<?php
// *** Validate request to login to this site.
session_name('SESSAO_PHP');
session_start();
// Variável de controle
$_SESSION["sessaoaberta"] = 1;
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
// *** Validate request to login to this site.
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['usuario'])) {
$loginUsername=$_POST['usuario'];
$password=$_POST['senha'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "painel.php";
$MM_redirectLoginFailed = "index2.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_config, $config);
$LoginRS__query=sprintf("SELECT usuario, senha FROM usuarios WHERE usuario=%s AND senha=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $config) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
//if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Painel de Controle</title>
<link rel="stylesheet" type="text/css" href="estilo.css">
</head>
<body>
<div id="box">
<h2>Painel de Controle</h2>
<div id="login">
<form id="form1" name="form1" method="POST" action="<?php echo $loginFormAction; ?>">
<table border="0" align="center">
<tr>
<td align="right">Usuário:</td>
<td><label>
<input name="usuario" type="text" id="usuario" size="35"/>
</label></td>
</tr>
<tr>
<td align="right">Senha:</td>
<td><label>
<input name="senha" type="password" id="senha" size="35" />
</label></td>
</tr>
<tr>
<td></td>
<td align="right"><label>
<input type="submit" name"logar" id="logar" value="Logar-se"/>
</label></td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>

 

Meu config.php:

 

 

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_config = "localhost";
$database_config = "felip305_agenda";
$username_config = "felip305_felipe";
$password_config = "****";
$config = mysql_pconnect($hostname_config, $username_config, $password_config) or trigger_error(mysql_error(),E_USER_ERROR);
?>

 

 

O que poderia ser? considerando que o session_start() já foi testado também na primeira linha do código.

 

Ficarei grato por ajudas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tira isso aqui da primeira linha:

?>

Consequentemente, você não precisa de

<?php
na segunda linha

 

Tire o

?>
do config.php também.

 

Leia: http://php.net/manual/en/language.basic-syntax.phptags.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz, e nada mudou... hehe

 

Eu já havia testado sem também, e nada... maior problema é q não consigo fazer o session_start() rodar, por nada... ta complicado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que pena... hehe

 

Certifique-de de estar salvando os arquivos - quando em UTF-8 - sem BOM

 

Garanta que você está escrevendo [inline]<?php[/inline] sempre na primeira linha de cada arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem... não sei se deve ajudar, mais segue o code que eu utilizo:

index.php

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SisVendas - Bem Vindo</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/style.css">



</head>
<body>
<div class="container"> <!-- Inicio da Div Container -->

<!-- Codigo para Autenticar -->
<?php
	
	// Inicio do if de autenticação
	if(isset($_REQUEST["autenticar"]) && $_REQUEST["autenticar"] == true) {
	
	// começar ou retomar uma sessão
	session_start();
 
	// Verifica se o post veio vazio.
	if (!empty($_POST)) {
 
	// estabelecer ligação com a base de dados
	include 'conn/conn.php';
 
	// Variaveis que recebem os valores do login e senha
	$usuario	=	$_POST['usuario'];
	$senha		=	$_POST['senha'];	
	
	// Proteção contra  MySQL injection
	$usuario = stripslashes($usuario);
	$senha = stripslashes($senha);
	$usuario = mysql_real_escape_string($usuario);
	$senha = mysql_real_escape_string($senha);
 
	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)
	$login = mysql_query("SELECT * FROM cod_usuario WHERE usuario='".$usuario."' AND senha='".$senha."' ");
 
	if ($login && mysql_num_rows($login) == 1) {
 
		// o utilizador está correctamente validado
		// guardamos as suas informações numa sessão
		
		$_SESSION['id'] = mysql_result($login, 0, 0);
		$_SESSION['nome'] = mysql_result($login, 0, 1);
 
		header("Location: painel/painel.php");
	} else {
 
		// falhou o login
		echo "<div class='alert alert-danger'><center>Login invalido. <a href='index.php'>Tente novamente</a></center></div>";
	}
	}
	}// Final da Requisição de autenticação
?>



	<div class="row"> <!-- Inicio da Div Row -->
		<div class="col-lg-4 col-offset-4">
    
    <center>
    <BR><BR>
    <img src="img/logo-sisvendas.jpg" alt="Sisvendas">
    <h3>Bem Vindo ao Sisvendas!</h3>
    </center>

	<form method="post" action="?autenticar=true">
		Usuario: 	<input class="form-control" type="text" name="usuario" required><BR>
		Senha:		<input class="form-control" type="password" name="senha" required><BR>
		<input class="btn btn-default" type="submit" name="logar" value="LOGAR">
	</form>
		</div>
    </div><!-- Final da div ROW -->
</div> <!-- Final da Div Container -->
<script type="text/javascript" src="js/jquery.js"></script>

</body>
</html>

Depois que o usuario loga ele já esta na sessão. Agora eu uso o require para chamar o arquivo que adminstra a sessão.

cod-login.php

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SisVendas - Bem Vindo</title>
</head>

<body>
<?php
	// iniciar uma sessão
	session_start();
 	
	// Aqui ele pergunta se existe alguma seção aberta.
	if (empty($_SESSION['id'])) {
	
	// Caso não exista ele mandao usuario automaticamente para a pagina de login.
	header('Location: ../index.php');
	exit();
}
?>
</body>
</html>

Depois disso ele já esta na sessão. Fiz o teste no Uolhost e Locaweb e funciona perfeitamente.
Espero ajudar um pouco com esse code simples que eu uso.

t+!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem... não sei se deve ajudar, mais segue o code que eu utilizo:

 

index.php

 

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SisVendas - Bem Vindo</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/style.css">



</head>
<body>
<div class="container"> <!-- Inicio da Div Container -->

<!-- Codigo para Autenticar -->
<?php
	
	// Inicio do if de autenticação
	if(isset($_REQUEST["autenticar"]) && $_REQUEST["autenticar"] == true) {
	
	// começar ou retomar uma sessão
	session_start();
 
	// Verifica se o post veio vazio.
	if (!empty($_POST)) {
 
	// estabelecer ligação com a base de dados
	include 'conn/conn.php';
 
	// Variaveis que recebem os valores do login e senha
	$usuario	=	$_POST['usuario'];
	$senha		=	$_POST['senha'];	
	
	// Proteção contra  MySQL injection
	$usuario = stripslashes($usuario);
	$senha = stripslashes($senha);
	$usuario = mysql_real_escape_string($usuario);
	$senha = mysql_real_escape_string($senha);
 
	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)
	$login = mysql_query("SELECT * FROM cod_usuario WHERE usuario='".$usuario."' AND senha='".$senha."' ");
 
	if ($login && mysql_num_rows($login) == 1) {
 
		// o utilizador está correctamente validado
		// guardamos as suas informações numa sessão
		
		$_SESSION['id'] = mysql_result($login, 0, 0);
		$_SESSION['nome'] = mysql_result($login, 0, 1);
 
		header("Location: painel/painel.php");
	} else {
 
		// falhou o login
		echo "<div class='alert alert-danger'><center>Login invalido. <a href='index.php'>Tente novamente</a></center></div>";
	}
	}
	}// Final da Requisição de autenticação
?>



	<div class="row"> <!-- Inicio da Div Row -->
		<div class="col-lg-4 col-offset-4">
    
    <center>
    <BR><BR>
    <img src="img/logo-sisvendas.jpg" alt="Sisvendas">
    <h3>Bem Vindo ao Sisvendas!</h3>
    </center>

	<form method="post" action="?autenticar=true">
		Usuario: 	<input class="form-control" type="text" name="usuario" required><BR>
		Senha:		<input class="form-control" type="password" name="senha" required><BR>
		<input class="btn btn-default" type="submit" name="logar" value="LOGAR">
	</form>
		</div>
    </div><!-- Final da div ROW -->
</div> <!-- Final da Div Container -->
<script type="text/javascript" src="js/jquery.js"></script>

</body>
</html>

Depois que o usuario loga ele já esta na sessão. Agora eu uso o require para chamar o arquivo que adminstra a sessão.

 

cod-login.php

 

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SisVendas - Bem Vindo</title>
</head>

<body>
<?php
	// iniciar uma sessão
	session_start();
 	
	// Aqui ele pergunta se existe alguma seção aberta.
	if (empty($_SESSION['id'])) {
	
	// Caso não exista ele mandao usuario automaticamente para a pagina de login.
	header('Location: ../index.php');
	exit();
}
?>
</body>
</html>

Depois disso ele já esta na sessão. Fiz o teste no Uolhost e Locaweb e funciona perfeitamente.

Espero ajudar um pouco com esse code simples que eu uso.

 

t+!

Ah sim, então, mas já consegui resolver, meu problema é q estava salvando com o BOM... dai formatei no notepad++ e rolou tranquilo...

Mas obrigadão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.