Ir para conteúdo

POWERED BY:

Arquivado

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

Ramon Melo

[Resolvido] session erro!

Recommended Posts

Galera, to fazendo um sistema e login e senha para poder acessar o sistema, ate pouco tempo ele estava conseguindo da o login corretamente.. agora nao da mais, ja vai direto para essa mensagem: Dados não vieram do formulario!!!<- isso só era pra da quando eu tentasse entrar direto na pagina.php...

 

QUando eu abro pagina.php da o seguinte erro da session:

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Arquivos de programas\VertrigoServ\www\sistemalab\pagina.php:2) in C:\Arquivos de programas\VertrigoServ\www\sistemalab\pagina.php on line 11

 

Os codigos estão assim:

 

pagina.php:

<?php
session_start();//starta a sessão
$nome=$_SESSION['nome'];

include"session.php";
include "topo.php";
echo "Bem vindo <b> " .$nome."</b><div align='right'><a href='logout.php'>sair</a></div>";

echo "<br>";
?>

login.php

<?php

$botao = $_POST['enviar'];

if($botao){
  //conecta com o banco  
  include('conexao.php');
  $login=$_GET[login];
  $senha=$_GET[senha];
  
  //dá o select no banco para pegar usuario e senha
  $sql="SELECT * FROM admin WHERE USUARIO='$login' and SENHA =$senha";
  $res=mysql_query($sql);

  //se o numero de linhas afetadas for 1  
  if( @mysql_num_rows( $res ) == 1){
   $result=mysql_fetch_row($res);
   session_start();//starta a sessão
		//valores que vão ser guardados na session
		$_SESSION['id']=$result[0];//id vai ser guardado para ter um log do usuario
		$_SESSION['nome']=$result[1];
		$_SESSION['permissao']=$result[2];
		//echo 'logado!';
		HEADER('location: pagina.php'); 
  } else {
		//echo 'Não logado!';
		HEADER('location: acessoNegado.php');
  } 
		   
} else {
  echo 'Dados não vieram do formulario!!!';
}

?>

session.php

<?php
//inicia a session
session_start();
//revebe o nome
if (!$_SESSION['nome']){
	HEADER ('location: controle_usuarios.php'); 
}
?>

Esse erro que está dando é porque??

valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, to fazendo um sistema e login e senha para poder acessar o sistema, ele consegue ainda da o login, mas quando abre a pagina inicial ele da um erro da session que nao sei o que é:

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Arquivos de programas\VertrigoServ\www\sistemalab\pagina.php:2) in C:\Arquivos de programas\VertrigoServ\www\sistemalab\pagina.php on line 11

 

Os codigos estão assim:

 

pagina.php:

<?php
session_start();//starta a sessão
$nome=$_SESSION['nome'];

include"session.php";
include "topo.php";
echo "Bem vindo <b> " .$nome."</b><div align='right'><a href='logout.php'>sair</a></div>";

echo "<br>";
?>

login.php

<?php

$botao = $_POST['enviar'];

if($botao){
  //conecta com o banco  
  include('conexao.php');
  $login=$_GET[login];
  $senha=$_GET[senha];
  
  //dá o select no banco para pegar usuario e senha
  $sql="SELECT * FROM admin WHERE USUARIO='$login' and SENHA =$senha";
  $res=mysql_query($sql);

  //se o numero de linhas afetadas for 1  
  if( @mysql_num_rows( $res ) == 1){
   $result=mysql_fetch_row($res);
   session_start();//starta a sessão
		//valores que vão ser guardados na session
		$_SESSION['id']=$result[0];//id vai ser guardado para ter um log do usuario
		$_SESSION['nome']=$result[1];
		$_SESSION['permissao']=$result[2];
		//echo 'logado!';
		HEADER('location: pagina.php'); 
  } else {
		//echo 'Não logado!';
		HEADER('location: acessoNegado.php');
  } 
		   
} else {
  echo 'Dados não vieram do formulario!!!';
}

?>

session.php

<?php
//inicia a session
session_start();
//revebe o nome
if (!$_SESSION['nome']){
	HEADER ('location: controle_usuarios.php'); 
}
?>

Esse erro que está dando é porque??

valeu galera

Olá amigo.

 

Esse não é um erro, é um aviso dizendo que você enviou o cabeçalho antes do cookie de sessão.

Geralmente este aviso ocorre quando você envia algum HTML antes do session_start();

 

Verifique se antes das tags <? e ?> existem linhas em branco ou qualquer outro caractere. Esses caracteres são interpretados como html e são enviados no cabeçalho do documento antes do cookie.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi tudo bem?

Voce está iniciando a session 2 vezes, uma no arquivo pagina.php e a outra no arquivo session.php

E como você inclui o arquivo session.php no pagina.php, inicie somente no arquivo pagina.php e veja se o erro desaparece.

E a session que você iniciou no arquivo login.php você deixa como está, ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
//inicia a session
session_start();
//revebe o nome
if (!$_SESSION['nome']){
	HEADER ('location: controle_usuarios.php');
}
?>

tira o ! do session não precisa,e coloca header em minuscula!!

 

fica assim

 

<?php
//inicia a session
session_start();
//revebe o nome
if ($_SESSION['nome']){
	header ('location: controle_usuarios.php');
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

E em:

$botao = $_POST['enviar'];

if($botao){
	   //conecta com o banco  
	   include('conexao.php');
	   $login=$_GET[login];
	   $senha=$_GET[senha];

troque por:

if (isset($_POST['enviar']) && !empty(isset($_POST['enviar'])) {
	   //conecta com o banco  
	   include('conexao.php');
	   $login=$_GET[login];
	   $senha=$_GET[senha];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei como voce falou, mas ficou dando esse erro:

if (isset($_POST['enviar']) && !empty(isset($_POST['enviar'])) {

 

Erro:

Parse error: syntax error, unexpected T_ISSET, expecting T_STRING or T_VARIABLE or '$' in C:\Arquivos de programas\VertrigoServ\www\sistemalab\login.php on line 3

 

e a linha 3, é exatamente essa que está dando erro..

 

-> E quando eu coloco como estava antes:

$botao = $_POST['enviar'];

if($botao){

 

Ele ja aparece assim: Dados não vieram do formulario!!!

 

Como se não existisse o resto do codigo pegando só o final do codigo de login.php:

echo 'Dados não vieram do formulario!!!';

 

............

 

O erro que estava dando saiu, mas agora ele nao consegue logar no sistema :|..

valeu galera.. :| quem poder ajudar ae agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe o código é esse:

if (isset($_POST['enviar']) && !empty($_POST['enviar'])) {

Pronto, parou o erro do codigo, mas ele continua aparecendo: DADOS NAO VIERA DO FORMULARIO..

e nao abre o arquivo pagina.php :|

 

e outra coisa, esse isset é para que? Esse codigo vai ter a mesma função do if ($botao) { etc...

 

 

putz nao sei o que acontece ;\ !

 

valeu pela força parcerio!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo login.php ta assim:

 

<?php

if (isset($_POST['enviar']) && !empty($_POST['enviar'])) {
  //conecta com o banco  
  include('conexao.php');
  $login=$_GET[login];
  $senha=$_GET[senha];
  
  //dá o select no banco para pegar usuario e senha
  $sql="SELECT * FROM admin WHERE USUARIO='$login' and SENHA =$senha";
  $res=mysql_query($sql);

  //se o numero de linhas afetadas for 1  
  if( @mysql_num_rows( $res ) == 1){
   $result=mysql_fetch_row($res);
   session_start();//starta a sessão
		//valores que vão ser guardados na session
		$_SESSION['id']=$result[0];//id vai ser guardado para ter um log do usuario
		$_SESSION['nome']=$result[1];
		$_SESSION['permissao']=$result[2];
		//echo 'logado!';
		header('location: pagina.php'); 
  } else {
		//echo 'Não logado!';
		header('location: acessoNegado.php');
  } 
		   
} else {
  echo 'Dados não vieram do formulario!!!';
}

?>

E quando eu vou entrar com usuario e senha ele vai direto pra esse ultimo echo que tem ai..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem tem ideia de porque não está abrindo o arquivo pagina.php e está dando direto a mensagem como se tivesse tentnado acessar diretamente a pagina sem login??

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, tudo bem?

isset é pra verificar se a variável foi iniciada.

 

Só mais uma coisa. Se o seu formulário estiver com method=post, você deve usar somente post e não post e get misturados:

if (isset($_POST['enviar']) && !empty($_POST['enviar'])) {
  //conecta com o banco  
  include('conexao.php');
  $login=$_POST['login'];
  $senha=$_POST['senha'];

Caso o formulário esteja com method=get, você deve usar somente get, assim:

if (isset($_GET['enviar']) && !empty($_GET['enviar'])) {
  //conecta com o banco  
  include('conexao.php');
  $login=$_GET['login'];
  $senha=$_GET['senha'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, tudo bem?

isset é pra verificar se a variável foi iniciada.

 

Só mais uma coisa. Se o seu formulário estiver com method=post, você deve usar somente post e não post e get misturados:

if (isset($_POST['enviar']) && !empty($_POST['enviar'])) {
  //conecta com o banco  
  include('conexao.php');
  $login=$_POST['login'];
  $senha=$_POST['senha'];

Caso o formulário esteja com method=get, você deve usar somente get, assim:

if (isset($_GET['enviar']) && !empty($_GET['enviar'])) {
  //conecta com o banco  
  include('conexao.php');
  $login=$_GET['login'];
  $senha=$_GET['senha'];

Exatamente.. mas mudei tambem, coloquei tudo post (formulario manda por post) mas mesmo assim, nao consegue ir para a pagina.php... nao sei o que está havendo!!!

=/// voce sabe cara? valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha ai

 

login.php

 

<?php

// login.php

session_start();

if (isset($_POST['enviar']) && !empty($_POST['enviar']))
{
	include "conexao.php";
	
	$login = (isset($_POST['login']) && !empty($_POST['login'])) ? $_POST['login'] : "";
	$senha = (isset($_POST['senha']) && !empty($_POST['senha'])) ? $_POST['senha'] : "";
	
	$sql = "SELECT * FROM admin WHERE usuario='$login' AND senha='$senha'";
	$result = mysql_query($sql);
	
	if (mysql_num_rows($result) > 0)
	{
		$_SESSION['id']		= $result[0];
		$_SESSION['nome']	  = $result[1];
		$_SESSION['permissao'] = $result[2];
		
		header("location: pagina.php");
	} else {
		header("location: acessoNegado.php");
	}
} else {
	echo "Dados não vieram do formulario!!!";
}

?>

pagina.php

 

<?php

// pagina.php

session_start();

include "session.php";
include "topo.php";

$nome = $_SESSION['nome'];

echo "Bem vindo <b> " . $nome . "</b><div align='right'><a href='logout.php'>sair</a></div>";
echo "<br>";

?>

session.php

<?php

// session.php

if (isset($_SESSION['nome']) && !empty($_SESSION['nome']))
{
	header("location: controle_usuarios.php");
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só umas perguntas.

Para que serve a página controle_usuarios.php?

Ele está indo direto para a página controle_usuarios.php ao invés de ir para a pagina.php ou não acontece nada?

Quando o usuário não estiver logado que é para redirecionar para controle_usuarios.php?

 

 

olha ai:

<?php

// session.php

// caso não esteja logado vai para controle_usuarios.php, senão permanece em pagina.php
if (!isset($_SESSION['nome']) || empty($_SESSION['nome']))
{
	header("location: controle_usuarios.php");
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade nao.. quando o usuario nao tiver logado é para ir para index.php..

 

ja ajeitei isso,t inha feito errado..

o controle_usuarios.php serve para cadastrar um novo usuario.

 

quando eu coloco o nome de usuario e senha ele aparece assim no browser:

 

http://localhost/sistemalab/login.php?logi...p;enviar=Enviar

 

Ai coloquei agora tudo por GET:

login.php

<?php

if (isset($_GET['enviar']) && !empty($_GET['enviar'])) {
  //conecta com o banco  
  include('conexao.php');
  $login=$_GET[login];
  $senha=$_GET[senha];
  ..............

E ele está indo agora para pagina.php, mas como se os dados nao tivessem vindo do formulario porque está aparecendo essa mensagem:

DADOS NAO VIERAM DO FORMULARIO!

Acessar o Sistema

 

E essa mensagem está nessa pagina.php assim:

pagina.php

<?php
$botao = $_POST['enviar'];

if($botao){
include"session.php";
$nome=$_SESSION['nome'];

include "topo.php";
echo "Bem vindo <b> " .$nome."</b><div align='right'><a href='logout.php'>sair</a></div>";

echo "<br>";
?>
<center>
<style type="text/css">
<!--
body {
	background-color: #AEF7B0;
}
-->
</style>
<title>LARP - Envio de laudos para internet.</title>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="thickbox.js"></script>
<link rel="stylesheet" href="thickbox.css" type="text/css" media="screen" />

<form id="form1" name="form1" method="post" action="paginapesquisa.php">
  <label>
	<input type="text" name="busca" id="busca" />
  </label>
  <label>
	<input type="submit" name="pesquisar" id="pesquisar" value="Pesquisar" />
  </label>
</form>
<?
//######### INICIO Paginação
	$numreg = 8; // Quantos registros por página vai ser mostrado
	if (!isset($pg)) {
		$pg = 0;
	}
	$inicial = $pg * $numreg;
	
//######### FIM dados Paginação
	
	include "conexao.php";
	// Faz o Select pegando o registro inicial até a quantidade de registros para página
	$sql = mysql_query("SELECT * FROM usuario LIMIT $inicial, $numreg");

	// Serve para contar quantos registros você tem na seua tabela para fazer a paginação
	$sql_conta = mysql_query("SELECT * FROM usuario");
	
	$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
	
	 // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>
	
	echo "<br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo
	echo "<table border=1>
	<tr align=center><td><b>NOME</b></td>
	<td><b>Email</b></td>
	<td><b>Telefone</b></td>
	<td><b>Usuario</b></td>
	<td><b>Data</b></td>
  <td><b>EDITAR</b></td>
	<td><b>EXCLUIR</b></td>
	</tr>";
	while ($aux = mysql_fetch_array($sql)) {
		/* Ai o resto é com voces em montar como deve parecer o conteúdo */
		echo "<tr>
	<td>$aux[nome]</td>
	<td>$aux[email]</td>
	<td>$aux[telefone]</td>
	<td>$aux[usuario]</td>
	<td>$aux[data]</td>
	<td align='center'><a href='paginaupdate.php?id=$aux[id]&nome=$aux[nome]&email=$aux[email]&telefone=$aux[telefone]&usuario=$aux[usuario]&senha=$aux[senha]'><img src='icones/icon_edit.gif'></a></td>
	<td align='center'><a href='delete.php?id=$aux[0]'><img src='icones/icon_del.gif'></a></td>
  </tr>";
	}
	//Só vai aparecer
if($msg) {
echo "<td colspan=8><font color=red>$msg</td>
  </tr>";
}
echo "<tr align='right'>
	<td colspan=8><font color=green><a href='cadastro.php?height=250&width=250&modal=true' class='thickbox' title='Cadastrar novo paciente'>NOVO</a>
  </tr>";
	echo "</table>";
	include("paginacao.php");
	}else{
  echo "<center>DADOS NAO VIERAM DO FORMULARIO!<br><a href='index.php'>Acessar o Sistema</a></center>";
  }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

De onde está vindo a variável $msg aqui:

//Só vai aparecer
if($msg) {
echo "<td colspan=8><font color=red>$msg</td>
  </tr>";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

é porque na tela de controle_usuario.php o form vai apontado para o cad_usuarios.php que está assim:

 

cad_usuarios.php

<?php
$login = $_POST[login];
$senha = $_POST[senha];
include "conexao.php";

$query = "SELECT usuario FROM admin WHERE usuario = '$login'";
$result = mysql_query($query);
if (!$result) {
  die ("Erro no cadastro. Tentar novamente.");
}
if (mysql_num_rows($result)==1) {
	echo '<script> history.go(-1); alert("Usuario ja cadastrado no sistema!");</script>';
}else{

$sql = "insert into admin(usuario,senha) 
values('$login','$senha')";
$res = mysql_query($sql);

if ($result > 0){
//echo "Dados excluidos com sucesso!!";
//header -> Redireciona novamente para a pagina lista.php
$msg = "Registro adicionado com sucesso.";
}else{
$msg = "Registro não adicionado.";
}
header("location:controle_usuarios.php?msg=$msg");

}
?>

entendeu? é apenas para mandar uma msg na tela, para da resposta ao usuario!

 

voce nao achou nada de estranho nesse codigo de login nao? :|

Ele nao consegue logar o usuario! :|

 

=/ valeu parceiro pela força!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem? :|

 

Fiz agora de outra forma, nao sei se é insegura mas assim:

 

index.php

<center>
<title> Laudos para WEB </title>
<style type="text/css">
<!--
body {
	background-color: #AEF7B0;
}
-->
</style>


<?php

include "topo.php";

?>
<table width="241" border="0" align="center" bgcolor="#FFFFFF">
<form name="form1" method="post" action="login.php">
  <tr>
   <td colspan="2" align="center" bgcolor="#D9E3FF" class="style1">
   Acesso Restrito
   </td>
  </tr>
  <tr>
	<td width="94" class="style1">Login:</td>
	<td width="131"><input type="text" name="login"></td>
  </tr>
  <tr>
	<td class="style1">Senha:</td>
	<td><input type="password" name="senha"></td>
  </tr>
	<tr>
	<td colspan="2"><? print $msg; ?></td>
	</tr>
  <tr>
	<td colspan="2" align="right">
		<input type="reset" value="Limpar">
	  <input type="submit" name="enviar" value="Enviar"></td>
	</tr>
  </form>
</table>

 

login.php

<?php
$login = $_POST['login'];
$senha = $_POST['senha'];
$botao = $_POST['enviar'];

if($botao){
include ('conexao.php');
$sql="SELECT * FROM admin WHERE usuario='$login' and senha='$senha'";
$res=mysql_query($sql);
  if( @mysql_num_rows( $res ) == 1){
		header('location: pagina.php');
} else {
		  header('location: acessoNegado.php');
			}
		echo "<center>Dados não vieram do formulario. <br>";
		echo "<a href='index.php'>Acesse o sistema</a></center>";
}
?>

pagina.php

<?php
$botao = $_POST['enviar'];

if($botao){

?>
<center>
<style type="text/css">
<!--
body {
	background-color: #AEF7B0;
}
-->
</style>
<title>LARP - Envio de laudos para internet.</title>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="thickbox.js"></script>
<link rel="stylesheet" href="thickbox.css" type="text/css" media="screen" />

<form id="form1" name="form1" method="post" action="paginapesquisa.php">
  <label>
	<input type="text" name="busca" id="busca" />
  </label>
  <label>
	<input type="submit" name="pesquisar" id="pesquisar" value="Pesquisar" />
  </label>
</form>
<?
//######### INICIO Paginação
	$numreg = 8; // Quantos registros por página vai ser mostrado
	if (!isset($pg)) {
		$pg = 0;
	}
	$inicial = $pg * $numreg;
	
//######### FIM dados Paginação
	
	include "conexao.php";
	// Faz o Select pegando o registro inicial até a quantidade de registros para página
	$sql = mysql_query("SELECT * FROM usuario LIMIT $inicial, $numreg");

	// Serve para contar quantos registros você tem na seua tabela para fazer a paginação
	$sql_conta = mysql_query("SELECT * FROM usuario");
	
	$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
	
	 // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>
	
	echo "<br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo
	echo "<table border=1>
	<tr align=center><td><b>NOME</b></td>
	<td><b>Email</b></td>
	<td><b>Telefone</b></td>
	<td><b>Usuario</b></td>
	<td><b>Data</b></td>
  <td><b>EDITAR</b></td>
	<td><b>EXCLUIR</b></td>
	</tr>";
	while ($aux = mysql_fetch_array($sql)) {
		/* Ai o resto é com voces em montar como deve parecer o conteúdo */
		echo "<tr>
	<td>$aux[nome]</td>
	<td>$aux[email]</td>
	<td>$aux[telefone]</td>
	<td>$aux[usuario]</td>
	<td>$aux[data]</td>
	<td align='center'><a href='paginaupdate.php?id=$aux[id]&nome=$aux[nome]&email=$aux[email]&telefone=$aux[telefone]&usuario=$aux[usuario]&senha=$aux[senha]'><img src='icones/icon_edit.gif'></a></td>
	<td align='center'><a href='delete.php?id=$aux[0]'><img src='icones/icon_del.gif'></a></td>
  </tr>";
	}
	//Só vai aparecer
if($msg) {
echo "<td colspan=8><font color=red>$msg</td>
  </tr>";
}
echo "<tr align='right'>
	<td colspan=8><font color=green><a href='cadastro.php?height=250&width=250&modal=true' class='thickbox' title='Cadastrar novo paciente'>NOVO</a>
  </tr>";
	echo "</table>";
	include("paginacao.php");
	}else{
  echo "<center>DADOS NAO VIERAM DO FORMULARIO!<br><a href='index.php'>Acessar o Sistema</a></center>";
  }
?>

pronto, essas são as paginas.. o que acontece agora é que:

quando eu entro com meu usuario/senha no index.php , ele me redireciona para pagina.php mas com a seguinte mensagem:

DADOS NAO VIERAM DO FORMULARIO!

Acessar o Sistema

 

justamente o echo final de pagina.php.. Mas assim, se eu entrar com usuario e senha que nao existam no BD, ele redireciona para acessoNegado.php, blza.. Mas se eu entrar com uma que tenha, ele nao abre a pagina.php corretamente, como se essa parte estivesse errada:

pagina.php

<?php
$botao = $_POST['enviar'];

if($botao){

?>

Na verdade o botão "ENVIAR" está na INDEX.PHP que tem action para LOGIN.PHP e ele vai para PAGINA.PHP..

 

AJUDAAaaaa euiasheiuaheuiaheui =/ valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ramon!! como resolveu??? ta dando esse erro quando testo no servidor mesmo, quando testo local não aparece nada..

 

como q tu resolveu? botando if (!isset($_SESSION)){session_start();} ???

se eu boto isso não me funciona mais nada nem local nem no servidor.

 

tem haver com session_start(); estar na primeira linha??

 

ajuda!!

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.