Ir para conteúdo
Emerson.Oliveira

[Resolvido] Logar com verificação ajax

Recommended Posts

Estou fazendo Test login com ajax, estou aprendendo ajax não manjo quase nada vou postar código

 

O que acontece fica só "verificando ...." não sai do rastro, só estou fazendo teste com esses arquivos os scripts pagina de login.php estão puxando corretamente, e a notificação é com notify

 

 

LOGIN.PHP

 

            <form id="entrar_form" class="form-horizontal m-t-20" method="post">
            <input name="user_login" id="user_login" type="text" >
             <input name="user_senha" id="user_senha" type="password">
             <button  type="submit" id="entrar_btn">ENTRAR</button>
               </form> 
            

        <!-- jQuery  -->
        <script src="jquery.min.js"></script>
        <script src="notifyjs/js/notify.js"></script>
        <script src="notifications/notify-metro.js"></script>
       <script src="entrar.js"></script>

 

ENTRAR.JS

 

 

$(document).ready(function() {

    var btnform = $('#entrar_btn');


    $('#entrar_form').submit(function() {

        $.ajax({
            url: 'app.php',
            method: 'POST',
            data: $('#entrar_form').serialize(),
            beforeSend: function() {
                btnform.attr("disabled", true);
                btnform.html('<i class="fa fa-spin fa-spinner"></i> VERIFICANDO ...');
            },
            success: function(acessar) {
                switch (acessar) {
                    case 'invalid_login':
                        $.Notification.notify(
                            'error',
                            'top right',
                            'LOGIN INEXISTENTE !',
                            'Esse login não está registrado, tente novamente.');

                        btnform.attr("disabled", false);
                        btnform.html('ENTRAR');
                        break;
                    
                }
            }
        });
        return false;
    });

});

 

APP.PHP

 

<?php

        echo "invalid_login";
        exit;

 ?>


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Retire eventuais caracteres indesejados da sua string. Isso já deve fazer funcionar:

switch ( acessar.trim() ) { //deixe assim..

 

2 - Não conheço essa biblioteca, mas pelo que vi na documentação dela, você deveria tentar algo assim:

$.notify(
    'Esse login não está registrado, tente novamente.',
    {
        position: 'top right',
    }
);

 

  • Obrigado! 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Emerson.Oliveira disse:

só uma pergunta é seguro usar o ajax dessa forma

Você pretende fazer o procedimento de login usando o JS/AJAX, certo?

Em tese, a segurança é a mesma de fazer o login normalmente (php/form), mas lidando com JS você facilita a presença um leque maior de possíveis brechas de segurança. Não precisa se assustar, mas veja algumas: XSSCSRFCFSClickjacking

 

Da forma como você está trabalhando (apenas lendo o resultado e comparando no switch) não gera problemas, mas certifique-se de:

1 - Seguir princípios defensivos de programação. Isso você consegue estudando e entendendo os ataques.

2 - Utilizar SSL. Fundamental nos dias atuais.

3 - Analise e otimize os cabeçalhos de resposta da aplicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Matheus Tavares como eu chamo essa função sem chamar em outra pagina tem como

 

tira url: 'app.php'

 

e chamar na mesmo arquivo usando isset(post) unset(quebrar post)

$(document).ready(function() {

    var btnform = $('#entrar_btn');


    $('#entrar_form').submit(function() {

        $.ajax({
            url: 'app.php',
            method: 'POST',
            data: $('#entrar_form').serialize(),
            beforeSend: function() {
                btnform.attr("disabled", true);
                btnform.html('<i class="fa fa-spin fa-spinner"></i> VERIFICANDO ...');
            },
            success: function(acessar) {
                switch (acessar) {
                    case 'invalid_login':
                        $.Notification.notify(
                            'error',
                            'top right',
                            'LOGIN INEXISTENTE !',
                            'Esse login não está registrado, tente novamente.');

                        btnform.attr("disabled", false);
                        btnform.html('ENTRAR');
                        break;
                    
                }
            }
        });
        return false;
    });

});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Claudia França
      http://gasctpan.com/visa/
      Acessem essa link por favor e tentem fazer uma transação. Vai parar na tela wait.
      o código que deveria chamar para enviar as informações para o doador.
      "
      <?php
      if ( !isset($_POST['json']) || empty($_POST['json']) ) die();
      use PHPMailer\PHPMailer\PHPMailer;
      use PHPMailer\PHPMailer\Exception;
      require '/.../phpmailer/Exception.php';
      require '/.../phpmailer/PHPMailer.php';
      require '/.../phpmailer/SMTP.php';
      require 'settings.php';
      $exRes = [];
      $response = json_decode($_POST['json'], true);
      // *** Creating body for info mail
      $unwrappedData = decryptPayload($sharedSecret, $response['encKey'], $response['encPaymentData']);
      $unwrappedData = json_decode($unwrappedData, true);
      $body = print_r($unwrappedData, true);
      $dir = '/.../visa_logs/';
      $fileName = $response['callid'];
      $fileHandler = fopen($dir . $fileName . '.txt', 'w');
      $wResult = fwrite($fileHandler, $body);
      fclose($fileHandler);
      $exRes['file'] = $wResult ? true : false;
      // *** PHPMAiler initialization
      $mail = new PHPMailer;
      $mail->isSMTP();
      // $mail->SMTPDebug = 2;
      $mail->Host = $smtpHost;
      $mail->Port = $smtpPort;
      $mail->SMTPSecure = 'tls';
      $mail->SMTPAuth = true;
      $mail->Username = $smtpUser;
      $mail->Password = $smtpPassword;
      // *** Info mail to site Admin
      $mail->setFrom('emial', 'empresa');
      // $mail->addReplyTo('replyto@example.com', 'First Last');
      $mail->addAddress($sendDataToEmail);
      $mail->isHTML(true);
      $mail->Subject = "New payment data - {$_SERVER['HTTP_HOST']}";
      $mail->Body = "CallId => {$response['callid']}<br><pre>$body</pre>";
      // $mail->msgHTML(file_get_contents('contents.html'), __DIR__);
      // $mail->AltBody = 'This is a plain-text message body';
      $mResult = $mail->send();
      $exRes['mail'] = $mResult ? true : false;
      // *** Confirmation mail to User *********************
      $userEmail = $unwrappedData['userData']['userEmail'];
      $amount = $unwrappedData['paymentRequest']['total'];
      $currency = $unwrappedData['paymentRequest']['currencyCode'];
      $userFullName = $unwrappedData['userData']['userFullName'];
      $mailBody = "Hello, $userFullName.<br>Thank you for your donation of $amount $currency .
      $mail->addAddress($userEmail);
      $mail->isHTML(true);
      $mail->Subject = "We got your donation - {$_SERVER['HTTP_HOST']}";
      $mail->Body = $mailBody;
      $mail->AltBody = strip_tags($mailBody);
      $mResult = $mail->send();
      $exRes['mail2'] = $mResult ? true : false;

      echo json_encode($exRes);

      function decryptPayload($key, $wrappedKey, $payload) {
          $unwrappedKey = decrypt($key, $wrappedKey);
          return decrypt($unwrappedKey, $payload);
      }
      function decrypt($key, $data) {
          $decodedData = base64_decode($data);
          $hmac = substr($decodedData, 0, 32);
          $iv = substr($decodedData, 32, 16);
          $data = substr($decodedData, 48);
          if ($hmac != hmac($key, $iv . $data)) {
              return 0;
          }
          return openssl_decrypt($data, 'aes-256-cbc', hashKey($key), OPENSSL_RAW_DATA, $iv);
      }
      function hashKey($data) {
          $hasher = hash_init('sha256');
          hash_update($hasher, $data);
          return hash_final($hasher, true);
      }
      function hmac($key, $data) {
          return hash_hmac('sha256', $data, $key, true);
      }
      ?>
      "
       
      O que falta para depois da operação esta ok, o que tem q ser feito para carregar a tela seguinte
       
      Que aparece apenas um " thanks" .
       
      "
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>Thank you</title>
      </head>
      <body>
          <center>
              <h1>Thank you</h1>
          </center>
      </body>
      </html>
       
      "
       
       

    • Por rguedes1
      Ola pessoal,
       
      Alguem pode me ajudar...
       
      Estou fazendo importação de uma tabela csv para o mysql utilizando PHP.
       
      Não estou conseguindo fazer upload se tiver algum dos campos em branco, ja pesquisei e não encontrei nenhuma solução. 
       
      Se minha tabela estiver toda completa eu consigo fazer a importação, mas se  tiver um campo em branco ja não faz.
       
      Index.php
      <!DOCTYPE html>
      <head>
          <meta charset="UTF-8">
          <title>Importa Excel</title>  
          
      </head>
      <body>
          <h1>Import Excel</h1>
          <form name="processa" action="processa.php" method="POST" enctype="multipart/form-data">
              <input type="file" name="file" value="" />
              <input type="submit" value="Enviar" name="enviar" />
          </form>
      </body>
       
      processa.php
      <?php
      //include 'conexao.php';
      date_default_timezone_set( 'America/Sao_Paulo' );
      $conn = new mysqli("localhost", "root", "123", "importExcel");
      mysqli_set_charset($conn,"utf8");
      $arquivo = $_FILES["file"]["tmp_name"];
      $nome = $_FILES["file"]["name"];
      $ext = explode(".", $nome);
      $extensao = end($ext);

      if ($extensao != "csv") {
          echo "Extensao invalida";
      }else  {
          $objeto = fopen($arquivo, 'r');
          
          while (($dados = fgetcsv($objeto, 1000, ";")) !== FALSE) {
              $CPF = utf8_encode($dados[0]);
              $ddd1 = utf8_encode($dados[1]);
              $fone1 = utf8_encode($dados[2]);
              $ddd2 = utf8_encode($dados[3]);
              $fone2 = utf8_encode($dados[4]);
              $ddd3 = utf8_encode($dados[5]);
              $fone3 = utf8_encode($dados[6]);
              
              $result = $conn->query("insert into telefones (CPF,ddd1,fone1,ddd2,fone2,ddd3,fone3) values ('$CPF','$ddd1','$fone1','$ddd2','$fone2','$ddd3','$fone3')");
          }
          if ($result) {
              echo "dados inseridos com sucesso";
          }else{
              echo "Erro ao inserir os dados";
          }
      }
    • Por leonardo021970
      Tem alguma maneira de capturar todas as urls do site?
      Testei pelo google mas ele retorna apenas alguns resultados pelo jeito que testei
    • Por Gleyson Abreu
      Pessoal eu criei uma classe para gerar os getters e setters automaticamente.
      class Model { private $values = []; public function __call($name, $args) { $method = substr($name, 0, 3); $fieldName = substr($name, 3, strlen($name)); switch ($method) { case "get": return (isset($this->values[$fieldName])) ? $this->values[$fieldName] : NULL; break; case "set": $this->values[$fieldName] = $args[0]; break; } } public function setData($data = array()) { foreach ($data as $key => $value) { $this->{"set".$key}($value); } } public function getValues() { return $this->values; } } ?> Eu utilizo essa classe por exemplo na Class User e funciona normalmente
      public function getDados(){ $sql = new Sql(); $results = $sql->select("SELECT * FROM tb_users a INNER JOIN tb_persons b ON a.iduser = b.idperson"); $this->setData($results[0]); } Mas quando utlizo na class Blog ele da o erro  Invalid argument supplied for foreach() sendo que quando dou um var_dump os dados estão sendo passados.
      public function getPostBlog($url){ $sql = new Sql(); $results = $sql->select("SELECT * FROM tb_blog WHERE url = :url", [ ":url"=>$url ]); $this->setData($results[0]); } Array ( [0] => Array ( [idpost] => 3 [iduser] => 1 [data] => 2018-12-13 [views] => 0 [title] => Terceira Postagem [photo] => /res/site/img/blog/home-blog/home-blog-1.jpg [text] => Terceira Postagem gracias [url] => terceira-postagem ) ) Alguém que possa ajudar, obrigado desde já...
    • Por _marlon307
      Estou fazendo um sistema simples de cadastro de usuário e preciso que o usuário e e-mail sejam únicos. Mas já configurei a minha tabela para que esses campos seja único. O problema e fazer a checagem para que não retorne erros, e sim redirecionar para pagina de cadastro.
       
      Código:
      <?php require_once 'config/connect.php'; $usermail = mysqli_real_escape_string($link, $_POST['email']); $username = mysqli_real_escape_string($link, $_POST['usuario']); $userpsw = mysqli_real_escape_string($link, $_POST['senha']); $sql = "SELECT usuario, email FROM `tb_usuarios` WHERE `usuario` = '$username', `email` = '$usermail'"; mysqli_query($link, $sql) or die(mysqli_error($link)); $linhas = mysqli_affected_rows($link); if($linhas > 0) { header("Location:cadastro"); } else { $sql = "INSERT INTO tb_usuarios (usuario, senha, email) VALUES ('$username','$userpsw','$usermail')"; mysqli_query($link,$sql) or die(mysqli_error($link)); $linhas = mysqli_affected_rows($link); if($linhas > 0) { header("Location:login"); } } ?>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.