Advertisement
Guest User

Untitled

a guest
Aug 8th, 2016
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.09 KB | None | 0 0
  1. <?php ini_set('display_errors',1); ini_set('display_startup_erros',1); error_reporting(E_ALL); ?><!--Força o php a mostrar todo tipo de erro, linha temporária-->
  2. <?php
  3. function __autoload($class_name){
  4. require_once '../_lib/'.$class_name.'.php';//-->lê minhas classes de forma automática
  5. }
  6. ?>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <link rel="stylesheet" type="text/css" href="_css/login.css"/>
  11. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  12. <script src='https://www.google.com/recaptcha/api.js'></script>
  13. <script>
  14. $(document).ready(function() {
  15. $('#send').prop('disabled', true);//desativa o botão enviar
  16. $('.g-recaptcha').hide();//esconde o captcha
  17. validate();
  18. $('#inputEmail, #inputPassword').change(validate);
  19. });
  20. function validate() {
  21. if ($('#inputEmail').val().length > 10) {//enquanto o campo de email nao tiver menos que 10 caracteres, não ativa o reCaptcha
  22. $('.g-recaptcha').show();//exibe o reCaptcha
  23. }else{//se mudar de ideia e reduzir o campo pra menos de 10 caracteres...
  24. $('.g-recaptcha').hide();//o reCaptcha se esconde novmanete
  25. }
  26. }
  27. function enableSend() {
  28. $('#send').prop('disabled', false);//quando o captcha é confirmado, ativa o botao enviar
  29. }
  30. </script>
  31. </head>
  32.  
  33. <body>
  34. <?php
  35. $helper = new Helpers();//-->objeto com vários métodos importantes
  36. if (isset($_POST['attempt'])){//verifica se tem tentativa restante
  37. $attempt = intval($helper->validation($_POST['attempt']));//validation=método que verifica e escapa minha sring (trim(), stripcslashes() e htmlspecialchars())
  38. }else{
  39. $attempt = 3;//se não for definido número de tentativas, aqui é definido como 3
  40. }
  41.  
  42. if (isset($_POST['g-recaptcha-response']) and isset($_POST['username']) and isset($_POST['password'])) {//garante que todos os campos foram preenchidos
  43. $captcha_data = $_POST['g-recaptcha-response'];
  44. if ($captcha_data) {//Verificação do reCaptcha
  45. $resposta = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=DIGITE-SUA-CHAVE-SECRETA-GERADA-PELO-GOOGLE-AQUI=" . $captcha_data . "&remoteip=" . $_SERVER['REMOTE_ADDR']);
  46. if ($resposta) {//validação do reCaptcha
  47. $username = strtolower($helper->validation($_POST['username']));
  48. $password = $helper->validation($_POST['password']);
  49. $user = new User();//--->meu objeto que acessa o banco de dados usando PDO
  50. $userValidated = $user->checkPasswordHash($username);//--->método do meu objeto que procura o usuario no bacno de dados (SELECT * FROM tbl_Users WHERE username = $username)
  51. if ($userValidated){//verifica se o email existe, se existir...
  52. if ($userValidated->status == 1){//verifica se a conta está bloqueada ou não
  53. echo 'Essa conta está bloqueada, criar botão para reenviar o email de recuperação...';
  54. }else{
  55. $hash = $userValidated->password;//retorna o hash do password
  56. if (password_verify($password, $hash)) {//compara a senha e o hash que foi criado usando password_hash() e salvo no banco de dados
  57. echo 'Password é válido, inserir código que inicia as sessões e chama a próxima página';//-->insira seu código
  58. } else {//caso o password estjeja errado, perde uma tentativa
  59. if ($attempt != 1){//se a tentativa restante for igual a 1, a proxima vez será direcionado para a página de recuperação de senha
  60. $attempt--;
  61. echo 'Usuário e senha não combinam, você tem mais '.$attempt.' tentativas';//mostra o número de tentativas restante
  62. }else{//bloqueia a conta e chama a página de recuperação de senha
  63. echo 'inserir código que bloqueia a conta e abre pagina de recuperaçao de senha';//-->insira seu código de bloqueio
  64. }
  65. }
  66. }
  67. }else{//se o email não existir, perde uma tentativa mas não avisa se o erro foi no email ou na senha
  68. if ($attempt != 0){
  69. $attempt--;
  70. echo 'Usuário e senha não combinam, você tem mais '.$attempt.' tentativas';//mostra o número de tentativas restante
  71. }else{//bloqueia a conta e chama a página de recuperação de senha
  72. echo 'inserir código que bloqueia a conta e abre pagina de recuperaçao de senha';//-->insira seu código de bloqueio
  73. }
  74. }
  75. } else {
  76. echo "Validação não concluída, tente novamente.";
  77. exit;
  78. }
  79. } else {
  80. echo "Validação não concluída, tente novamente.";
  81. exit;
  82. }
  83. }
  84. ?>
  85. <section>
  86. <form class="login" action="login.php" method="post">
  87. <fieldset>
  88. <legend>Login</legend>
  89. <label for="inputEmail" class="Label">Email: </label>
  90. <input id="inputEmail" class="inputText" type="email" maxlength="30" name="username" required>
  91. <label for="inputPassword" class="Label">Password: </label>
  92. <input id="inputPassword" class="inputPassword" type="password" maxlength="20" name="password" required>
  93. <div class="g-recaptcha" data-sitekey="DIGITE-A-CHAVE-DO-SEU-SITE-CRIADA-PELO-GOOGLE-AQUI" data-callback="enableSend"></div><!--Linha que adiciona o recaptcha-->
  94. <input type="hidden" name="attempt" value=<?php echo $attempt ?> /><!--envia por post o numero de tentativas restante-->
  95. <input type="submit" value="Confirmar" id="send" class="send">
  96. </fieldset>
  97. </form>
  98. </section>
  99.  
  100. </body>
  101. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement