2016-09-22 4 views
4

У меня есть образец сценария, который будет аутентифицировать моих пользователей для доступа к странице. Моя проблема заключается в том, когда я отправляю значения, которые js-файл отражает, что данные были сериализованы, но когда он отправлен в файл php, чтобы проверить, существует ли запись базы данных, пользователи все еще получают доступ к странице, правильно ли логин или неправильно. По какой-то причине кажется, что я не принимаю значения `$ _POST ['pass'] и мои $ _POST ['user_email']. Но если я вручную введу пользовательский адрес электронной почты и пароль в файле php, чтобы заменить переменные, он будет работать.Ajax php post не аутентифицируется

HTML форма

<form class="login" id="login-form" name="login-form" method="post"> 
    <p class="title">LOGIN</p> 
    <input type="text" placeholder="Email" id="user_email" name="user_email" autofocus/> 
    <i class="fa fa-user"></i> 
    <input type="password" placeholder="Password" id="pass" name="pass" /> 
    <i class="fa fa-key"></i> 
    <button> 
     <i class="spinner" style="outline:none;"></i> 
     <span class="state">Log in</span> 
    </button> 
    </form> 

Мой файл JS, чтобы получить возможность отправлять значения. Я добавил console.log просто чтобы проверить увидеть, какие значения были приняты в скрипте

$('document').ready(function() 
{ 
    var working = false; 
    $('.login').on('submit', function(e) { 
     e.preventDefault(); 
     if(working)return 
     working = true; 
     var $this = $(this), 
     $state = $this.find('button > .state'); 
     $this.addClass('loading'); 
     $state.html('Authenticating'); 

     var data = $("#login-form").serialize(); 
     console.log(data); 

     $.ajax({ 

      type : 'POST', 
      url : 'login_process.php', 
      data : data, 
      success : function(response) {      
        console.log(response); 
        if(response=="ok"){ 
         setTimeout(function() { 
          $this.addClass('ok'); 
          $state.html('Welcome'); 

          setTimeout(function() { 
           $state.html('Log in'); 
           $this.removeClass('ok loading'); 
           working = false; 
          }, 4000); 

          setTimeout(function() { 
           window.location.href = "/Home.aspx"; 
          }, 4000); 
         }, 3000);   
         //$("#btn-login").html('<img src="btn-ajax-loader.gif" /> &nbsp; Signing In ...'); 
         //setTimeout(' window.location.href = "home.php"; ',4000); 
        } else { 
         console.log('ERROR IN LOGINING IN');  
        } 
       } 
      }); 
      return false; 
    }); 
}); 

PHP файл «LOGIN_PROCESS»

<?php 
    session_start(); 
    require_once 'dbconfig.php'; 
    if(isset($_POST['pass'])) 
    { 
     $user_email = urldecode(trim($_POST['user_email'])); 
     $user_password =trim($_POST['pass']); 
     //$password = md5($user_password); 
     $password = $user_password; 
     try { 

      $stmt = $db_con->prepare("SELECT * FROM tbl_users WHERE user_email=:email"); 
      $stmt->execute(array(":email"=>$user_email)); 
      $row = $stmt->fetch(PDO::FETCH_ASSOC); 
      $count = $stmt->rowCount(); 

      if($row['user_password']==$password){ 
       echo "ok"; // log in 
       $_SESSION['user_session'] = $row['user_id']; 
      } 
      else{ 
       echo "email or password does not exist."; // wrong details 
      } 
     } 
     catch(PDOException $e){ 
      echo $e->getMessage(); 
     } 
} 
?> 
+1

Что возвращается с вызова ajax? –

+0

Некоторая разумная отступка кода была бы хорошей идеей. Это помогает нам читать код и, что более важно, это поможет ** вы отлаживаете свой код ** [Взгляните на стандарт кодирования] (http://www.php-fig.org/psr/psr-2/) для вашей собственной выгоды. Вас могут попросить изменить этот код через несколько недель/месяцев, и в конце вы поблагодарите меня. – RiggsFolly

+0

Пожалуйста, не __ройте свой собственный. PHP предоставляет ['password_hash()'] (http://php.net/manual/en/function.password-hash.php) и ['password_verify()'] (http://php.net/manual/ ru/function.password-verify.php), пожалуйста, используйте их. И вот некоторые [хорошие идеи о паролях] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) Если вы используете версию PHP до 5.5 [имеется пакет совместимости, доступный здесь] (https : //github.com/ircmaxell/password_compat) – RiggsFolly

ответ

-1

Вы пропускаете DATATYPE сделать с DATATYPE: «» JSon сразу после данных, вы можете вернуть результат в json по json_encode() ti результат отладки

Смежные вопросы