Ir para conteúdo

POWERED BY:

Arquivado

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

Luiz Henrique

Warning: session_start():

Recommended Posts

Estou com um sistema de inclusão, exclusão e consulta, está funcionando perfeitamente mas na hora de excluir (eu não preciso excluir, apenas abrindo a página de exclusão sem praticar ação nenhuma ele da o seguinte erro:)

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at caminho...\exclui_user.php:3) in caminho...\protecao.php on line 2
E a tal linha que ele esta se referindo contém isto aqui

session_start();

Ele funciona posso excluir na boa então após a exclusão aparece uma tela de confirmação de que o produto foi excuído e aparece a mesma mensagem, não faço idéia do que seja isto.

Lembrando que o produto que eu selecionei para excluir foi excluso, o problema é somente a mensagem, o que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o código pra eu testar...Acho q você naum colocou session no inicio do arquivoFaiz assim:<?phpsessio_start();//E o resto do código vai abaixo?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
?	session_start();		function anti_injection($txt){		$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;		return preg_replace("@(--|\#|\*|;|=)@s", "", $txt);	}	function verifica_usuario($nome, $senha){		include "conecta_mysql.inc";		$re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = md5('$senha')");		$total = mysql_result($re, 0, "total");		mysql_close();		if($total != 1){			header("Location: login.htm");			exit;		}		if(!isset($_SESSION["dados"])){			$dados["nome"] = $nome;			$dados["senha"] = $senha;			$_SESSION["dados"] = serialize($dados);		}	}	if(isset($_SESSION["dados"])){		$dados = unserialize($_SESSION["dados"]);		$nome = $dados["nome"];		$senha = $dados["senha"];		verifica_usuario($nome, $senha);	}else{		$nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : "";		$senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : "";		verifica_usuario($nome, $senha);	}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro naum é em session e sim na "Header"

você pois ela dentro de uma função

Os headers servem pra modificar o conteudo da página

Entaum você colocou ela numa função

Essa função só é excultada separada ou depois e o header tá la dentro

Assim quando a funcão é execultada o header tenta modificar a página

só q o conteudo naum pode mais ser modificado pois a página jah abriuy muitas coisas tipo criou funções exemplo

 

<?

function bla(){

 

}

?>

 

O header só pode ser colocado em forks e naum em funções

e nunca crie funções antes de header e nem textos tipo ECHO""; ou PRINT("");

 

Apenas forks

 

Vi q você nescessita da função entaum lhe proponho fazer assim:

<?	session_start();		function anti_injection($txt){		$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;		return preg_replace("@(--|\#|\*|;|=)@s", "", $txt);	}	function verifica_usuario($nome, $senha){		include "conecta_mysql.inc";		$re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = md5('$senha')");		$total = mysql_result($re, 0, "total");		mysql_close();		if($total != 1){			echo"<script>location.href=\"login.html\";</script>";			exit;		}		if(!isset($_SESSION["dados"])){			$dados["nome"] = $nome;			$dados["senha"] = $senha;			$_SESSION["dados"] = serialize($dados);		}	}	if(isset($_SESSION["dados"])){		$dados = unserialize($_SESSION["dados"]);		$nome = $dados["nome"];		$senha = $dados["senha"];		verifica_usuario($nome, $senha);	}else{		$nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : "";		$senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : "";		verifica_usuario($nome, $senha);	}?>

E naum se preucupe se o Javascript estiver desativado

O "exit" bloqueia o resto do arquivo

 

Tah ae cara espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo erro cara!Mas essa questão quye você mensionou sobre header dentro de funções, não é para funcionar, mas poruqe o erro acontece somente na hora de excluir e não nas demais páginas que também estão utilizando esta função , ex: a página inicial é login.htm que tem a action para index.php, mas eu tenho uma include antes de tudo na index protecao.php e ele executa esta função caso o cara não exista no bd ele retona para:if($total != 1){ header("Location: login.htm");exit;no seu exe: echo"<script>location.href=\"login.html\";";Outra coisa...você disse para eu não me preocupar se o javascript estiver desabilitado porque o exit; bloqueia o resto do arquivo, não entendi essa parada, quer ndizer que se o js estiver desabilitado vai funcionar mesmo assim? o que que o exit faz que ele funciona? ficou muito vago para mim esse negocio de que o exit; bloqueia tudo.vlw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kara aqui num deu erro nenhum põe assim testa o código só assim

cria um arquivo novo tipo:

 

E põe esse código sem mudar nada e me diz no que deu

session.php

<?	session_start();		function anti_injection($txt){		$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;		return preg_replace("@(--|\#|\*|;|=)@s", "", $txt);	}	function verifica_usuario($nome, $senha){		@include "conecta_mysql.inc";		$re = @mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = md5('$senha')");		$total = @mysql_result($re, 0, "total");		@mysql_close();		if($total != 1){			echo"<script>//location.href=\"login.html\";</script>";			exit;		}		if(!isset($_SESSION["dados"])){			$dados["nome"] = $nome;			$dados["senha"] = $senha;			$_SESSION["dados"] = serialize($dados);		}	}	if(isset($_SESSION["dados"])){		$dados = unserialize($_SESSION["dados"]);		$nome = $dados["nome"];		$senha = $dados["senha"];		verifica_usuario($nome, $senha);	}else{		$nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : "";		$senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : "";		verifica_usuario($nome, $senha);	}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa...

você disse para eu não me preocupar se o javascript estiver desabilitado porque o exit; bloqueia o resto do arquivo, não entendi essa parada, quer ndizer que se o js estiver desabilitado vai funcionar mesmo assim? o que que o exit faz que ele funciona? ficou muito vago para mim esse negocio de que o exit; bloqueia tudo.

vlw...

Tipo assim digamos q javascript naum funcione e naum existisse o Exit;

a página naum redirecionaria aparecendo o que tem depois do Exit;, deixando

o q naum deveria ser visivel, visivel...

 

Faiz assim pra testar:

<?echo"Meu texto";exit;echo"Meu texto2";?>
e depois sem Exit; ve a diferença

 

http://forum.imasters.com.br/public/style_emoticons/default/devil.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom agora quando eu acesso a página de login ele já entra logado sem pedir user e senha e da esses erros antes

Warning: main(protecao.php): failed to open stream: No such file or directory in diretorio...\index.php on line 2Warning: main(): Failed opening 'protecao.php' for inclusion (include_path='.;C:/Arquivos de programas/EasyPHP1-8\php\pear\') in diretorio\index.php on line 2Notice: Undefined variable: nome in ddiretorio\index.php on line 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais isso naum é falha no session e sim no include()Tradução do erro:Cuidado:falha ao tentar abrir 'protecao.php' na incluisão (include_path='.;C:/Arquivos de programas/EasyPHP1-8\php\pear\') nodiretorio\index.phpisso q diser q o arquivo incluido naum existevocê meche mesmo com PHP ou é novato?Testa o código direito... ae se me fala...

Compartilhar este post


Link para o post
Compartilhar em outros sites

silverfox Postado Hoje, 00:36   Mais isso naum é falha no session e sim no include()você meche mesmo com PHP ou é novato?Testa o código direito... ae se me fala...

Não sou um expert nada em PHP, trabalho pouco com ele...

Mas você diz em testar o código,

minha estrutura é essa:

 

login.htm   index.php	  incluir.php	  exibir.php	  excluir.phpprotecao.php

Então ao abrir o navegador neste diretório obviamente ele tentará abrir a index.php mas como eu tenho esta condição:

if($total != 1){			header("Location: login.htm");			exit;
que verifica se a sessão não iniciou ele redireciona para login.php e não aparece aquele erro.

Após logado eu tenho as opções de incluir, exibir e excluir o usuário, e todas as páginas tem uma include protecao.php para verificar se o usuário está logado para não acessar diretamente a página administrativa,

 

e o que acontece eu consigo inserir e exibir sem dar erros e essas duas páginas fazem o processamento da protecao.php e não dão erro, já a eclusão aparece a mensagem de erro mas exclui na boa uma coisa é que a "mensagem de erro aparece ao abrir a página" simplesmente não preciso excluir o usuário para depois dar o erro que também ocorre pois após a exclusão ele é direcionado para uma página de confirmação de exclusão que aparece a mensgaem tbm.

 

Então imagino que se foce para dar erro por causa do header teria que dar em todas as páginas pq todas estão processando a protecao.php

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poisé realmente o problema acontece quando eu tenho html na página as outras inserir.php, exibir.php não apresentavam erro poruqe não haviam corpo para a página, era direto o php, agora criei páginas com html + css e da erro em todas, inclusive a index.php

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at caminho...\index.php:4) in caminho...\protecao.php on line 2

Alguém tem idéia de como resolvo isso?, Pois já alterei o código como o amigo silverfox falou mas não adianta ainda da erro!O código da proteção.php é esse:
<?	session_start();	function anti_injection($txt){		$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;		return preg_replace("@(--|\#|\*|;|=)@s", "", $txt);	}	function verifica_usuario($nome, $senha){		include "conecta_mysql.inc";		$re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = md5('$senha')");		$total = mysql_result($re, 0, "total");		mysql_close();		if($total != 1){			header("Location: login.php");			exit;		}		if(!isset($_SESSION["dados"])){			$dados["nome"] = $nome;			$dados["senha"] = $senha;			$_SESSION["dados"] = serialize($dados);		}	}	if(isset($_SESSION["dados"])){		$dados = unserialize($_SESSION["dados"]);		$nome = $dados["nome"];		$senha = $dados["senha"];		verifica_usuario($nome, $senha);	}else{		$nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : "";		$senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : "";		verifica_usuario($nome, $senha);	}?>
ele ta dando erro na linha 2 que é session_start();não sei o que faço mais pois tenho que trabalhar com sessão neste siteobrigado.

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.