Jump to content

Archived

This topic is now archived and is closed to further replies.

Fabyo

Sistema de Login

Recommended Posts

E tem como eu colocar um link de logoff após a pessoa entrar no sistema?

O script para fazer logout eh simples. Vou posta-lo abaixo.

Vou postar um sistema que eu desenvolvi. Esta funcionando perfeito. Um pouco diferente do sistema do Fabyo, mas com a mesma finalidade.

 

conection.php (dados para conectar ao banco de dados)

----------------

<?php

 

$host = "localhost"; // IP do banco de dados

$usr = "root"; // Login do bd

$pwd = ""; // Senha do bd

$db = "accounts"; // Nome da base de dados

 

?>

conecta.php (funcoes de conexao com banco de dados)

--------------

<?php

include("conection.php");

 

$conexao = mysql_connect("$host","$usr","$pwd");

$selectdb = mysql_select_db("$db",$conexao);

 

function conectabd()

{

global $conexao, $selectdb;

if(!$conexao)

{

die('O sistema está com problemas. Tente mais tarde. ' . mysql_error());

return false;

}

else

{

if(!$selectdb)

{

die('Ocorreu um erro com o banco de dados. Por favor informe ao administrador. ' . mysql_error());

return false;

}

else

{

return true;

}

}

}

 

function fecha_conexaobd()

{

global $conexao;

mysql_close($conexao);

}

 

function checa_senha($nome,$pass)

{

global $conexao;

if (conectabd())

{

$resultado = mysql_query("SELECT login, senha FROM contas WHERE login = '$nome'", $conexao);

 

if (!$resultado)

{

die('Erro no banco de dados. Reporte ao administrador. ' . mysql_error());

}

else

{

$linha = mysql_fetch_array($resultado);

if (($linha['login'] == $nome) && ($linha['senha'] == $pass))

{

return true;

}

else

{

return false;

}

}

fecha_conexao_bd();

}

else

{

return false;

}

}

 

?>

verifica.php (garante que o usuario esta logado. Toda pagina q incluir o verifica.php sera restrita a usuarios logados no sistema)

-------------

<?php

// Inicia sessoes

session_start();

// verifica se existe sessao.

if(!isset($_SESSION["usuario"]))

{

// redireciona para pag. de login

header("Location: login.php");

exit; //garante q nao sera executado nenhum codigo dessa pagina apos o login.

}

 

?>

index.php (pagina principal)

-----------

<?php

session_start();

include("verifica.php"); //verifica se esta logado ou nao. caso nao esteja vai pra pag. de login.

?>

<html><head>

<title> Sistema de Login </title></head><body>

<div align="left"><center>

Bem Vindo <b>

<?php echo "<font color=green>".$_SESSION['usuario']."</font>"; ?></b>

<a href="sair.php">(Sair)</a></center>

</body></html>

login.php (pagina de login)

----------

<?php

 

if ($submit)

{

if ($_POST['user'] && $_POST['senha'])

{

session_start(); //carrega sessoes e destroi

session_destroy(); // para garantir que nao fique resto de outras sessoes.

session_start(); //carrega sessoes limpas.

 

include('conecta.php');

 

$login = $_POST['user'];

$senha = $_POST['senha'];

 

if (checa_senha($login,$senha))

{

$_SESSION['usuario'] = $login;

header("Location: index.php");

}

else

{

$saida = "<tr><td><div align=center><font color=red>

Senha ou Login inválidos!

</font></div></td></tr>

";

}

}

else

{

$saida = "<tr><td><div align=center><font color=red>

Preencha todos os dados.

</font></div></td></tr>

";

}

}

?>

<html><head> <title> Sistema de Login </title></head><body>

<div align="left">

<form method="post" action="<?php echo $PHP_SELF ?>">

<table width="220"><tr><td>

<div align="center">

<font color="#000000">

<p align=left>Login:

<input name="user" value="<?php echo $_POST['user'];?>" type="text" size="10"><br>

Senha:

<input name="senha" type="password" size="10">

<input type="submit" name="submit" value="Enviar"></p>

</div></form></font></td></tr>

<?php echo $saida; ?>

</body></html>

sair.php (script para deslogar)

---------

<?php

 

// Inicia sessões, para assim poder destruí-las

 

session_start();

 

session_destroy();

 

header("Location: login.php");

 

?>

Ja no sistema do Fabyo, eh simples resolver esses erros.

O erro de nao passar para a "pagina2.php":

//verifico se existe a sessao e ja pego os dados que nela contem

if(isset($_SESSION["dados"]))

{

$dados = unserialize($_SESSION["dados"]);

$nome = $dados["nome"];

$senha = $dados["senha"];

verifica_usuario($nome, $senha); // basta retirar essa linha para funcionar. Se ja existe sessao, o usuario ja esta logado, nao precisa verificar de novo.

}

Ja o problema de nao logar mais de uma vez, basta usar o script de logout que postei ai em cima. Ele nao loga mais de uma vez pq ja tem uma sessao q nao foi destruida.

 

Ai galera, espero ter ajudado.

Ate +!

Share this post


Link to post
Share on other sites

Como faria para acrescentar um popup dizendo que o login esta errado?

Se você quer somente avisar que o login esta errado em um pop-up, eh simples.

você tem q usar javascript, pois o php nao faz isso.

 

você pode tentar assim (vou usar o sistema que postei como exemplo):

 

if (checa_senha($login,$senha))

{

$_SESSION['usuario'] = $login;

header("Location: index.php");

}

else

{

echo "<script language=javascript>

window.open('login_error.html','login_error','resizable=0,width=300,height=300,left = 362,top = 234');

</script>";

}

login_error.html

-------------------

<html><body><font color=red size=+3> LOGIN ERRADO </font></body></html>

Espero ter ajudado.

Ate+!

Share this post


Link to post
Share on other sites

Eu estou conseguindo acesso com qqer user e ou senha digitados.

A consistência não está sendo realizada.

Alguém testou usar uma senha errada pra ver no que dá?

Simples resolucao:

 

no arquivo protecao.php

----------------------------

function verifica_usuario($nome, $senha)

{

//conecto ao servidor de banco de dados passo o nome do servidor usuario e senha

mysql_connect("localhost", "root", "");

// seleciono o banco de dados

mysql_select_db("login");

 

$re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = '".md5($senha)."'");

 

$total = mysql_res

A linha

 

$re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = '".md5($senha)."'");

 

antes era

 

$re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha =md5('$senha')");

 

A funcao md5 eh do PHP e nao do MySQL, portanto, tem q fechar as aspas duplas (que vem logo antes do select), concatenar o resultado da funcao md5() do PHP e abrir as aspas duplas novamente para finalizar a query.

 

Espero ter ajudado.

Ate+.

Share this post


Link to post
Share on other sites

MorFer voce esta enganado o mysql tbm tem a função md5

e ta certo sim daquele jeito

Share this post


Link to post
Share on other sites

MorFer voce esta enganado o mysql tbm tem a função md5e ta certo sim daquele jeito

Bom, comigo nao funcionou daquele jeito, entao optei por deixar o md5 pro php. Ai passou a funcionar. ^^

Share this post


Link to post
Share on other sites

coloque no meu aki, e deu o seguinte erro:Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\pos\protecao.php on line 29Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\pos\indexadm.php:6) in c:\apache\htdocs\pos\protecao.php on line 36Agradeço pela ajuda!

Share this post


Link to post
Share on other sites

Ygornet o sistema ta bom, é o pessoal que nao sabe implementar, pois precisa saber um pouco de php, nao é só copiar e colar.

 

mas em todo caso eu fiz outro sistema de login, com session, tableless, javascript nao obstrusivo com mensagens amigaveis em css no lugar de alert()

 

to anexando o sistema junto com o banco.sql de exemplo

 

e nele tem nivel de acesso, por exemplo se o usuario tem nivel = 0 nao pode logar, se tem 1 é um usuario comun e 2 admin

 

e criei uma chave para ajudar na segurança, quando voce cadastrar um usuario novo na chave voce faz assim:

 

$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) );

 

e salve no banco de dados:

 

INSERT INTO usuarios ( id_usuario , nome , senha , email , nivel_acesso , chave ) 
VALUES (
NULL , '$nome', '$senha', '$email', '$nivel', '$chave' );

 

qualquer outra duvida só perguntar

 

login.zip

Share this post


Link to post
Share on other sites

MUITO OBRIGADO primeiramento ao Fábyo.Gostei muito deste sistema que você postou por último, deixei ele de acordo com minha necessidade e ele já está rodando OK. No estando tenho uma dúvida em como "administrar" as página de acordo com "nivel_acesso", por exemplo deixar um página restrita ao nivel_acesso 2 (admin).

Share this post


Link to post
Share on other sites

Ygornet o sistema ta bom, é o pessoal que nao sabe implementar, pois precisa saber um pouco de php, nao é só copiar e colar.

 

mas em todo caso eu fiz outro sistema de login, com session, tableless, javascript nao obstrusivo com mensagens amigaveis em css no lugar de alert()

 

to anexando o sistema junto com o banco.sql de exemplo

 

e nele tem nivel de acesso, por exemplo se o usuario tem nivel = 0 nao pode logar, se tem 1 é um usuario comun e 2 admin

 

e criei uma chave para ajudar na segurança, quando voce cadastrar um usuario novo na chave voce faz assim:

 

$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) );

 

e salve no banco de dados:

 

INSERT INTO usuarios ( id_usuario , nome , senha , email , nivel_acesso , chave ) VALUES (NULL , '$nome', '$senha', '$email', '$nivel', '$chave' );
qualquer outra duvida só perguntar

 

login.zip

Muito bom, porém não estou conseguindo criar um usuário e senha...tipo...criar eu até crio (não sei se corretamente) porém sempre dá como senha ou usuário invalido.

O que poderia ser?

 

Grato.

Share this post


Link to post
Share on other sites

Geison GM voce esta salvando a senha junto com a chave no padrao que eu mostrei acima?

 

$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) );

 

se nao salvar com a chave corretamente o login nunca ira funcionar mesmo

Share this post


Link to post
Share on other sites

Geison GM voce esta salvando a senha junto com a chave no padrao que eu mostrei acima?$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) ); se nao salvar com a chave corretamente o login nunca ira funcionar mesmo

Desculpa minha ignorancia Fabyo, mas como faz isso que você disse de salvar a senha junto com a chave????Por exemplo, faço um sistema de cadastro de usuarios, mas como fazer isso de salvar senha e chave? Como funciona essa chave???Obs.: deu para notar que não sei mto de php num eh mesmo?! mas só agora me deparei com a necessidade de criar login e senha, ainda mais só agora reconheci a necessidade de tomar cuidado com a segurança do mesmo.Obs 2.: Otimos tutoriais o seu!Espero ajuda véio.Abraço.

Share this post


Link to post
Share on other sites

Everton o modo de gravar o usuario corretamente eu postei no topico acimahttp://forum.imasters.com.br/index.php?s=&...st&p=677152

Não deu tempo hehehe, você postou antes.Eu sai do trampo ontem e depois q esfriei a cabeça vi a besteira q eu disse no post, eu nem precisava t perguntar tal coisa http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Pensando um pouco mais eu vi a lógica do md5 e como implementar.Mesmo assim obrigado por reforçar oq você disse no post.

Share this post


Link to post
Share on other sites

Olá Fabyo!!!

 

Bom cara, não tem jeito, tentei de tdo e não está dando certo.

Crie um form para criar mais usuários, até ai tdo bem, o problema é que nao está logando, ou seja, digito o login e a senha e volta novamente para a página do login.

 

Já alterei o php.ini, colocando o path mas nda, sempre a mesma coisa. Não aparece mensagem de erro nenhum tbm.

 

Oque pode estar acontecendo cara?????

Preciso de um help!!!!!!!

Pior que enquanto eu não conseguir não vou sucegar. Gostei desse sistema e não vou desistir dele rsss

 

Abraço cara e espero ajuda!

 

...............................................Edit

Achei melhor colocar os codigos q estou usando para incluir usuarios:

 

cad_login2.php:

<form id="formulario" name="formulario" action="inclui_usuario.php" method="post" >			<table width="228" border="0" align="center">			  <tr>				<td width="68">Nome</td>				<td width="244"><input type="text" id="nome" name="nome" /></td>			  </tr>			  <tr>				<td>Senha</td>				<td><input type="password" id="senha" name="senha" /></td>			  </tr>			  <tr>				<td>E mail </td>				<td><input type="text" id="email" name="email" /></td>			  </tr>			  <tr>				<td>Nivel</td>				<td><input type="text" id="nivel" name="nivel" /></td>			  </tr>			  <tr>				<td colspan="2"><div align="center">				  <input name="submit" type="submit" value="Cadastrar" />				</div></td>			  </tr>			</table></form></body></html>
inclui_usuario.php:

<body><p align="center">  <?	mysql_connect("localhost", "root", "");	mysql_select_db("carrinho");		$nome  = mysql_escape_string($nome);	$senha = mysql_escape_string($senha);			$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) );		$senha = md5($senha);$sql = "INSERT INTO usuarios ( id_usuario , nome , senha , email , nivel_acesso , chave ) VALUES ( NULL , '$nome', '$senha', '$email', '$nivel', '$chave' )";//echo $sql;//$rs = mysqlexecuta($sql);$re = mysql_query(sprintf($sql));?></p><div align="center">Cadastro efetuado com sucesso!!! </div><p align="center"></p><meta HTTP-EQUIV="REFRESH" CONTENT="3; URL=cad_login2.php"></body></html>
Abs

Share this post


Link to post
Share on other sites

Boa tarde Fabyoserá que você pode explicar essa parte do script

if ( get_magic_quotes_gpc() ) {		$nome  = stripslashes($_POST["Nome"]);		$senha = stripslashes($_POST["Senha"]);	}	$nome  = mysql_escape_string($nome);	$senha = mysql_escape_string($senha);

por quê usar stripslashes sendo antes não foi usado nenhuma função como de escape. Agradeço desde já.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.