Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Johny

Erro de session

Recommended Posts

Johny

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/public_html/portal/login.php:1) in /home/public_html/portal/login.php  on line 19

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/public_html/portal/login.php:1) in /home/public_html/portal/login.php on on line 19



Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/portal/login.php:1) in /home/public_html/portal/login.php on line 24

Ola pessoal tenho uma pagina de login que estava a funcionar bem até ontem e hoje começou-me aparecer isto sempre que tento fazer login na pagina como posso resolver este problema?


#############

Share this post


Link to post
Share on other sites
Johny

yoda eu não alterei o código e de um dia para o outro apareceu-me este erro e antigamente estava a funcionar correctamente

vou deixar aqui o código para se alguém me poder ajudar a solucionar isto porque já tive a experimentar outras maneiras e nada =/

<?php
//Disponibiliza todos os ficheiros que necessita
require_once("includes/ban.php");
include_once("includes/estatisticas.php");
//---------------------------------------------------//
if (isset($_POST['Submit'])) {


$login = $_POST["login"];
$senha = $_POST["senha"];


$resultado = mysql_query("select * from users where login = '$login' and senha = '$senha' and activo = '1'");
$linhas = mysql_num_rows($resultado);
if ($linhas==0) { //Verifica se existe algum utilizador com o login pretendido
	$mensagem = "Dados incorrectos. Por favor verifique se introduziu os dados correctamente, ou se a sua conta está activa.";
} else {
	//Inicia a session
        session_start();
	$_SESSION["login_usuario"] = $login;
	$_SESSION["senha_usuario"] = $senha;
    
	// redireciona para a pagina principal
	header("Location: index.php");
} }
?>


#############

Share this post


Link to post
Share on other sites
softklin

Tenta ver se não há nenhum HTML ou espaços em branco fora da zona de PHP (delimitada por <?php e ?>). Abre ainda com o Notepad do Windows, e verifica se não há nenhum espaço ou caractere esquisito antes de <?php (erro comum na codificação de conteúdos).


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Johny

não tem nada começa assim o código e o HTML vem depois o mais engraçado é que não alterei nada e ontem funcionava hoje já não funciona isto já andei a procurar e já experimentei outras formas colocar o session no inicio e tudo, mas continua na mesma da sempre erro =/

Agradecia que alguém me arranja-se a solução para isto =)


#############

Share this post


Link to post
Share on other sites
softklin

Copia esse ficheiro para outro lado, e cria um novo ficheiro vazio na pasta original (onde está esse). Copia os conteúdos desse ficheiro.

Esse problema pode ter aparecido após actualizares a versão do PHP, por exemplo.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
scorch

Tenta colocar o session_start(); logo a seguir às tags <?php.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Johny

<?php
session_start();
//Disponibiliza todos os ficheiros que necessita
require_once("includes/ban.php");
include_once("includes/estatisticas.php");
//---------------------------------------------------------------------------------------------------------------------------------------------//
if (isset($_POST['Submit'])) {

//recebe os valores submetidos
$login = $_POST["login"];
$senha = $_POST["senha"];

//Faz a conecção com a base de dados
$resultado = mysql_query("select * from users where login = '$login' and senha = '$senha' and activo = '1'");
$linhas = mysql_num_rows($resultado);
if ($linhas==0) { //Verifica se existe algum utilizador com o login pretendido
	$mensagem = "Dados incorrectos. Por favor verifique se introduziu os dados correctamente, ou se a sua conta está activa.";
} else {
	//Inicia a session
	$_SESSION["login_usuario"] = $login;
	$_SESSION["senha_usuario"] = $senha;
    
	// redireciona para a pagina principal
	header("Location: index.php");
} }
?>

Coloquei assim e agora dá-me este erro:

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/portal/includes/ligacao.php:1) in /home/public_html/portal/login.php on line 24


#############

Share this post


Link to post
Share on other sites
scorch

Mostra o ligacao.php. :thumbsup:


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Johny

Já deu tirei o Save with BOM e já deu já agora para que serve isto?


#############

Share this post


Link to post
Share on other sites
softklin

Foi o que eu te disse lá em cima, problemas de codificação, por isso é que insisti para que copiasses os conteúdos para outro ficheiro novo.

Sobre o BOM, remeto-te para a Wikipédia:

http://en.wikipedia.org/wiki/Byte_order_mark

É o tal primeiro "caractere" que estava sempre no inicio do ficheiro, e te originava o output.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
rjcarneiro

Algo está antes do session_start() a escrever...

tenta editar online ou num outro editor diferente, porque às vezes acontecem cenas desse genero: editores colocarem chars esquesitos no inicio do ficheiro...

Falo por experiencia!

Share this post


Link to post
Share on other sites
scorch

xOy ele já conseguiu colocar a funcionar. :thumbsup:


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Johny

<table width="312" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td height="30" background="images/votacoes/votacoestop.png"></td>
          </tr>
          <tr>
            <td height="172" align="center" valign="middle" background="images/votacoes/votacoesbody.png">
            <table width="280" border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td align="left" valign="top"><?php
                  if (isset($_POST['submit'])) {
   	$idp = $_POST['idpergunta'];
	$id = $_POST['resposta'];
	$idpl = strlen($idp);
	$respostal = strlen($id);
        $IP = $_SERVER[REMOTE_ADDR];
        
         if ($idpl == 0 or $respostal == 0) {
		echo "Tem que escolher uma opção!";
	} else {
	$consulta = mysql_query("SELECT * FROM `pergunta` where `ID` = '$idp'") or die(mysql_error());
	while ($line = mysql_fetch_array($consulta)) {
            $numactual = $line['totalvotos'];
            }
            if (isset($_COOKIE["$idp"])){
    		echo "Você já respondeu a esta Pergunta!<br /><br />";
            include_once("votacoes/resultado.php");
            } else{
            $sql = "UPDATE `respostas` SET `votos` = votos+1 WHERE `ID` = '$id' LIMIT 1 ;";
		mysql_query($sql) or die(mysql_error());

		$sql2 = "UPDATE `pergunta` SET `totalvotos` = totalvotos+1 WHERE `ID` = '$idp' LIMIT 1 ;";
		mysql_query($sql2) or die(mysql_error());
            
            setcookie("$idp", "$IP", time()+172800); //Fixa a expiração do cookie em 48 horas 

		echo "O seu voto foi adicionado com sucesso.<br />Obrigado!<br /><br />";
            include_once("votacoes/resultado.php");

}}} else {
$consulta = mysql_query("SELECT * FROM `pergunta`") or die(mysql_error());
	while ($line = mysql_fetch_array($consulta)) { 
		$pergunta = $line['pergunta'];
            $idp = $line['ID'];
            $activo = $line['activo'];
}
if ($activo == 1){
echo "<strong>".$pergunta."</strong><br /><br />";
echo "<form id=\"form2\" name=\"form2\" method=\"post\" action=\"\">";
$consulta = mysql_query("SELECT * FROM `respostas` ORDER BY `ID` ASC") or die(mysql_error());
while ($line = mysql_fetch_array($consulta)) {
echo "<input type=\"hidden\" value=\"".$idp."\" name=\"idpergunta\">		
<input id=".$line["ID"]." name=\"resposta\" value=".$line["ID"]." type=\"radio\"><label for=".$line["ID"].">".$line["resposta"]."</label><br />";
} 
echo "<br /><input type=\"submit\" value=\"Votar\" name=\"submit\" class=\"butao\"><br />
</form>";
} else {
    echo "Não há perguntas disponiveis!";
}}?>
                  </td>
              </tr>
            </table></td>
          </tr>
          <tr>
            <td height="30" background="images/votacoes/votacoesbottom.png"></td>
          </tr>
</table>

Malta há um novo erro isto hoje ta mesmo de mais tenho este código dentro de um ficheiro de seu nome votar.php que depois através de um require na pagina principal chamo para o local das votações mas está a dar um erro  ao fazer o cookie para a pessoa não poder votar nesta votação nas próximas 48horas.

E ao fazer votar ele conta o voto mas dá-me este erro:

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/portal/main.php:13) in /home/public_html/portal/votacoes/votar.php on line 37

Agradecia ajuda =)


#############

Share this post


Link to post
Share on other sites
scorch

@Jonhy Os cookies também têm de ser enviados antes que qualquer outro output. :thumbsup:


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Johny

Resolvi metendo um session_start(); ob_start(); na pagina main.php já não da erro e funciona =)


#############

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.