Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Iniciante1

Problema com header

Recommended Posts

Olá galera....

 

Seguinte, tenho um problema nos meus headers com os seguintes erros:

 

Caso o login digitado esteja errado a mensagem é: Warning: Cannot modify header information - headers already sent by (output started at /home/cobra12horas/www/restrito/index.php:5) in /home/cobra12horas/www/restrito/index.php on line 87 (linha do header de login inválido)...

 

Caso o login esteja correto:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/cobra12horas/www/restrito/index.php:5) in /home/cobra12horas/www/restrito/index.php on line 67

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/cobra12horas/www/restrito/index.php:5) in /home/cobra12horas/www/restrito/index.php on line 67

 

Warning: Cannot modify header information - headers already sent by (output started at /home/cobra12horas/www/restrito/index.php:5) in /home/cobra12horas/www/restrito/index.php on line 79

 

 

Detalhes: caso o login esteja correto, o erro fica na linha de redirecionamento para a pagina restrita....

 

e outra grande coisa é que na minha máquina funciona, mas no servidor externo é que tenho esse erro...

 

segue em anexo o código

 


<?php 
include ("dbc.php");

$login = mysql_real_escape_string($_POST['login']);

if ($_POST['Submit']=='Entrar')
{
$md5pass = md5($_POST['pwd']);
$sql = "SELECT * FROM usuarios WHERE login = '$login' AND senha = '$md5pass' AND status='1' "; 
			
$result = mysql_query($sql) or die (mysql_error()); 
$num = mysql_num_rows($result);
if (!$result){
header("Location: index.php?msg=Erro: Login Inválido");
//echo "Error:";
exit();		
	
}
		


    if ( $num != 0 ) { 
	
$dados = mysql_fetch_object($result);
        // A matching row was found - the user is authenticated. 
		session_cache_expire(1);
		session_start(); 
	    
	    $_SESSION['usuario']= $dados->login;
        $_SESSION['permissao'] = $dados->permissao;
		
		
	   if (isset($_GET['ret']) && !empty($_GET['ret']))
		{
		header("Location: $_GET[ret]");
		} else
		{			
			if ($dados->permissao=='Administrador'){
	    	header("Location: myaccount.php");		
        exit;
			}
		}
		//echo "Logged in...";
		
    } 

header("Location: index.php?msg=Erro: Login Inválido");
//echo "Error:";
exit();		
}
	
?>
<link href="styles.css" rel="stylesheet" type="text/css">

<?php if (($_GET['msg'])) { 

echo "<div class=\"msg\"> $_GET[msg] </div>"; 

} ?>

Aguardo o retorno e agradeço desde já pela atençao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve está fazendo assim colocando o formulario e enviando os dados pra mesma pagina certo/?

se sim poste o codigo todo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola sempre coloque session_start(); e ob_start(); na primeira linha do codigo e antes do codigo do html

 

coloca assim antes de tudo na 1° linha ok copia e cola

 

<?php session_start(); session_cache_expire(1); ob_start();  ?>

dei uma modificada ve se funciona

<?php

include ("dbc.php");

$login = mysql_real_escape_string($_POST['login']);

if ($_POST['Submit']=='Entrar')
{
$md5pass = md5($_POST['pwd']);
$sql = "SELECT * FROM usuarios WHERE login = '$login' AND senha = '$md5pass' AND status='1' ";

$result = mysql_query($sql) or die (mysql_error());

$num = mysql_num_rows($result);
if (!$result){
//header("Location: index.php?msg=Erro: Login Inválido");
echo "<script>alert('Erro Login Inválido');</script>";
echo "<script>history.back();</script>";
echo "<script>exit();</script>";
exit();

}



if ( $num != 0 ) {

$dados = mysql_fetch_object($result);
// A matching row was found - the user is authenticated.


$_SESSION['usuario']= $dados->login;
$_SESSION['permissao'] = $dados->permissao;


if (isset($_GET['ret']) && !empty($_GET['ret']))
{
//header("Location: $_GET[ret]");
echo "<script>window.location.href='".$_GET['ret']."'</script>";

} else
{
if ($dados->permissao=='Administrador'){
//header("Location: myaccount.php");
echo "<script>window.location.href='myaccount.php'</script>";
exit;
}
}


}

//header("Location: index.php?msg=Erro: Login Inválido");
echo "<script>alert('Erro Login Inválido');</script>";
echo "<script>history.back();</script>";
echo "<script>exit();</script>";
exit();

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve está fazendo assim colocando o formulario e enviando os dados pra mesma pagina certo/?

se sim poste o codigo todo...

 

 

Sim, estou sim, segue o código...

 

<html>
<head>

<title>Login Cobra 12 Horas</title>
<script language="JavaScript" src="conf/jquery.js" type="text/javascript"></script>
<script language="JavaScript" src="conf/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready( function() {
$("#formularioContato").validate({
// Define as regras
rules:{
login:{
// campoNome será obrigatório (required) e terá tamanho mínimo (minLength)
required: true, minlength: 2
},
pwd:{
// campoEmail será obrigatório (required) e precisará ser um e-mail válido (email)
required: true,  minlength: 2
}
},
// Define as mensagens de erro para cada regra
messages:{
login:{
required: "Digite o seu login!",
minLength: "O seu nome deve conter, no mínimo, 2 caracteres"
},

pwd:{
required: "Digite a sua senha!",
minLength: "O seu nome deve conter, no mínimo, 2 caracteres"
},

}
});
});

</script>
</head>

<body>
<?php 
ob_start();
include ("dbc.php");

$login = mysql_real_escape_string($_POST['login']);

if ($_POST['Submit']=='Entrar')
{
$md5pass = md5($_POST['pwd']);
$sql = "SELECT * FROM usuarios WHERE login = '$login' AND senha = '$md5pass' AND status='1' "; 
			
$result = mysql_query($sql) or die (mysql_error()); 
$num = mysql_num_rows($result);
if (!$result){
header("Location: index.php?msg=Erro: Login Inválido");
//echo "Error:";
exit();		
	
}
		


    if ( $num != 0 ) { 
	
$dados = mysql_fetch_object($result);
        // A matching row was found - the user is authenticated. 
		session_cache_expire(1);
		session_start(); 
	    
	    $_SESSION['usuario']= $dados->login;
        $_SESSION['permissao'] = $dados->permissao;
		
		
	   if (isset($_GET['ret']) && !empty($_GET['ret']))
		{
		header("Location: $_GET[ret]");
		} else
		{			
			if ($dados->permissao=='Administrador'){
	    	header("Location: myaccount.php");		
        exit;
			}
		}
		//echo "Logged in...";
		
    } 

header("Location: index.php?msg=Erro: Login Inválido");
//echo "Error:";
exit();		
}
	   
	   
	   
	   
	   
	   
	   
	   
	   
	   
	   
	   
	   
	   
	   
	/*   list($user_id,$login,$permissao) = mysql_fetch_row($result);
		// this sets variables in the session 
		$_SESSION['usuario']= $login;  
	$_SESSION['permissao']=$permissao["permissao"];
		//for debug purposes only
echo 'DEBUG<hr>'; print_r($_SESSION); exit;
   
        $dados = mysql_fetch_object($result);
        // this sets variables in the session 
        $_SESSION['usuario']= $dados->login;
        $_SESSION['permissao'] = $dados->permissao;
		//for debug purposes only
//echo 'DEBUG<hr>'; print_r($_SESSION); exit;

		  if ($dados->permissao=='Administrador'){
	    	header("Location: myaccount.php");		
        exit;
		
		/*	
		if (isset($_GET['ret']) && !empty($_GET['ret']))
		{
		header("Location: $_GET[ret]");
		} else{
			if ($permissao["permissao"]=='Administrador'){
	    	header("Location: myaccount.php");	
        exit;
			}
			
			
		}
		//echo "Logged in...";
		
    } 
	}//else{*/
		
	


?>
<link href="styles.css" rel="stylesheet" type="text/css">

<?php if (($_GET['msg'])) { 

echo "<div class=\"msg\"> $_GET[msg] </div>"; 

} ?>















<br />
<table width="35%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr> 
    <td width="350" height="109" bgcolor="#d5e8f9"class="logo"> </td>
  </tr>
  <tr> 
    <td bgcolor="#e5ecf9" class="mnubody"><form id="formularioContato"  method="post" action="" >
        <p> </p>
        <p align="center" class="ls">Login 
<input name="login" type="text" id="login" size="20" >
          <br />
          <br />
          Senha
          <input name="pwd" type="password" id="pwd" size="20">
        </p>
        <p align="center"> 
          <input type="submit" name="Submit" value="Entrar" class="botao3d">
           <input type="reset" name="Submit" value="Limpar" class="botao3d">
           <br />
           <br />
        <a href="forgot.php">Esqueci minha senha?</a></p>
</form></td>
      
  </tr>
  <tr>
    <td bgcolor="#e5ecf9" class="logozs"> </td>
  </tr>
</table>
<p><br />
  <br />
</p>
<div class="des">
  <p>Desenvolvido por ZSBIT - Soluções em Tecnologia da Informação - - "Nosso empreendimento pelo seu empreendimento"! <br />
  <a href="http://www.zsbit.com.br/" class="zsbit"> www.zsbit.com.br</a>   </p>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tem saida html e você ta mandando o header de novo

 

 

<html>
<head>

<title>Login Cobra 12 Horas</title>

...

aqui:

 

if (!$result){
header("Location: index.php?msg=Erro: Login Inválido");
//echo "Error:";
exit();

você nao pode mandar o header php se ja tiver saida html

 

sei lá... tive um problema assim e era isso q estava acontecendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa que bom, obrigado...

 

Só me diz uma coisa, que eu tenho dúvida... Não entendo muito de js mas gostaria de saber se existe alguma forma de burlar o evento window.location href do javascript???

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara como teu codigo ai roda sobre o php ele é invisivel ate ser chamado e ele fica no servidor não no cliente assim para alguem burlar so se invadir teu servidor ok

mas voce pode trocar para

 

echo"<META http-equiv='refresh' content='0;URL=myaccount.php'>";

dai tu escolhe blza abraço veio.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

a tag <meta /> é HTML. E não Javascript.

 

Com javascript desativado, essa gambiarra ainda funcionará. Porém não é a melhor forma de fazer.

Veja o link que o hinom postou, em vez de ficar fazendo remendos, entenda o motivo do erro e conserte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.