cryteck Posted April 17, 2009 at 02:03 PM Report #257278 Posted April 17, 2009 at 02:03 PM Boa tarde, eu criei um sistema de login por sessões e um livro de visitas em php. Na página do livro de visitas tem um link para inserir mensagens que vai para a pagina inserir_msg.php e o que eu queria é que os utilizadores só acedessem a essa página depois de fazer o login. Para isso no sistema de login criei uma página de nome restrito.php com o seguinte código: <?php ob_start(); ?> <?php session_start(); if (isset($_SESSION['login']) && isset($_SESSION['password'])){ $login_utilizador = $_SESSION['login']; } else { header("Location:login.php"); exit(); } ?> <?php ob_end_flush(); ?> Na página inserir_msg.php pos uma include("restrito.php"), só que dá-me um erro: Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\site_login\inserir_msg.php:7) in C:\xampp\htdocs\site_login\restrito.php on line 7. O que se passará ajudem-me..... Abraços!!!! 😁
pedrotuga Posted April 17, 2009 at 02:11 PM Report #257282 Posted April 17, 2009 at 02:11 PM Tens a solução para o teu problema explicada no nosso wiki https://wiki.portugal-a-programar.pt/dev_web/php/problemas_comuns_em_php/#headers-already-sent Se tiveres alguma dúvida afixa aqui.
cryteck Posted April 17, 2009 at 02:20 PM Author Report #257285 Posted April 17, 2009 at 02:20 PM Mas eu já pos as funções <?php ob_start(); ?> e <?php ob_end_flush(); ?> na página restrito.php para activar o buffer mas agora dá-me 2 erros: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\site_login\inserir_msg.php:1) in C:\xampp\htdocs\site_login\restrito.php on line 3 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\site_login\inserir_msg.php:1) in C:\xampp\htdocs\site_login\restrito.php on line 8 Podias verfificar a página restrito.php haver se tem alguma coisa mal.
pedrotuga Posted April 17, 2009 at 02:24 PM Report #257290 Posted April 17, 2009 at 02:24 PM Tens algum output. Não podes ter output absolutamente nenhum antes de usares alguma função que precise de mudar os headers, como é o caso da session_start(). Tens boa solução, muda o session_start() para o início do script.
cryteck Posted April 17, 2009 at 02:30 PM Author Report #257291 Posted April 17, 2009 at 02:30 PM Fogo não estou mesmo a conseguir, a causa dos erros que estão a dar não terá haver com a página inserir_msg.php <?php include("restrito.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=utf-8" /> <link rel="stylesheet" href="fich_menus/cbcscbmenus.css" type="text/css" /> <title>Bombeiros Voluntários da Lixa </title> <link href="estilo.css" rel="stylesheet" type="text/css" /> <link rel="shortcut icon" href="imagens/favicon.ico"> <!-- Início da função de contagem de caracteres --> <script language="javascript"> function ContaCaracteres(){ intCaracteres = 400 - document.formulario.mensagem.value.length; if (intCaracteres > 0) { document.formulario.caracteres.value = intCaracteres; return true; } else { document.formulario.caracteres.value = 0; document.formulario.mensagem.value = document.formulario.mensagem.value.substr(0,400) return false; } } </script> <!-- Fim da função de contagem de caracteres --> </head> <body> <div id="global"> <div id="topo"> <? include ("include/topo/topo.php")?> </div> <div id="imagem_principal"></div> <div id="menus_horizontais"> <?php include("menus.php") ?> </div> <div id="conteudo"> <?php include("config.php"); if (isset($_POST['utilizador'])){ $utilizador =utf8_decode($_POST['utilizador']); $destinatario =utf8_decode($_POST['destinatario']); $mensagem =utf8_decode($_POST['mensagem']); if ($_POST['utilizador'] == "" || $_POST['destinatario'] == "") { echo "Por favor preencha todos os campos corretamente."; echo "<br>"; } elseif ($_POST['mensagem'] == ""){ echo "Por favor introduza a mensagem."; echo "<br>"; } else { $sql_inclu = "INSERT INTO livro(utilizador ,destinatario ,mensagem,data,hora) VALUES ('$utilizador', '$destinatario', '$mensagem', NOW(), NOW())"; $exe_inclu = mysql_query($sql_inclu) or die (mysql_error()); echo "Mensagem Inserida com sucesso"; } } ?> <form action="inserir_msg.php" method="post" name="formulario" id="formulario"> <table width="52%" border="0" align="center" cellpadding="2" cellspacing="0"> <tr> <td colspan="2"> <div align="center"> <a href="mensagens.php"> Ver Mensagens </a> </div> </td> </tr> <tr> <td width="14%"> <br><br>Utilizador</td> <td width="85%"><p> </p> <p> <input name="utilizador" id="utilizador" style="border: 1px solid rgb(153, 153, 153); background-color: #eeeeee; color: black;" type="text"> <td width="1%"> </td> </tr> <tr> <td>Para:</td> <td><select name="destinatario" id="destinatario"> <option value="Presidente"> Presidente </option> <option value="Comandante"> Comandante</option> <option value="Bombeiros"> Bombeiros </option> <option value="Associação">Associação </option> <option value="Todos"> Todos </option> </select></td> </tr> <tr> <td valign="top"><p></p> <p>Mensagem:</p></td> <td height="201"><p> <textarea name="mensagem" cols="47" rows="10" style="border: 1px solid rgb(153, 153, 153); background-color: #eeeeee; color: black;" id="mensagem" onKeyUp='ContaCaracteres();'></textarea> </p> <p>Ainda restam <input name="caracteres" type="text" value="400" size="3" maxlength="3" readonly="readonly"> caracteres. </p></td> </tr> <tr> <td colspan="2">Adiccionar Smiles <br> <? include ("include/smileys/smileys.php"); ?></td> </tr> <tr> <td colspan="2"> <div align="center"> <input type="reset" name="reset" value="Limpar"> <input type="submit" value="Enviar" name="enviar" id="enviar"> </div> </td> </tr> </table> </form> <? ob_end_flush(); ?> </div> <div id="lateral"> <?php include("include/relogio/relogio.php") ?> <?php include("include/temperatura/temperatura.php") ?> <?php include("include/votacao/votos.php") ?> </div> </div> <div id="fundo"> <?php include("include/fundo/fundo.php") ?> </div> <br> <br> </body> </html>
djthyrax Posted April 17, 2009 at 04:02 PM Report #257316 Posted April 17, 2009 at 04:02 PM Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\site_login\inserir_msg.php:1) in C:\xampp\htdocs\site_login\restrito.php on line 3 Na linha 1 do inserir_msg.php tens qualquer coisa antes do <?php. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
cryteck Posted April 17, 2009 at 08:47 PM Author Report #257368 Posted April 17, 2009 at 08:47 PM Na pagina editar_msg.php tenho o seguinte codigo <?php require("restrito.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=utf-8" /> <link rel="stylesheet" href="fich_menus/cbcscbmenus.css" type="text/css" /> <title>Bombeiros Voluntários da Lixa </title> <link href="estilo.css" rel="stylesheet" type="text/css" /> <link rel="shortcut icon" href="imagens/favicon.ico"> <!-- Início da função de contagem de caracteres --> <script language="javascript"> function ContaCaracteres(){ intCaracteres = 400 - document.formulario.mensagem.value.length; if (intCaracteres > 0) { document.formulario.caracteres.value = intCaracteres; return true; } else { document.formulario.caracteres.value = 0; document.formulario.mensagem.value = document.formulario.mensagem.value.substr(0,400) return false; } } </script> <!-- Fim da função de contagem de caracteres --> </head> <body> <div id="global"> <div id="topo"> <? include ("include/topo/topo.php")?> </div> <div id="imagem_principal"></div> <div id="menus_horizontais"> <?php include("menus.php") ?> </div> <div id="conteudo"> <? include("config.php"); if (isset($_POST['utilizador'])){ $utilizador =utf8_decode($_POST['utilizador']); $destinatario =utf8_decode($_POST['destinatario']); $mensagem =utf8_decode($_POST['mensagem']); if ($_POST['utilizador'] == "" || $_POST['destinatario'] == "") { echo "Por favor preencha todos os campos corretamente."; echo "<br>"; } elseif ($_POST['mensagem'] == ""){ echo "Por favor introduza a mensagem."; echo "<br>"; } else { $sql_inclu = "INSERT INTO livro(utilizador ,destinatario ,mensagem,data,hora) VALUES ('$utilizador', '$destinatario', '$mensagem', NOW(), NOW())"; $exe_inclu = mysql_query($sql_inclu) or die (mysql_error()); echo "Mensagem Inserida com sucesso"; } } ?> <form action="inserir_msg.php" method="post" name="formulario" id="formulario"> <table width="52%" border="0" align="center" cellpadding="2" cellspacing="0"> <tr> <td colspan="2"> <div align="center"> <a href="mensagens.php"> Ver Mensagens </a> </div> </td> </tr> <tr> <td width="14%"> <br><br>Utilizador</td> <td width="85%"><p> </p> <p> <input name="utilizador" id="utilizador" style="border: 1px solid rgb(153, 153, 153); background-color: #eeeeee; color: black;" type="text"> <td width="1%"> </td> </tr> <tr> <td>Para:</td> <td><select name="destinatario" id="destinatario"> <option value="Presidente"> Presidente </option> <option value="Comandante"> Comandante</option> <option value="Bombeiros"> Bombeiros </option> <option value="Associação">Associação </option> <option value="Todos"> Todos </option> </select></td> </tr> <tr> <td valign="top"><p></p> <p>Mensagem:</p></td> <td height="201"><p> <textarea name="mensagem" cols="47" rows="10" style="border: 1px solid rgb(153, 153, 153); background-color: #eeeeee; color: black;" id="mensagem" onKeyUp='ContaCaracteres();'></textarea> </p> <p>Ainda restam <input name="caracteres" type="text" value="400" size="3" maxlength="3" readonly="readonly"> caracteres. </p></td> </tr> <tr> <td colspan="2">Adiccionar Smiles <br> <? include ("include/smileys/smileys.php"); ?></td> </tr> <tr> <td colspan="2"> <div align="center"> <input type="reset" name="reset" value="Limpar"> <input type="submit" value="Enviar" name="enviar" id="enviar"> </div> </td> </tr> </table> </form> </div> <div id="lateral"> <?php include("include/relogio/relogio.php") ?> <?php include("include/temperatura/temperatura.php") ?> <?php include("include/votacao/votos.php") ?> </div> </div> <div id="fundo"> <?php include("include/fundo/fundo.php") ?> </div> <br> <br> </body> </html>
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now