Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Johny

Erro de session

Mensagens Recomendadas

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?


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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");
} }
?>


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 =)


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 =)


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.