mruoppolo 14 Denunciar post Postado Março 27, 2014 Olá galera, td bem?? Estou tendo o seguinte problema eu criei um sistema de login e senha para uma área restrita do meu site, mas esta dando um erro de session q eu não to conseguindo encontrar o motivo. O erro é este aqui: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/marcelom/public_html/producao/principal.php:1) in/home/marcelom/public_html/producao/principal.php on line 3 Os arquivos são os seguintes: INDEX.PHP <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>:: Produção - Marcelo Melo ::</title> </head> <body> <?php if(isset($_GET['erroLogin']) && $_GET['erroLogin'] == true){ echo "<script language='javascript1.2'>alert('Este e-mail não esta cadastrado em nosso sistema!')</script>"; }elseif(isset($_GET['erroSenha']) && $_GET['erroSenha'] == true){ echo "<script language='javascript1.2'>alert('Esta senha não confere com o e-mail informado!')</script>"; }elseif(isset($_GET['cadastroSucesso']) && $_GET['cadastroSucesso'] == true){ echo "<script language='javascript1.2'>alert('Seu cadastro foi realizado com sucesso!')</script>"; }elseif(isset($_GET['erroAcesso']) && $_GET['erroAcesso'] == true){ echo "<script language='javascript1.2'>alert('Para ver esta página efetue login no sistema!')</script>"; } ?> <p> </p> <p> </p> <p> </p> <table width="30%" border="0" align="center" cellpadding="5" cellspacing="5"> <tr> <td align="center"><img src="../img/logo.jpg" width="314" height="123" /></td> </tr> <tr> <td align="center" class="red">Produção</td> </tr> <tr> <td><form id="form1" name="form1" method="post" action="logar-producao.php"> <table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr> <td width="34%" align="center">E-Mail:</td> <td width="66%"> <input name="login" type="text" id="login" size="40" /></td> </tr> <tr> <td align="center">Senha:</td> <td> <input name="senha" type="password" id="senha" size="40" /></td> </tr> <tr> <td align="center"><a href="recuperar-senha.php"> <input type="submit" name="button" id="button" value="Acessar" /> </a></td> <td align="center"><a href="recuperar-senha.php">Esqueceu sua Senha?</a></td> </tr> </table> </form></td> </tr> </table> </body> </html> LOGAR-PRODUCAO.PHP <?php session_start(); include("../includes/config/config1.php"); $login = $_POST['login']; $senha = md5($_POST['senha']); $procurar = mysql_query("SELECT * FROM tb_producao WHERE email_producao = '$login'") or die(mysql_error()); $contar = mysql_num_rows($procurar); if($contar >= 1){ $buscar_senha = mysql_query("SELECT * FROM tb_producao WHERE email_producao = '$login' AND senha_producao = '$senha'") or die(mysql_error()); $contar_total = mysql_num_rows($buscar_senha); if($contar_total >= 1){ $dado = mysql_fetch_assoc($buscar_senha) or die(mysql_error()); $_SESSION['ativa'] = 1; $_SESSION['nome'] = $dado['nome_producao']; //header("Location: principal.php"); echo "<script language='javascript' type='text/javascript'> window.location.href='principal.php'; </script>"; }else{ //header("Location: index.php?erroSenha=true"); echo "<script language='javascript' type='text/javascript'> window.location.href='index.php?erroSenha=true'; </script>"; } }else{ //header("Location: index.php?erroLogin=true"); echo "<script language='javascript' type='text/javascript'> window.location.href='index.php?erroLogin=true'; </script>"; } ?> PRINCIPAL.PHP <?php include("../includes/config/config1.php"); session_start(); if(isset($_SESSION['ativa'])) { header("Location: index.php?erroAcesso=true"); exit(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>:: Produção - Marcelo Melo ::</title> </head> <body> <p> </p> <table width="30%" border="0" align="center" cellpadding="5" cellspacing="5"> <tr> <td align="center"><img src="../img/logo.jpg" width="314" height="123" /></td> </tr> <tr> <td align="center">Olá <?php echo $_SESSION['nome']; ?> | <a href="sair.php">Sair do Sistema</a></td> </tr> <tr> <td align="center"><strong>Arquivos para Download</strong></td> </tr> <?php $buscar_arquivo = mysql_query("SELECT * FROM tb_arquivos"); while($ln=mysql_fetch_assoc($buscar_arquivo)){ ?> <tr> <td align="center"><a href="<?php echo $ln['link_arquivo']; ?>"><?php echo utf8_encode($ln['nome_arquivo']); ?></td> </tr> <?php }?> </table> </body> </html> Alguém ai tem alguma ideia do q pode ser?? Mto obrigado galera ;) Compartilhar este post Link para o post Compartilhar em outros sites
Thomas Piedade 21 Denunciar post Postado Março 27, 2014 include("../includes/config/config1.php"); oque tem ai dentro? Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 27, 2014 Oi Thomas, é só a conexão com o banco de dados: <?php $host = "localhost"; $user = "root"; $pass = ""; $db_name = "marcelosite"; $con = mysql_connect($host, $user, $pass) or die(mysql_error()); $db = mysql_select_db($db_name, $con) or die(mysql_error()); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Thomas Piedade 21 Denunciar post Postado Março 27, 2014 Na principal.php vc tentou colocar o session_start() primeiro? session_start(); include("../includes/config/config1.php"); Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 27, 2014 tentei da na mesma Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Março 27, 2014 Tente colocar o session_start(); na primeira linha e que não contenha espaços na frente dele. Também verifique se o arquivo está sendo salvo como UTF8 SEM BOM no seu editor. Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 28, 2014 Verifiquei Back-on, porém ta td certo, o q eu acho estranho é o seguinte, no meu wampserver funciona perfeitamente, porém eu coloquei em 2 hospedagens em 2 empresas diferentes e não funcionou em nenhuma delas Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Março 28, 2014 Teste deletar esta linha: if(isset($_SESSION['ativa'])) { header("Location: index.php?erroAcesso=true"); exit(); } E rodar, dependendo da versão do PHP, ele conflita o header com session. Caso não funcione, o que indico é tentar remover linha por linha, ou até mesmo escrever um arquivo somente com a session: <?php session_start(); ?> E ir escrevendo o resto até ver onde conflita. É como ir fazendo um debug (y) OBS: Tente também inicializar o ob_start() antes do session_start(). Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 28, 2014 tentei os 2 mas deu erro mesmo assim espera este ob_start(). eu não tentei, calma ai eu vo tentar de novo quando eu coloquei o ob_start() apareceu mais um erro: Warning: Cannot modify header information - headers already sent by (output started at /home/marcelom/public_html/producao/principal.php:1) in /home/marcelom/public_html/producao/principal.php on line 7 Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Março 28, 2014 A line 7 se eu não me engano é esta aqui: header("Location: index.php?erroAcesso=true"); remova o header e faça o teste novamente, porém, com a saída de buffer ob_start(); Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 28, 2014 Cara eu removi o session_start(); do arquivo principal.php, porém isso esta errado, pq se eu não iniciei a sessão automaticamente a variavel $_SESSION['ativa'] não existe e se ela não existe ele deveria voltar para a index.php também não funcionou, eu joguei a saída em javascript, mas tbm da o mesmo erro Compartilhar este post Link para o post Compartilhar em outros sites
webdevbr 35 Denunciar post Postado Março 28, 2014 tira qualquer include e bota o session_start acima de tudo.. tome cuidado com espaços em branco entre as tags php e se seu script for somente php remova a tag ?> para evitar esses problemas Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 28, 2014 Então webdevbr eu fiz isso tbm ja, os session_start(); são sempre a primeira coisa do script, não tem espaços em branco nem nada do tipo, ta mto estranho Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Março 28, 2014 O problema e a inicialização do session_start(); utilize o ob_start e no final de todo o código ob_end_flush(); Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 28, 2014 pode me dar um exemplo de como ficaria isso ai, pq eu ja tentei e não funcionou, mas como é um comando q eu ainda não conheço direito pode ser q eu tenha usado errado Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Março 28, 2014 No seu principal <?php // incluindo o ob_start ob_start(); include("../includes/config/config1.php"); session_start(); if(isset($_SESSION['ativa'])) { header("Location: index.php?erroAcesso=true"); exit(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>:: Produção - Marcelo Melo ::</title> </head> <body> <p> </p> <table width="30%" border="0" align="center" cellpadding="5" cellspacing="5"> <tr> <td align="center"><img src="../img/logo.jpg" width="314" height="123" /></td> </tr> <tr> <td align="center">Olá <?php echo $_SESSION['nome']; ?> | <a href="sair.php">Sair do Sistema</a></td> </tr> <tr> <td align="center"><strong>Arquivos para Download</strong></td> </tr> <?php $buscar_arquivo = mysql_query("SELECT * FROM tb_arquivos"); while($ln=mysql_fetch_assoc($buscar_arquivo)){ ?> <tr> <td align="center"><a href="<?php echo $ln['link_arquivo']; ?>"><?php echo utf8_encode($ln['nome_arquivo']); ?></td> </tr> <?php }?> </table> </body> </html> <?php // incluindo o ob_end_flush(); ob_end_flush(); ?> coloque o resultado.... Se este posts lhe ajudou, coloque como resolvido e me der um ponto positivo de reputação. Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Março 28, 2014 Então agora deu um erro e sumiu o resto da página: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/marcelom/public_html/producao/principal.php:1) in/home/marcelom/public_html/producao/principal.php on line 7Warning: Cannot modify header information - headers already sent by (output started at /home/marcelom/public_html/producao/principal.php:1) in /home/marcelom/public_html/producao/principal.php on line 12 Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Março 28, 2014 ob_start() irá pegar todos os dados de saída e guardar em buffer, e isso não é o seu problema. Faça um debug e no arquivo de php não feche as tags <?php ?> deixe assim e uma linha vazia abaixo <?php $host = "localhost"; $user = "root"; $pass = ""; $db_name = "marcelosite"; $con = mysql_connect($host, $user, $pass) or die(mysql_error()); $db = mysql_select_db($db_name, $con) or die(mysql_error()); //Retire o comentário, mas deixe uma linha. Pode ser ai o problema! Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Abril 4, 2014 Exatamente isso, não entendi o motivo ma era isso ai mesmo ;) Valew \o/ Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Abril 4, 2014 Exatamente isso, não entendi o motivo ma era isso ai mesmo ;) Valew \o/ Que bom que resolveu! Só para explicar, se você fecha as tags, onde só tem código de php, e por acidente da um enter antes, este enter será enviado como cabeçalho desta forma: echo '\n'; ?> causando um Cannot modify header information – headers already sent Sem falar que alguns editores insere esta quebra de linha automaticamente ao salvar, da para ver isso quando se usa o sublime com uma extensão que mostra onde esta os espaços em branco. Não fechar as tags é recomendável para php puro "classes, bibliotecas e etc". :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites