Ir para conteúdo
Fórum Script Brasil
  • 0

Warning: Session_start() [function.session-start]


Guest Felipe.cunnha

Pergunta

Guest Felipe.cunnha

Bom dia, estou iniciando em PHP e estou com problemas. Preciso resolve-lo URGENTEMENTE. Se alguém puder me ajudar ficarei agradecido.

O erro é o seguimte:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/homologacao/www/html/desenvolvimento/gitcmd/csi/secreta.php:1) in /var/homologacao/www/html/desenvolvimento/gitcmd/csi/includes/sessao.php on line 2

Após me logar no sistema a partir da página index.php, sou redirecionado para a página secreta.php, onde aparece este erro. O mais estranho é que o sistema estava funcionando sem nenhm problema e do nada começou a dar este erro.

ALGUMA SUGESTÃO??????

sequem os códigos:

index.php


<?
require_once "includes/sessao.php";
//require_once("sessao.php");
/*
// Checa se a sessao é valida
checar_sessao();
// Recebe as variaveis usuario e senha
$usuario = strtolower($_POST["usuario"]);
$senha = $_POST["senha"];
// Include da classe SCAA
require_once("SCAA.php");

// Estanciando uma nova classe SCAA
$scaa = new SCAA();

// Metodo de autenticacao da classe SCAA no qual o numero é o respectivo numero da
// aplicacao pre-cadastrada
$retorno = $scaa->auth(50,$usuario,$senha);

// Se o retorno for falso, o usuario é submetido novamente a tala de login com uma
//mensagem de erro

if($_GET['erros']){
die('chega de loop');
}
if ($retorno['sucesso'] == false) {
$erro=$retorno['erro'];
header("Location: loga.php?erro=$erro&usuario=$usuario");
}

// Se o retorno for verdadeiro retorna as variaveis atreladas ao usuario logado com o
//registro,nome,area e nivel de acesso,
//a partir dai ele é submetido para o sistema
else {
$_SESSION['registro']= $retorno['registro'];
$_SESSION['nome']= $retorno['nome'];
$_SESSION['area']= $retorno['area'];
$_SESSION['acesso']= $retorno['acesso'];
header('Location: adm/consulta_busca.php');
exit;

}
*/
if($_POST['usuario'] && $_POST['senha']){
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$sessao = new Autentica($usuario,$senha);
}
/*Felipe Cunha
06/08/2007
versão 1.0
Esta página receberá o login e a senha do usuário.*/
?>

<html>
<head><title> XDA - Cadastro de Sistemas</title>
<style type="text/css">
<!--
p {
font-size: 12px; /* ponto-e-vírgula é facultativo */
}

body {
color: #000000;
background: #ffffff;
font-family: "verdana"
}
-->
</style>
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="80%" bgcolor="#a9c5e1"><img src="http://s1web.metroweb.sp.gov.br/cmsp/aplicacoes/images/logo_aplicacoes.gif"></td>
<td width="20%" bgcolor="#a9c5e1"><img src="image/xda.jpg"></td>
</tr>
</table><br><br>


<form name="logar" method="POST" action="<?=$_SERVER['PHP_SELF']?>">
<br><table width="100%" border="0" align="center">
<tr>
<td colspan="3">&nbsp;</td>
</tr>
<tr>

<td colspan="3" align="center"><font face="Verdana, Helvetica, Arial, sans-serif" size="4" color="blue"><b>CADASTRO DE SISTEMAS</b></font></td>
</tr>
<tr valign="middle">
<td height="20" colspan="3">
<div align="center"><font face="Verdana" size="2"><b></b></font></div></td>
</tr>

<tr>
<td width="40%" align="right"><font face="Verdana, Helvetica, Arial, sans-serif" size="2" color="#000000"><b>Usuário: </b></font></td>
<td width="60%" align="left"><input name="usuario" type="text" value="" size="20" maxlength="20"></td>
</tr>
<tr>
<td width="40%" align="right"><font face="Verdana, Helvetica, Arial, sans-serif" size="2" color="#000000"><b>Senha: </b></font></td>
<td width="60%" align="left"><input type="password" name="senha" size="20" maxlength="20"></td>
</tr>
<tr>
<td colspan="2" height="20"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Entrar">
</td>
</tr>
</table>
</form>

</body></html>
[/codebox]

sessao.php

[codebox]
<?php
session_start();
require_once "SCAA.php";
/*** Funcao que atribui um nome a sessao, deve ser usado como nome de sessao a sigla da
aplicacao,
Caso o registro não esteja armazenado para a aplicacao o usuario sera direcionado para
uma tela de timeout.
Todas as paginas da aplicacao deve ter como 'include' o sessao.php, pois é atraves dele
que é verificado se
o usuario estao autenticado corretamente ***/
/**
* Void
*/
final class Autentica extends scaa{
private $sessao = array();
protected $scaa;
protected $aplicacao = 50;
private $usuario;
private $senha;
private $ret;

public function __construct(){

$_args = func_get_args();
$this->usuario = $_args[0];
$this->senha = $_args[1];

$this->sessao['usuario'] = $_args[1];
$this->sessao['centro_custo'] = $_args[2];

$this->dados_funcionario();
}
public function __get($p){
$this->sessao = & $this->ret;
return $this->sessao[$p];
}
private function dados_funcionario(){
$this->ret = & $this->auth($this->aplicacao,$this->usuario,$this->senha);
if($this->sucesso){
//print_r($this->ret);
$_SESSION['XDA'] = serialize($this);
$this->redireciona();
}else{
$this->alerta($this->erro);
}
}
public function redireciona($alvo="secreta.php"){
header("Location: " . $alvo);
}
public function alerta($msgId){
echo "<script> alert('" .$msgId . "')</script>";
}
public function desconecta(){
session_name('XDA');
unset($_SESSION['XDA']);
session_destroy;
$this->redireciona("index.php");
}
public function estou_conectado(){
return $this->sucesso;
}
}
/*Felipe Cunha
06/08/2007
versão 1.0
Esta página verifica se o login e a senha inseridos em index.php tem permissaõ para acessar o sistema*/
?>

secreta.php


<?php
require_once "includes/sessao.php";
$dump = unserialize($_SESSION['XDA']);
if(!is_object($dump)){
header("Location: index.php");
}
switch($_GET['m']){
case "desconectar":
$dump->desconecta();
break;
}
?>
<html>
<?
if($dump->estou_conectado()):
switch($dump->acesso){
case 1:
$mostra =<<<HTML
<head><title> XDA - Cadastro de Sistemas</title>
<style type="text/css">
<!--
p {
font-size: 12px; /* ponto-e-vírgula é facultativo */
}

body {
color: #000000;
background: #ffffff;
font-family: "verdana"
}
-->
</style>

</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="80%" bgcolor="#a9c5e1"><img src="http://s1web.metroweb.sp.gov.br/cmsp/aplicacoes/images/logo_aplicacoes.gif"></td>
<td width="20%" bgcolor="#a9c5e1"><img src="image/xda.jpg"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr style="background-color:#a9c5e1" >
<td>$dump->nome</td>
<td><a href="?m=desconectar">Desconectar</a> </td>
</tr>
</table><br><br>

HTML;
if ($dump->acesso == 1){
$mostra .= "<h1 align=center>Cadastro de Sistemas</h1><br>";
}

//$mostra .=<<<HTML



$abre = $_GET['abre'];

$mostra .= "<table border='1' width='40%' bordercolor='blue' bgcolor='#a9c5e1' align='center'>";

$mostra .= "<tr bgcolor='#a9c5e1' align='center'><td><a href='cadastra_geral.php?nm=&sg_sistema=&cd_natureza=&nm_sistema=&sg_gerencia=&nm_gestor=&nrtelgest=&nm_analista_git=&nm_banco=&st_case=&ds_sist=&st_sist=&nm_fantasia=&nm_ad=&dt_criacao=&tp_desenv=&nm_desenv=&nm_fornec=&nm_linguagem=&dt_implantacao=&nm_ambiente=&nm_fonte=&nm_arquitetura=&nm_nat='><font size='3' face='Century' color='black'>CADASTRAR NOVO SISTEMA</font></a></td></tr>";

if ($abre == 1) {
$mostra .= " <tr bgcolor='#a9c5e1' align='center'>
<td align='left'><a href='secreta.php?abre=0'><font size='3' face='Century' color='black'>CADASTROS COMPLEMENTARES</font></a>
<br><br><a href='cadastra_ambiente.php?nm='>Cadastrar Ambiente</a>
<br><a href='cadastra_arquitetura.php?nm='>Cadastrar Arquitetura</a>
<br><a href='cadastra_banco.php?nm='>Cadastrar Banco</a>
<br><a href='cadastra_integra.php?nm='>Cadastrar Integrac&atilde;o</a>
<br><a href='cadastra_linguagem.php?nm='>Cadastrar Linguagem</a>
<br><a href='cadastra_natureza.php?nm='>Cadastrar Natureza</a>
<br><a href='cadastra_sitcase.php?nm='>Cadastrar Situac&atilde;o case</a>
<br><a href='cadastra_status.php?nm='>Cadastrar Status</a>
<br><a href='cadastra_tpdesenv.php?nm='>Cadastrar Desenvolvimento</a></td></tr>";}
else
$mostra .= "<tr bgcolor='#a9c5e1' align='center'><td><a href='secreta.php?abre=1'><font size='3' face='Century' color='black'>CADASTROS COMPLEMENTARES</font></td></tr>";

if ($abre == 2) {
$mostra .= "<tr bgcolor='#a9c5e1' align='center'><td align='left'><a href='secreta.php?abre=0'><font size='3' face='Century' color='black'>CONSULTAS</font></a>";
$mostra .= "<br><br><a href='lista_tb2.php?tab=adbanco&que=30&coluna=&valor=&sinal='>Filtrar Consulta";
$mostra .= "<br><a href='lista_tb.php?tab=adbanco&que=30'>Consultar</td></tr>"; }
else
$mostra .= "<tr bgcolor='#a9c5e1' align='center'><td><a href='secreta.php?abre=2'><font size='3' face='Century' color='black'>CONSULTAS</font></td></tr>";

$mostra .= "</table>";


//HTML;
break;
case 2:
$mostra = "Você não tem acesso neste m&oacute;dulo";
break;
default:
$mostra = "Voc&ecirc; n&atilde;o tem acesso neste m&oacute;dulo";
break;
}
echo $mostra;

else:
$dump->alerta("Não conectado");
$dump->redireciona("index.php");
endif;

/*Felipe Cunha
06/08/2007
versão 1.0
É a partir desta página que o usuário terá acesso a todas as funcionalidades do sistema.*/
?>
</body>
</html>
[/codebox]

:blink:

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0
Guest felipe.cunha
Eu não encontrei em seu index.php nenhuma referência sobre o secreta.php .

Existe algum outro arquivo intermediário?

Se houver, existe alguma saída para o navegador nele antes de iniciar a session?

O arquivo sessao.php é o intermediário.

Ele recebe o login e senha, ultiliza o SCAA para verificar se o usuário tem a permissão para acessar o sistema. Se sim, redireciona para secreta.php

Link para o comentário
Compartilhar em outros sites

  • 0

O PHP tem uma função que serve como controle de fluxo, e você pode tentar utilizá-la para resolver seu problema.

Lá no index.php, faça o seguinte:

Troque o:

<?
require_once "includes/sessao.php";
Por:
<?php
require_once "includes/sessao.php";
ob_flush();

Note também que eu modifiquei sua tag, pois por padrão o PHP5 não as aceita.

Em vez de <?, pocure utilizar <?php, assim você não terá problemas quando migrar para o PHP5.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest felipe.cunha
O PHP tem uma função que serve como controle de fluxo, e você pode tentar utilizá-la para resolver seu problema.

Lá no index.php, faça o seguinte:

Troque o:

<?
require_once "includes/sessao.php";
Por:
<?php
require_once "includes/sessao.php";
ob_flush();

Note também que eu modifiquei sua tag, pois por padrão o PHP5 não as aceita.

Em vez de <?, pocure utilizar <?php, assim você não terá problemas quando migrar para o PHP5.

Coloquei em prática sua sugestão mais não adiantou, o erro continua.

Se tiver outra sugestão pode mandar mais mesmo assim valeu pelo help.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest felipe.cunha
caso tenha aquele espaço de [enter] antes do <? que fico ali no forum tire ele do code..

ou

se o includes/sessao.php imprime algo na tela

bote o session_start(); pra cima logo depois de <?

OS espaços só ficaram no fórum, mais no código mesmo não existe nenhum espaço de [enter].

E o includes/sessao.php não imprime nada na tela. Se você olhar em sessao.php verá que o session_start(); está logo depois de <?php

valeu pela ajuda e se tiver mais sugestões estou esperando. valeu mesmo...... :blink:

Link para o comentário
Compartilhar em outros sites

  • 0

cara, seguinte... como você disse que o script tava funcionando então é provavel que alguma coisa na configuração do php tenha mudado... como você é iniciante talvez tenha mudado algo no php.ini, ou outra pessoa o fez...

dá uma olhada na linha

session.cache_limiter do teu php.ini... coloca algo do tipo

session.cache_limiter=nocache

acho que talvez seja isso...

abraço brother...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest felçipe.cunha
cara, seguinte... como você disse que o script tava funcionando então é provavel que alguma coisa na configuração do php tenha mudado... como você é iniciante talvez tenha mudado algo no php.ini, ou outra pessoa o fez...

dá uma olhada na linha

session.cache_limiter do teu php.ini... coloca algo do tipo

session.cache_limiter=nocache

acho que talvez seja isso...

abraço brother...

Cara eu olhei o php.ini mais já estava assim - session.cache_limiter=nocache

Ainda não foi desta vez , se tiver outra opção.

Não sei se isso ajuda mais estou usando o PHP com Postgres

Valeu brother ate mais....

Link para o comentário
Compartilhar em outros sites

  • 0
Guest felipe.cunha

Tem esses erros tambem.... :wacko:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/homologacao/www/html/desenvolvimento/gitcmd/csi/secreta.php:1) in /var/homologacao/www/html/desenvolvimento/gitcmd/csi/includes/sessao.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at /var/homologacao/www/html/desenvolvimento/gitcmd/csi/secreta.php:1) in /var/homologacao/www/html/desenvolvimento/gitcmd/csi/secreta.php on line 5

Fatal error: Call to a member function desconecta() on a non-object in /var/homologacao/www/html/desenvolvimento/gitcmd/csi/secreta.php on line 9

Link para o comentário
Compartilhar em outros sites

  • 0
Guest felipe.cunha

aí rapaziada consegui desvendar o mistério, bastou colocar um @ antes de session_start(); e o erro sumiu....

O problema é que eu não sei porque o @ me ajudou.....se alguém souber ?????????????

Link para o comentário
Compartilhar em outros sites

  • 0
Guest felipe.cunha
@ serve para "abafar" erros, ele oculta todo erro que a linha que estiver a frente dele possa gerar... isso não é lá uma boa prática, porque erros são úteis...

Então quer dizer que eu fiz uma gambiarra para o erro não aparecer na tela, mais ele continua....

É bom saber valeu........

Link para o comentário
Compartilhar em outros sites

  • 0
@ serve para "abafar" erros, ele oculta todo erro que a linha que estiver a frente dele possa gerar... isso não é lá uma boa prática, porque erros são úteis...

Então quer dizer que eu fiz uma gambiarra para o erro não aparecer na tela, mais ele continua....

É bom saber valeu........

Exatamente, você não vê o erro, mas que ele ainda existe, existe...

Link para o comentário
Compartilhar em outros sites

  • 0

Estava com um problema semelhante.

Na página q verifica a session coloquei ele lá no inicio do código... mas continuou o erro. Então na página q chama ela também coloquei no inicio. Aí funcionou sem dar erro. Obrigado!!!

ficou assim.

<?php
require "estalogado.php";
// Verificador de sessão
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
.....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...