Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <script>
- //Control login.
- $(document).ready(function() {
- $(document).on('submit', '#frm-login', function() {
- //Data form.
- var data = $(this).serialize();
- //Ajax
- $.ajax({
- type: 'POST',
- url : 'system/login/login.ini.php',
- data: data,
- success: function(data) {
- $("#msg-frm-login").html(data);
- }
- });
- return false;
- });
- });
- </script>
- <form id="frm-login" method="POST">
- <?php
- //Sino recargo manual en el intento 6, no se activa la sesión...
- if (isset($_SESSION['captcha_control'])) {
- ?>
- <div class="input-captcha center">
- <img src='system/login/captcha_code.php' height="36" />
- </div>
- <input name='captcha_code' type='text' placeholder='Codigo captcha' />
- <?php
- }
- ?>
- <input type="text" name="email" placeholder="Correo electrónico" />
- <input type="password" name="password" placeholder="Contraseña" />
- <button type="submit">Iniciar sesión</button>
- </form>
- <div id="msg-frm-login"><!-- Respuesta AJAX --></div>
- <?php
- //Conexión.
- require_once'../database/conect.ini.php';
- require_once'class.login.php';
- $frm_email = $frm_password = NULL;
- if (isset($_POST)) {
- //Obtengo datos formulario
- $frm_email = $_POST['email'] ?: '';
- $frm_password = $_POST['password'] ?: '';
- //En caso de existir la sesio, captcha obtenemos el dato captcha.
- if (isset($_SESSION['captcha_control'])) {
- $frm_captcha_code = $_POST['captcha_code'] ?: '';
- } else { //Resteamos a 0.
- $frm_captcha_code = NULL;
- }
- //Nueva instancia, obteniendo valores para el constructor.
- $login = new Login($frm_email,$frm_password,$frm_captcha_code);
- //Metodo.
- $login->validate_user();
- //Mensaje
- echo $login->msg;
- }
- ?>
- //Funcion - comprobamos intentos fallidos mediante el usario.
- protected function attempt() {
- //Conexion MySQL.
- $c = new Conexion();
- $sql = "SELECT count(*) n FROM loginLog WHERE username = ? AND fecha > ? and msg = 'Error de password'";
- $stmt = $c->prepare($sql);
- $stmt->bind_param('ss', $this->email, $this->nowDiff);
- $stmt->execute();
- $resultado = $stmt->get_result();
- if ($resultado) {
- $rows = $resultado->fetch_assoc();
- // Si es igual a 6 muestramos captcha y devolvemos false
- if ($this->attempt_captcha == $rows['n']) {
- $this->loginLog($this->email, $this->now, 'Verificar código captcha' );
- $_SESSION['captcha_control'] = true;
- // ///////////////////////////////////////////////////////////
- // Si no recargo no se activa la session captcha en login.php, existe alguna
- // manera para poder lograrlo sin un reload o location.
- //////////////////////////////////////////////////////////////
- //Esto es lo que quiero evitar, ¿como podria devolvar al AJAX una sesión?
- // echo '<script>window.location="login.php"</script>';
- return false;
- } else {
- // Bloquamos acceso por un tiempo de 60seg. y devolvemos false.
- $this->loginLog($this->email, $this->now, 'Login bloqueado durante '.$this->attempt_time);
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement