Jump to content


Photo

Verificar Dados Para Login E Senha!


  • Faça o login para participar
10 replies to this topic

#1 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 09/05/2005, 20:31

Para quem precisa autenticar usuários usando Login e Senha isso ajuda bastante porque faz a comparação no banco de dados mas antes verifica se os dados entrados são válidos para evitar códigos maliciosos.

Vou postar 3 páginas: teste.php que é um formulário normal. check_function.php que faz o tratamento dos dados. E error_handle.php que exibe as mensagens de erro personalizadas e podendo ser alteradas facilmente. Detalhe: Tableless :D

teste.php

<?php

echo "<form action=\"check_function.php\" method=\"post\">";
echo "Login &nbsp;";
echo "<input type=\"textfield\" name=\"login\" /><br  />";
echo "Senha &nbsp;";
echo "<input type=\"password\" name=\"pass\" /><br  />";
echo "<input type=\"submit\" value=\"consultar\" />";
echo "</form>"

?>


Sem comentários, apenas um formulário com 2 campos.


check_function.php

<?php

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

#  Tratamento de Dados para Login e Senha
#  Por Dirceu Bimonti Ivo
#  E-mail: contato at bimonti dot com
#
#  Utilize o script a vontade, nem precisa
#  deixar os créditos porque não tem nada
#  de complexo apenas funções do PHP.
#   
#############################

ob_start(); //segura o buffer se você for usar include ou outra função similar

session_start();

require_once "db_connect.php"; // inclui o arquivo de conexão com o DB, faça o seu

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

// consulta com o DB, eu uso a tabela sis_login com os campos
// id, login e senha
$consulta = mysql_query("SELECT * FROM sis_login");  
$dados = mysql_fetch_array($consulta);

// ctype_alpha retorna TRUE se existir somente caracateres de A-Z
if (ctype_alpha($login)) {


// ctype_almun retorna TRUE se existir somente caracteres A-Z e números
if (ctype_alnum($pass)) {


// comparação com os dados do DB
   if ($_POST['login'] == $dados['login']) {
 
   if ($_POST['pass'] == $dados['senha']) {
 

// coloca em sessões, você pode alterar para cookies se quiser
    $_SESSION["login"] = $dados["login"];
    $_SESSION["senha"] = $dados["senha"];
   
    header("Location: index.php");
   
      } else {
         header("Location: error_handle.php?errn=4");
      } 
     
    } else {
        header("Location: error_handle.php?errn=3");
    }
  }
  else {
   header("Location: error_handle.php?errn=2");
  }
}
else {
  header ("Location: error_handle.php?errn=1");
}


// libera o buffer 
ob_end_flush();

?>


Não muito complexo também, veja no manual do php as funções ctype para verificação de strings. Acho ela melhor que usar eregi, etc...
Note que os ifs fazem as comparações e os elses redirecionam (header) para a página de erro indicando um código que exibirá a descrição do erro.Veja:

error_handle.php

<style>
.divcentral {
position: absolute;
z-index: auto;
height: auto;
width: 480px;
left: 50%;
top: 50%;
background-color: #EEEEEE;
text-align: left;
margin-left: -240px;
margin-top: -120px;
text-align: justify;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #333333;
text-indent: 0px;
}
.titulo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
text-align: left;
text-indent: 0pt;
color: #333333;
}
.email {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
font-weight: normal;
text-align: left;
text-indent: 0pt;
color: #0000CC;
}

</style>

<?php
// pega o código do erro
$get_error_number = $_GET['errn'];

//sua pagina inicial
$home = "http://www.site.com";


//abaixo a descrição de cada erro, altere como quiser.

$error_0 = "<p class=\"titulo\">Página não encontrada:</p>Desculpe, mas a página que você está tentando acessar não existe em nosso servidor. Se você está digitando o endereço direto no navegar certifique-se que digitou corretamente. Se você acessou esta página através de um link na nossa página por favor entre em contato com o administrador neste e-mail: <p class=\"email\">contato arroba bimonti ponto com.</p>";

$error_1 = "<p class=\"titulo\">Login Inválido:</p>Você digitou o seu login errado. Lembre-se que o login aceita apenas caracteres A-Z e não aceita números, símbolos (\" ! @ # $ % ¨ & * _ . ; ? etc) ou espaços em branco. Confira suas informações e tente novamente, ou entre em contato com o administrador: <p class=\"email\">contato arroba bimonti ponto com.</p>";

$error_2 = "<p class=\"titulo\">Senha Inválida:</p>Você digitou sua senha errada. Lembre-se que a senha aceita apenas caracteres A-Z e números, mas não aceita símbolos (\" ! @ # $ % ¨ & * _ . ; ? etc) ou espaços em branco. Confira suas informações e tente novamente, ou entre em contato com o administrador: <p class=\"email\">contato arroba bimonti ponto com.</p>";

$error_3 = "<p class=\"titulo\">Login não confere</p>O login que você digitou não é igual ao do cadastro. Tente novamente, lembrando que o sistema diferencia maiúsculas de minúsculas(Ex.: <b>LoGiN</b> é diferente de <b>login</b>).";

$error_4 = "<p class=\"titulo\">Senha não confere</p>A senha que você digitou não é igual a do cadastro. Tente novamente, lembrando que o sistema diferencia maiúsculas de minúsculas(Ex.: <b>SeNhA</b> é diferente de <b>senha</b>).";

$error_5 = "<p class=\"titulo\">Erro desconhecido:</p>Este erro pode ter sido gerado se você digitou um endereço errado ou estava tentando acessar conteúdo proibido no site. Por questões de segurança seus dados foram gravados (IP, Navegador usado, hora do acesso e página acessada) e enviados para o administrador que irá analisar o ocorrido e tentar resolver o problema. Clique aqui para retornar para a página principal: <a href=\"".$home."\">Página Principal</a>";


// verificação da query:
// verifica se não está vazia com o !=null (diferente de nulo)
// verifica se não é maior que o numero de erros cadastrados, para evitar que
// usuários mais experientes fiquem mexendo com a query
// verifica se é numerico, qualquer outro caracterer retorna erro (A-Z,",$, etc.)

if ($get_error_number !=null && $get_error_number <= 5 && ctype_digit($get_error_number)) {

//switch para exibir o código em questão

echo "<div class=\"divcentral\">";
    switch ($get_error_number){
case 0: echo "$error_0"; break;
case 1: echo "$error_1"; break;
case 2: echo "$error_2"; break;
case 3: echo "$error_3"; break;
case 4: echo "$error_4"; break;}
echo "</div>";
}
else {

// ou caso o usuário faça uma cagada muito grande ele mostra o erro
// desconhecido. Eu acho melhor no $erro_5 implementar uma função para
// gravar o IP mesmo e a query usando o $_SERVER['QUERY_STRING'],
// para ver se alguém está tentando usar códigos maliciosos pela URI

echo "<div class=\"divcentral\">";
echo "$error_5";}
echo "</div>";

?>


Essa página só é responsável por pegar o código do erro e exibir a mensagem. Eu faço separada para ficar mais fácil de manusear, mas ela pode ser junto com a check_function, ae você chama assim check_function?errn=1, só tome cuidado na hora de alterar para não estragar as outras comparações.


Editado
---------------------------------------

Tava com um bug que eu vi quando fui usar o script essa semana, não tava inicializando a sessão no pagina de check_function, ae claro que não ia funcionar.. bad, bad server, no donut for you .... :)

Edição feita por: bimonti, 18/05/2005, 19:06.

WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#2 **K@T@T@U**

**K@T@T@U**

    Quase lá

  • Usuários
  • 254 posts
  • Sexo:Não informado
  • Localidade:Nova Iguaçu - RJ
  • Interesses:Quase tudo

Posted 11/08/2005, 06:25

Achei meio complexo. eu utilizo esta função.
function exibir_erro($erro)
{
	print "$erro";
	exit;
}
Manipulando a função
if ($senha != $verifica_senha)
	exibir_erro("As senhas não conferem!");
if ($email != $verifica_email)
	exibir_erro("Os E-mail não conferem!");
Por ai vai.
So q ele para de executar a pagina apos exibir cada erro.
Mai e simples e funcional

Edição feita por: **K@T@T@U**, 11/08/2005, 06:25.


#3 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 11/08/2005, 07:08

Manipulação completa de erros, só no PHP 5 ! :rolleyes: Já até me acostumei, coloco os códigos entre os blocos try e catch, e para cada situação que eu deve gerar um erro é só utilizar throw new Exception() ... :rolleyes: ... e dentro do bloco catch trato a exceção, podendo salvar um log do ocorrido ... B)

Para saber mais, RTFM: Capítulo 20. Exceções ;)

[]’s :DAté mais

#4 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 24/10/2017, 19:12

Buy Cheap Cialis Discount Online viagra Clomid Dianabol Priligy Amsterdam

#5 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 25/10/2017, 20:38

Levitra Ohne Potenzprobleme Suhagra 100 With Free Shipping Cheap Propecia Online Uk buy viagra Viagra Plus 400 Mg Priligy Quanto Prima Drug Information
Acheter Viagra Forum Levitra Lyoc online pharmacy Viagra Das Erste Mal Nehmen Zithromax Website
Propecia Ersatzmedikament Keflex Sinus Infection Viagra Kosten De viagra Where I Can Buy Datalafil
buy accutane uk online Bentyl Merbentyl Acquistare Cialis Generico viagra prescription Generic Levitra Vardenafil Effetto Viagra Donne Levitra 10 Mg Quotazione

#6 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 26/10/2017, 20:01

Lasix Without A Script viagra Comprar Levitra Cialis Albuterol By Mail Viagra A Paris

#7 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 27/10/2017, 07:44

Tadalafil Generico Paypal price of levitra in canada Cialis Receta Europa Zithromax Tooth Infection
Lioresal En Ligne viagra Lastlonger

#8 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 29/10/2017, 05:40

Baclofene WinthropЮ 10 Mg Cipro Epocrates Online Buy Wockhardt Tamoxifen generic viagra Cheap 1 Pill Of Cefixime 400 Mg Viagra Cialis Aphrodisiaque Buy Zithromax By The Pill

#9 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 30/10/2017, 10:59

Alli Weight Loss In Stock Can You Snort Cephalexin 500mg cialis Buy Viagra Online Reviews Buy Misoprostol Pills Online Ed Meds
Viagra Come Usarlo Amoxil Aspirin Buy Brand Cialis For 3.92 Us Online viagra online Amoxicillin Clavulanate And Chewable
Real Progesterone Ups Comprar Cialis 5 Mg viagra online Propecia Rezeptfrei
Quanto Costa Il Cialis Da 10 Mg viagra online pharmacy Priligy Spain
Viagra Gratis Ai Paraplegici Cialis France Pas Cher buy viagra How To Find Orlistat 120 Mg 93551 Zip
Levitra Prix Paris cialis viagra levitra kaufen rezeptfrei Cialis 5 Does Amoxicillin Make You Tired Buy Amoxicillin Antibiotic Online Uk
Elidel Xenical Diet Pills Price viagra Clomid Omnadren Original Kamagra 100mg Oral Jelly
Discount Propecia No Prescription Amoxicillin Is It Penicillin viagra Suche Viagra 100mg Cheap Viagra Levitra Cialis
Erection Pills At Gnc Side Effects Of Amoxicillin Cats Propecia Eficacia 1 Mg viagra online pharmacy Cialis 20 Mg Alcool

#10 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 30/10/2017, 21:24

Overseas Drug Store Purchasing Keflex Online levitra 40 mg best price Who Selling Viagra At A Discount Amoxicillin Causing Yeast Infection
Cialis Tablets 10mg Per Il Viagra Serve La Ricetta Medica viagra prescription Cialis Europe Online
Kamagra Oral Jelly Directions Costco Price For Cialis 5mg viagra 20 Mg Lisinopril Sale No Perscription Priligy Dapoxetin Schweiz
Priligy Dapoxetina Comprar Virgar buy viagra online One Day Delivery Viagra Amoxicilina Amoxiclav Sandoz Comprar Viagra A Domicilio
Amoxicillin Overdose Cats Propecia Avversi vardenafil bestellen Baclofene Sevrage
Propecia Sagepalme Viagra Opiniones On Sale Macrobid Cystitis On Line online pharmacy Generic Viagra Super Active 100mg Order Cheap Viagra Fas
My Cat Ate An Amoxicillin 500 Acquistare Kamagra Paris A Buon Mercato Buy Viagra In Person viagra Overdose Fluoxetine Acheter Dapoxetine Usa Propecia Usp

#11 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 04/11/2017, 16:39

Glucophage Metformin buy cheap accutane online no prescription Viagra Tablets viagra Levitra No Prescription Levitra Walmart Plan
Levitra 10 Mg Quotazione cialis Cialis original 10mg Viagra Nebenwirkungen Magen
Kamagra Ingredients viagra Low Cost Alternatives And Viagra Buy Real Kamagra Uk Kamagra Online Canada




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq