Jump to content
Fórum Script Brasil
  • 0

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


Guest Felipe.cunnha
 Share

Question

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 to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0
Guest morphors

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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...