Ir para conteúdo

POWERED BY:

Arquivado

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

xarlington

Sistema de Login dando erro

Recommended Posts

Salve galera, o negocio é o seguinte eu adquirir o curso de php da Becck, e estava indo muito bem no curso ate que cheguei na parte de verificacao de sistema de login, quando utilizo o

<?php include ("verifica.php");?>
nas paginas do adm, aparece o seguinte erro:

 

Imagem Postada

 

 

Codigo pagina verificação:

 

<?php
session_start();

include "config.php";

if(isset($_SESSION["login_usuario"]) AND isset($_SESSION['senha_usuario'])){

	$login_usuario = $_SESSION["login_usuario"];
	$senha_usuario = $_SESSION["senha_usuario"];
	
$sql = mysql_query("SELECT * FROM adm WHERE login = '$login_usuario'");
$cont = mysql_num_rows($sql);
while($linha = mysql_fetch_array($sql)){
	$senha_db = $linha['senha'];
}

if($cont == 0){

	unset($_SESSION["login_usuario"]);
	unset($_SESSION["senha_usuario"]);

	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
	<script type=\"text/javascript\">
	alert(\"O nome de usuario não corresponde.\");
	</script>";
	
}

if($senha_db != $senha_usuario){//confere senha
	
	unset($_SESSION["login_usuario"]);
	unset($_SESSION["senha_usuario"]);
	
	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
	<script type=\"text/javascript\">
	alert(\"A senha não corresponde.\");
	</script>";
	
}
	
}else{
	
	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
	<script type=\"text/javascript\">
	alert(\"O usuario e senha não correspondem.\");
	</script>";
	
}

?>

Código página logar:

 

<?php
$login = $_POST['login'];
$senha = $_POST['senha'];

include "config.php";

$sql = mysql_query("SELECT * FROM adm WHERE login = '$login'");
$cont = mysql_num_rows($sql);
while($linha = mysql_fetch_array($sql)){
	$senha_db = $linha['senha'];
}

if($cont == 0){

	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
	<script type=\"text/javascript\">
	alert(\"O nome de usuario não corresponde.\");
	</script>";
	
}else{

	if($senha_db != $senha){//confere senha
	
	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
	<script type=\"text/javascript\">
	alert(\"A senha não corresponde.\");
	</script>";
	
}else{
	session_start();
	$_SESSION['login_usuario'] = $login;
	$_SESSION['senha_usuario'] = $senha;
	
	header('Location: index.php');
	}
}
mysql_close($db);
?>
Já tentei de tudo aqui, mas o erro continua, teria como um filho de Deus me ajudar nessa, desde ja agradeço a atenção galera.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não pode ter nenhuma entrada para o browser antes de header('Location: index.php'); épor isso que está dando esse erro, espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, padronize o uso da função session_start(). É muito comum o pessoal iniciar a sessão em arquivos que são incluidos, e iniciar junto no arquivo em questão.

 

O que acontece é que tu chama a função session_start() várias vezes. Então padronize. Não inicie as sessões dentro de arquivos que são somente para serem incluidos, e sim nos que são executados pelo servidor.

 

Outra coisa. Armazene o buffer, e libere ao usuário somente no final da execução. Isso pode evitar esses erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq você nao usa o <meta http> aqui tbm ??

}else{
        session_start();
        $_SESSION['login_usuario'] = $login;
        $_SESSION['senha_usuario'] = $senha;
        
        echo "<meta http-equiv='refresh' content='3;url='pagina.php'>";
        }
}

e resolve seu problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, padronize o uso da função session_start(). É muito comum o pessoal iniciar a sessão em arquivos que são incluidos, e iniciar junto no arquivo em questão.

 

O que acontece é que tu chama a função session_start() várias vezes. Então padronize. Não inicie as sessões dentro de arquivos que são somente para serem incluidos, e sim nos que são executados pelo servidor.

 

Outra coisa. Armazene o buffer, e libere ao usuário somente no final da execução. Isso pode evitar esses erros.

 

 

Teria como explicar de forma mais simples é pq como eu disse, eu adquirir o curso da Becck e estou fazendo do jeito que mostra no curso, e apenas estou começando com a linguagem php. Se tiver como vc6 me passarem uma forma de acabar com esse erro, eu ficaria muito grato.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq você nao usa o <meta http> aqui tbm ??

}else{
        session_start();
        $_SESSION['login_usuario'] = $login;
        $_SESSION['senha_usuario'] = $senha;
        
        echo "<meta http-equiv='refresh' content='3;url='pagina.php'>";
        }
}

e resolve seu problema

 

Eu fiz do jeito que você indicou, porem o erro continua a aparecer. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

 

<?php
$login = $_POST['login'];
$senha = $_POST['senha'];

include "config.php";

$sql = mysql_query("SELECT * FROM adm WHERE login = '$login'");
$cont = mysql_num_rows($sql);
while($linha = mysql_fetch_array($sql)){
        $senha_db = $linha['senha'];
}

if($cont == 0){

        echo "
        <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
        <script type=\"text/javascript\">
        alert(\"O nome de usuario não corresponde.\");
        </script>";
        
}else{

        if($senha_db != $senha){//confere senha
        
        echo "
        <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
        <script type=\"text/javascript\">
        alert(\"A senha não corresponde.\");
        </script>";
        
}else{
        session_start();
        $_SESSION['login_usuario'] = $login;
        $_SESSION['senha_usuario'] = $senha;
        
       echo "<meta http-equiv='refresh' content='3;url='pagina.php'>";
        }
}
mysql_close($db);
?>

Alguma outra alternativa??

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas que erro ?? Eu nao vi a imagem, aqui nao apareceu.

tem como você postar aki o erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você iniciou uma sessão no config.php e outra no logar.php, dae quando você chama o config no logar, ele abre duas sessão. deixa soh a do config.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

você iniciou uma sessão no config.php e outra no logar.php, dae quando você chama o config no logar, ele abre duas sessão. deixa soh a do config.php

 

hehehe, mas o meu codigo config.php não contem nenhuma sessao nao amigo, a unica coisa que ele contem e so a conexao com o banco de dados,

 

Config.php:

<?php 

$db = mysql_connect("localhost", "root", "");
$dados = mysql_select_db("projeto_final", $db);
?>

os unicos que contem a sessao e o logar e a verificacao:

Logar.php:

 

<?php 
$login = $_POST['login'];
$senha = $_POST['senha'];

include "config.php";

$sql = mysql_query("SELECT * FROM adm WHERE login = '$login'");
$cont = mysql_num_rows($sql);

while($linha = mysql_fetch_array($sql)){
	
	$senha_db = $linha ['senha'];
}

if($cont == 0){
	
	echo "
		<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'
		<script type=\"text/javascript\">
		alert(\"O nome de usuario não corresponde\");
		</script>
	";
}
else{
	if($senha_db != $senha){
		
		echo "
		<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'
		<script type=\"text/javascript\">
		alert(\"A senha não corresponde.\");
		</script>
	";
	}
else{
	session_start();
	$_SESSION['login_usuario'] = $login;
	$_SESSION['senha_usuario'] = $senha;
	
		header ('Location: index.php');	
}
}
mysql_close($db);
?>

Verifica.php:

 

<?php 
session_start();

include "config.php";

if(isset($_SESSION["login_usuario"]) AND isset($_SESSION['senha_usuario'])){

	$login_usuario = $_SESSION["login_usuario"];
	$senha_usuario = $_SESSION["senha_usuario"];
	
	$sql = mysql_query("SELECT * FROM adm WHERE login = '$login_usuario'");
$cont = mysql_num_rows($sql);

while($linha = mysql_fetch_array($sql)){
	
	$senha_db = $linha ['senha'];
}

if($cont == 0){
	
	unset ($_SESSION["login_usuario"]);
	unset ($_SESSION["senha_usuario"]);
	
	echo "
		<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'
		<script type=\"text/javascript\">
		alert(\"O nome de usuario não corresponde\");
		</script>
	";
}
if($senha_db != $senha_usuario){
		
		unset ($_SESSION["login_usuario"]);
		unset ($_SESSION["senha_usuario"]);
	
		echo "
		<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'
		<script type=\"text/javascript\">
		alert(\"A senha não corresponde.\");
		</script>
	";
	}
}else{

	echo "
		<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'
		<script type=\"text/javascript\">
		alert(\"O usuario e senha não correspondem.\");
		</script>
	";
}
?>

Obs: se eu tirar o session_start do verifica, o erro para, porem eu nao consig entrar na area administrativa, aparece uma mensagem, o usuario e senha nao correspondem. ;)

 

Mas que erro ?? Eu nao vi a imagem, aqui nao apareceu.

tem como você postar aki o erro ?

 

 

A imagem com erro estao logo no inicio do post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas pq essas paginas ???

Só uma ja basta.

Só a do Logar.php está ótimo. A do logar você verifica se existe. Se existe você poe em sessão, redireciona pra página e pronto.

 

Mas explica pq você quer usar as duas ?? Nao entendi.

 

Ps: E eu disse que aqui nao apareceu a imagem, a net onde trabalho é bloqueada. tenho acesso restrito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas pq essas paginas ???

Só uma ja basta.

Só a do Logar.php está ótimo. A do logar você verifica se existe. Se existe você poe em sessão, redireciona pra página e pronto.

 

Mas explica pq você quer usar as duas ?? Nao entendi.

 

Ps: E eu disse que aqui nao apareceu a imagem, a net onde trabalho é bloqueada. tenho acesso restrito

 

Entaum é o seguinte, como ja havia dito, estou fazendo do jeito do curso de php que adquirir que e o do Becck, e nessa parte de sistema de login, no curso ensina a criar essas outras paginas como logar e verifica, para que o usuario nao tenha acesso as outras paginas do adm digitando a url no browser tipo index.php?pg=home, tipo so pode ter acesso so atraves do campo login e senha, porem quando adiciono o

<?php include ("verifica.php");?>
nas outras paginas do adm para evitar que acessa diretamente, da esse erro...

 

Entendeu.. ;) :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. você quer um tipo de valida sessão;

 

No seu verifica.php, você ta usando la em cima o AND. Ja experimentou usar o && ? Talvez seja isso.

 

Eu tenho uma coisa igual a sua veja:

Um logar.php

<?
include 'conecta_banco.php';
session_start();
if (isset($_COOKIE["apelido"]) && isset($_COOKIE["funcionario_codigo"]))
{
  $_SESSION['apelido'] = $_COOKIE['apelido'];
  $_SESSION['funcionario_codigo'] = $_COOKIE['funcionario_codigo'];
  echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=frame.php'>";
}
$login = $_POST['login'];
$senha = $_POST['senha'];	
$login = strtolower($login);
$login = trim($login);
$login = ucwords($login);

if(isset($login) && isset($senha))
{
$sql_login = "select apelido,funcionario_codigo from funcionarios where apelido = '$login'";
$exe_login = mssql_query($sql_login);
$lin_login = mssql_fetch_array($exe_login);
$rs_login  = mssql_num_rows($exe_login);

if($login == $lin_login['apelido'])
{
	if($senha == $lin_login['funcionario_codigo'])
	{
		setcookie ("apelido", $login, time()+48*3600);
		setcookie ("funcionario_codigo", $senha, time()+48*3600);
		session_start();
		$_SESSION['apelido'] = $login;
		$_SESSION['funcionario_codigo'] = $senha;
		echo "<meta http-equiv='refresh' content='0;URL=frame.php'>";
	}
	else
	{
		$erro = "Senha Inválida";
	}
}
elseif($login != $lin_login['apelido'])
{
	$erro = "Usuário Inválido";
}
else
{
	echo "";
}
}
?>

 

 

e um valida_sessao.php que no seu caso seria verifica.php

<?php
session_start();
if (isset($_SESSION["apelido"]) && isset($_SESSION["funcionario_codigo"]))
{
   $login_usuario = $_SESSION["apelido"];
   $senha_usuario = $_SESSION["funcionario_codigo"];
}
else
{
   if(!(empty($login_usuario) || !(empty($senha_usuario))))
   {
      	include 'conecta_banco.php';
   $resultado = mysql_query("select apelido,funcionario_codigo from funcionarios where apelido = '$login_usuario'");
   	if (mysql_num_rows($resultado) == 1)
   	{
   		if ($senha_usuario != mysql_result($resultado,0,'funcionario_codigo'))
      		{
          		unset($_SESSION["apelido"]);
          		unset($_SESSION["funcionario_codigo"]);

          		session_destroy();
   			echo "	<center>
   		<font face='verdana' size=2><br><br><br>ERRO - Acesso Negado<br>Você não efetuou login no sistema<br><br>
   					<a href='index.php' target='_top'>Voltar para a tela de login</a>";
            die();
      		}
   	}
    }
    else
    {
   	unset($_SESSION["apelido"]);
       unset($_SESSION["funcionario_codigo"]);
      	session_destroy();
   	echo "	<center>
   	  	<font face='verdana' size=2><br><br><br>ERRO - Acesso Negado<br>Você não efetuou login no sistema<br><br>
   			<a href='index.php' target='_top'>Voltar para a tela de login</a>";
   			die();
    }
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei desse jeito com &&, mas infelizmente o erro continua... hehehe, to rindo para não chorar, kra, ja nao sei mais o que fazer, se alguem souber alguma solução para esse meu problema, porfavor post ai o que deveria ser mudado no codigo para solucionar o problema.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara.. Me fala o erro. Nao da pra abrir a imagem aki onde eu trabalho.

Me fala o erro q dá. Copia e cola aki.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arrumei algumas coisas no logar e no verifica

veja se dá certo.

logar.php

<?php

include "config.php";

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

$sql = "SELECT * FROM adm WHERE login = '$login'";
$exe_sql = mysql_query($sql);
$cont = mysql_num_rows($exe_sql);
$senha_db = mysql_result($exe_sql,0,'login');

if($cont == 0){

       echo "
       <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
       <script type=\"text/javascript\">
       alert(\"O nome de usuario não corresponde.\");
       </script>";

}
if($senha_db != $senha){//confere senha

       echo "
       <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
       <script type=\"text/javascript\">
       alert(\"A senha não corresponde.\");
       </script>";

}else{
       session_start();
       $_SESSION['login_usuario'] = $login;
       $_SESSION['senha_usuario'] = $senha;

       echo "<meta http-equiv='refresh' content='2;url=index.php'>";
       }
}
mysql_close($db);
?>

 

 

verifica.php

<?php
session_start();

include "config.php";

if(isset($_SESSION["login_usuario"]) && isset($_SESSION['senha_usuario']))
{

       $login_usuario = $_SESSION["login_usuario"];
       $senha_usuario = $_SESSION["senha_usuario"];

$sql = "SELECT * FROM adm WHERE login = '$login_usuario'";
$exe_sql = mysql_query($sql);
$cont = mysql_num_rows($exe_sql);
$senha_db = mysql_result($exe_sql,0,'login');

if($cont == 0){

       unset($_SESSION["login_usuario"]);
       unset($_SESSION["senha_usuario"]);

       echo "
       <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
       <script type=\"text/javascript\">
       alert(\"O nome de usuario não corresponde.\");
       </script>";

}

if($senha_db != $senha_usuario){//confere senha

       unset($_SESSION["login_usuario"]);
       unset($_SESSION["senha_usuario"]);

       echo "
       <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
       <script type=\"text/javascript\">
       alert(\"A senha não corresponde.\");
       </script>";

}

}else{

       echo "
       <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
       <script type=\"text/javascript\">
       alert(\"O usuario e senha não correspondem.\");
       </script>";

}
}
else
{
echo "
       <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
       <script type=\"text/javascript\">
       alert(\"Usuário não logado.\");
       </script>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O codigo que você passou, ta dando o seguinte erro "Parse error: parse error in C:\xampp\htdocs\Curso de PHP\adm\verifica.php on line 51"

 

 

Já com o meu codigo aparece esse "Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\Curso de PHP\adm\topo.php:14) in C:\xampp\htdocs\Curso de PHP\adm\verifica.php on line 2"

 

;)

 

Vamos la galera vamos ajudar ai, a coisa ta preta aqui.. hehehehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arrumei

 

<?php
session_start();

include "config.php";

if(isset($_SESSION["login_usuario"]) && isset($_SESSION['senha_usuario']))
{

        $login_usuario = $_SESSION["login_usuario"];
        $senha_usuario = $_SESSION["senha_usuario"];
        
$sql = "SELECT * FROM adm WHERE login = '$login_usuario'";
$exe_sql = mysql_query($sql);
$cont = mysql_num_rows($exe_sql);
$senha_db = mysql_result($exe_sql,0,'login');

if($cont == 0){

        unset($_SESSION["login_usuario"]);
        unset($_SESSION["senha_usuario"]);

        echo "
        <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
        <script type=\"text/javascript\">
        alert(\"O nome de usuario não corresponde.\");
        </script>";
        
}

if($senha_db != $senha_usuario){//confere senha
        
        unset($_SESSION["login_usuario"]);
        unset($_SESSION["senha_usuario"]);
        
        echo "
        <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
        <script type=\"text/javascript\">
        alert(\"A senha não corresponde.\");
        </script>";
        
}
        
}else{
        
        echo "
        <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
        <script type=\"text/javascript\">
        alert(\"O usuario e senha não correspondem.\");
        </script>";
        
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aonde está a mensagem de 'login e senha estão incorretos'? Não achei no seu código esta mensagem.

 

Como já passaram vários post, é bom que você explique qual erro está dando agora, ou o que acontece e o que deveria acontecer.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala aew brother... sou novato em programação, mas pelo que vi na imagem do erro que você postou existe uma referência a página topo.php, o que tem nela?

 

Tente colocar também antes do session_start(); um @.

 

Grande abraço, até...

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.