LOGIN em php utilisando session e mysql!

Publicado por Rhuan Lima 25/09/2008

[ Hits: 30.446 ]

Homepage: rhuanlima.com.br

Download login em php




Desenvolvi para minha empresa um sistema de login para meu sistema. Bati bastante para conseguir fazer e aqui está o resultado. Espero que gostem e comentem!!!


Desculpem se ele está um pouco longo!!!

  



Esconder código-fonte

*/Index.php para login/*
<html>
<head>
<title>LOGIN</title>
</head>

<body>
<h2>::LOGIN::</h2>
<p>
   <form action="vlog.php" method="post" name="formulario" id="formulario">
      <p>login:<input type="text" name="login" id="login"> <br> </p>
      <p>senha:<input type="password" name="senha" id="senha"> <br> </p>
      <p><input type="submit" name="botao" id="botao" value="logar"> </p>
   </form> 
</p>
  
</body>
</html>





*/vlpog.php verificador de usuario e senha!/*

<?php
$usuario = $_POST["login"];
$senha = $_POST["senha"];

*/Abre a conexão com o mysql/*
$con = mysql_connect("SEU_SERVIDOR","SEU_USUARIO","SUA_SENHA");
mysql_select_db("SEU_BANCO_DE_DADOS");

 */Aqui veificamos se o usuario e senha digitados no formulário existem e estão corretos/*
$sql = mysql_query("SELECT * FROM SUA_TABELA_DE_DADOS WHERE log_nome='$usuario' and senha='$senha'");
$qregistro = mysql_num_rows($sql);

if($qregistro<1){
   echo "Login ou senha errado(s)!!";
} 
else 
{
   */Apos verificado ele grava o usuario e senha no vetor $_session[]/*   
   session_start();
   $_SESSION['nome_usuario']=$usuario;
   $_SESSION['senha_usuario']=$senha;
   header("Location: home.php");
}

mysql_close($con)

?>






*/home.php - essa é a janela principal do "site" nela e em todas as outrazs que vocês queria bloquear vocês devem colocar a include a seguir!/*

<?php
include "valida_USUARIO.ink";
?>


<html>
<head>
   <title>:LOGADO!!!:</title>
</head>

<body>
   PARABÉNS!!!! VOCÊ ESTA LOGADO!!!
</body>
</html>








*/verifica_usuario.ink essa include ela verifica se o ususario esta logado o sistema verificando a session existente!/*

<?php

*/Esse sesion_start() inicia a sessão dando acesso ao vetor $_session[]/*
session_start();

*/coletamos os dados existentes no vetor.../*
if(IsSet($_SESSION['nome_usuario']))
   $nome_usuario=$_SESSION['nome_usuario'];
if(IsSet($_SESSION['senha_usuario']))
   $senha_usuario=$_SESSION['senha_usuario'];

   */aqui vamos verificar se temos algo registrado/*
   if(!(empty($nome_usuario) OR empty($senha_usuario)))
   {
      
      */Abre a conexão com o mysql e seleaciona o banco/*
      $con = mysql_connect("SEU_SERVIDOR","SEU_USUARIO","SUA_SENHA");
      mysql_select_db("SEU_BANCO_DE_DADOS");

      $sql=mysql_query("SELECT * FROM usuarios WHERE log_nome='$nome_usuario'");
      $conta=mysql_num_rows($sql);
      
      if($conta>=1)
      {
         if($senha_usuario != mysql_result($sql,0,"senha"))
         {
            unset($_SESSION['nome_usuario']);
            unset($_SESSION['senha_usuario']);
            echo "você não efetuou o login!";
            exit;
         }
      }
      else
      {
            unset($_SESSION['nome_usuario']);
            unset($_SESSION['senha_usuario']);
            echo "você não efetuou o login!";
            exit;
      }
   }
   else
   {
   echo "você não efetuou o Login!";
   exit;
   }

mysql_close($con);
   
?>


Scripts recomendados

Protegendo páginas

Protegendo suas paginas

Perfect Crypt Class

Login em PHP 2

Script para gerar senhas aleatórias


  

Comentários
[1] Comentário enviado por hugoeustaquio em 25/09/2008 - 13:46h

Por favor substitua a linha
$sql = mysql_query("SELECT * FROM SUA_TABELA_DE_DADOS WHERE log_nome='$usuario' and senha='$senha'");

pela seguinte:

$sql = mysql_query("SELECT * FROM SUA_TABELA_DE_DADOS WHERE log_nome='" . mysql_escape($usuario) . "' and senha='" . mysql_escape($senha) . "'");

Para evitar ataques sql injection.

[2] Comentário enviado por uberalles em 25/09/2008 - 14:27h

boa sacada, Hugo!!
Mas não seria mysql_escape_string() ou mysql_real_escape_string()?

E bem siimples e prático Rhuan!

[3] Comentário enviado por hugoeustaquio em 25/09/2008 - 14:38h

Sim, o nome da função é esse mesmo. Desculpe, mas é que eu escrevi o código direto na caixinha de texto aqui do vol e confundi o nome da função.
Desculpem-me.

A propósito, vocês tem que utilizar essa função sempre que forem concatenar algum dado enviado pelo usuário em uma query. Isso é imprecindível, caso contrário o usuário coloca no campo nome algo tipo "admin' #". Com isso a query fica da seguinte forma:

select * from tabela where log_nome = 'admin' #' and senha = '****'
E a tralha pode (dependendo da configuração do mysql) significar comentário. Então o banco somente executa o comando "select * from tabela where log_nome = 'admin'". Outra coisa que também é interessante é nunca usar "select * ". Nem que você precise digitar o nome de todos os campos da tabela (não tenha preguiça, certamente encontrará um lugar pra dar ctrl+c e ctrl+v), pois conforme a aplicação for crescendo e as tabelas do banco de dados forem ganhando novos campos, cada query da sua aplicação se tornará mais lenta, sem necessidade. Então selecione somente os campos que você vai usar, héim!

[4] Comentário enviado por form1ga em 25/09/2008 - 17:41h

Opa, geralmente mando correção com algo a dizer, mas como não tenho nada agora.. só trocar S por Z em utiliZando, no título do artigo.
No mais, parabéns,
Valeu, Julio.

[5] Comentário enviado por RhuanLima em 25/09/2008 - 23:42h

Obrigado pelos comentários, e desculpem os erros! prometo melhorar no próximo

[6] Comentário enviado por fredwind em 27/09/2008 - 20:48h

Muito da hora Rhuan. Ficou interessante seu script, mas acho que as duas primeiras linhas ficariam melhores assim:

$login = (!empty(trim($_POST['login']))) ? trim($_POST['login']) : '';
$senha = (!empty($_POST['senha'])) ? $_POST['senha'] : '';

E não esqueça, é sempre bom criptografar as senhas.
Obrigado pela sua contribuição, vamos juntos contribuir para o crescimento da nossa comunidade!!

[7] Comentário enviado por murilosantos em 31/03/2015 - 23:53h


Galera seguinte, não sei como desviar esse código sem "esbarrar" no PDO, gostei da preocupação com a segurança de vocês, e queria usar algumas linhas, mas como fazer isso com PDO???
Desde já agradeço, Murilo.

[8] Comentário enviado por hugoeustaquio em 01/04/2015 - 00:06h

Murilo, não sei se vou poder ajudar muito porque já não trabalho com php faz muitos anos. Mas esse script não foi escrito usando PDO, e para aproveitá-lo você vai ter de substituir todas as funções "mysql_***" pela equivalente em PDO.

Creio que vai ser fácil seguir o seguinte exemplo:
http://www.devmedia.com.br/introducao-ao-php-pdo/24973

Usando a função "bindParam" para passar os parâmetros nas queries conforme foi mostrado nesse link, você não terá problemas de SQLInject. Talvez o autor do script ainda o esteja usando e possa te ajudar mais. Esse post é de quase sete anos atrás, rs.

Abraço

[9] Comentário enviado por blx32 em 19/09/2015 - 13:55h

Esta apresentando isso.

Unknown column 'log_nome' in 'where clause'


Fiz assim:

/*==> index.php <== */
<html>
<head>
<title>LOGIN</title>
</head>

<body>
<h2>::LOGIN::</h2>
<p>
<form action="vlpog.php" method="post" name="formulario" id="formulario">
<p>login:<input type="text" name="login" id="login"> <br> </p>
<p>senha:<input type="password" name="senha" id="senha"> <br> </p>
<p><input type="submit" name="botao" id="botao" value="logar"> </p>
</form>
</p>

</body>
</html>
/*==> vlog.php <== */

<?php
/*$usuario = $_POST["login"];
$senha = $_POST["senha"];*/


$usuario = (!empty(trim($_POST['login']))) ? trim($_POST['login']) : '';
$senha = (!empty($_POST['senha'])) ? $_POST['senha'] : '';


//Abre a conexão com o mysql
$con = mysql_connect("127.0.0.1","root","teste");
mysql_select_db("dashboard");

//Aqui veificamos se o usuario e senha digitados no formulário existem e estão corretos
//$sql = mysql_query("SELECT * FROM acesso WHERE log_nome='$usuario' and senha='$senha'");
$sql = "SELECT * FROM acesso WHERE log_nome='$usuario' and senha='$senha'"; // Consulta ao banco de dados
$query = mysql_query($sql) or die (mysql_error());
$qregistro = mysql_num_rows($sql);



if($qregistro <1){
echo "Login ou senha errado(s)!!";
}
else
{
//Apos verificado ele grava o usuario e senha no vetor $_session[]
session_start();
$_SESSION['nome_usuario']=$usuario;
$_SESSION['senha_usuario']=$senha;
header("Location: home.php");
}

mysql_close($con)

?>


/*==> verifica_usuario.ink <== */

<?php

//Esse sesion_start() inicia a sessão dando acesso aou vetor $_session[]
session_start();

//coletamos os dados existentes no vetor...
if(IsSet($_SESSION['nome_usuario']))
$nome_usuario=$_SESSION['nome_usuario'];
if(IsSet($_SESSION['senha_usuario']))
$senha_usuario=$_SESSION['senha_usuario'];

//aqui vamos verificar se temos algo registrado
if(!(empty($nome_usuario) OR empty($senha_usuario)))
{

//Abre a conexão com o mysql e seleaciona o banco
$con = mysql_connect("127.0.0.1","root","teste");
mysql_select_db("dasboard");

//$sql=mysql_query("SELECT * FROM acesso WHERE log_nome='$nome_usuario'");
$sql = "SELECT * FROM acesso WHERE log_nome='$usuario' and senha='$senha'";// Consulta ao banco de dados
$query = mysql_query($sql) or die (mysql_error());
$conta = mysql_num_rows($sql);

if($conta >= 1)
{
if($senha_usuario != mysql_result($sql,0,"senha"))
{
unset($_SESSION['nome_usuario']);
unset($_SESSION['senha_usuario']);
echo "você não efetuou o login!";
exit;
}
}
else
{
unset($_SESSION['nome_usuario']);
unset($_SESSION['senha_usuario']);
echo "você não efetuou o login!";
exit;
}
}
else
{
echo "você não efetuou o Login!";
exit;
}

mysql_close($con);

?>

Onde errei??
Me ajudem por favor.

[10] Comentário enviado por hugoeustaquio em 19/09/2015 - 14:16h

blx32, a sua tabela de usuários simplesmente não contém uma coluna chamada "log_nome".

Esse artigo é de 2008. Se ainda assim quiser usar esse código, veja pelo o menos a questão dos ataques sqlInject (mencionados acima nos comentários).

Abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts