2017-01-20 28 views
1

Я сделал код ниже, посмотрев на google и объединив proccess.php, отправьте форму и ajax, но я не знаю, где моя ошибка. Код, похоже, не работает.else if не работает в форме входа ajax

proccess.php

<?php 
session_start(); 
ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

    //check login status and etc 

     if ($data['status'] == 'ok' && $data['loggedinuser']['username'] == "$username") { 
      echo 'ok'; 
     } elseif ($data['message'] == 'checkpoint' && $data['status'] == 'fail') { 
      echo 'checkpoint'; 
     } elseif ($data['errortype'] == 'invaliduser' && $data['status'] == 'fail') { 
      echo 'wrongusername'; 
     } elseif ($data['errortype'] == 'badpassword' && $data['status'] == 'fail') { 
      echo 'wrongpassword'; 
     } elseif ($data['errortype'] == 'unusablepassword' && $data['status'] == 'fail') { 
      echo 'unusablepassword'; 
} else { 
      echo ''; 
} 
?> 

index.php

$(document).ready(function() { 
 
    $("#loginform").submit(function() { 
 
    if ($('#username').val().length > 3 || $('#password').val.length > 3) { 
 
     var pdata = $(this).serialize(); 
 
     $.ajax({ 
 
     url: "proccess.php", 
 
     data: pdata, 
 
     type: "POST", 
 
     beforeSend: function() { 
 
      $("#pesan").html("<h4>Loading...</h4>"); 
 
     }, 
 
     success: function(pesan) { 
 
      console.log(pesan); 
 
      if (console.log(pesan) == "ok") 
 
      $("#pesan").html("<h4>Login Success...<meta http-equiv='refresh' content='1'; url=redirect.php'></h4>"); 
 
      else if (console.log(pesan) == "gagal") 
 
      $("#pesan").html("<h4>Error!</h4>"); 
 
      else if (console.log(pesan) == "wrongusername") 
 
      $("#pesan").html("<h4>Wrong Username!</h4>"); 
 
      else if (console.log(pesan) == "wrongpassword") 
 
      $("#pesan").html("<h4>Wrong Password!</h4>"); 
 
      else if (console.log(pesan) == "checkpoint") 
 
      $("#pesan").html("<h4>need checkpoint</h4>"); 
 
      else if (console.log(pesan) == "accountblocked") 
 
      $("#pesan").html("<h4>your account blocked.</h4>"); 
 
      else 
 
      $("#pesan").html("<h4>Invalid username and/or password.</h4>"); 
 
     } 
 

 
     }); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header id="pesan" class="text-align-center"> 
 
    <h4>Login to your account</h4> 
 
</header> 
 
<form class="no-margin" method="POST" id="loginform"> 
 
    <fieldset> 
 
    <div class="form-group"> 
 
     <label for="username">Username</label> 
 
     <div class="input-group"> 
 
     <span class="input-group-addon"><i class="fa fa-user"></i></span> 
 
     <input name="username" id="username" type="username" class="form-control input-lg input-transparent" placeholder="Username" required> 
 
     </div> 
 
    </div> 
 
    <div class="form-group"> 
 
     <label for="password">Password</label> 
 
     <div class="input-group input-group-lg"> 
 
     <span class="input-group-addon"><i class="fa fa-lock"></i></span> 
 
     <input name="password" id="password" type="password" class="form-control input-lg input-transparent" placeholder="Password" required> 
 
     </div> 
 
    </div> 
 
    </fieldset> 
 
    <div class=""> 
 
    <button id="masuk" type="submit" class="btn btn-block btn-lg btn-danger"> 
 
     <span class="small-circle"><i class="fa fa-caret-right"></i></span> 
 
     <small>Sign In</small> 
 
    </button> 
 
    </div> 
 
</form>

+0

У вас есть ошибка? –

+0

Что не работает? – some

+0

Echo/var_dump ваши переменные перед запуском ваших проверок, тогда вы можете увидеть, должно ли оно соответствовать одному из ваших elses. – aynber

ответ

1

Фикс требуется в PHP:
Пожалуйста, получите данные, посланные Javascript:

$data = $_REQUEST['data']; 


Устранены необходимые в Javascript:
Изменение ваших if заявления следующим образом:

if (pesan == "ok"){ 
    $("#pesan").html("<h4>Login Success..."); 
    window.location = "redirect.php"; 
} 
else if (pesan == "gagal") 
    $("#pesan").html("<h4>Error!</h4>"); 
else if (pesan == "wrongusername") 
    $("#pesan").html("<h4>Wrong Username!</h4>"); 
else if (pesan == "wrongpassword") 
    $("#pesan").html("<h4>Wrong Password!</h4>"); 
else if (pesan == "checkpoint") 
    $("#pesan").html("<h4>need checkpoint</h4>"); 
else if (pesan == "accountblocked") 
    $("#pesan").html("<h4>your account blocked.</h4>"); 
else 
    $("#pesan").html("<h4>Invalid username and/or password.</h4>"); 


Пожалуйста, обратите внимание, как это делается перенаправление используя Javascript:

window.location = "redirect.php"; 
+0

Я меняю его сейчас, но все равно ничего не меняет :( – mieburungdara

+0

Код AJAX только отправит 'username' и' password', которые будут получены в '$ data'. Теперь есть ли какой-то код i n где фрагмент выше содержит только комментарий: '// проверить статус входа и т. д.?? Если да, тогда нет необходимости перебирать все в '$ data' - использовать другие переменные для хранения' status', 'message' и т. Д. И использовать их во всех ваших условиях' elseif'. Если сейчас нет кода, то предоставленный здесь код еще не завершен, и для проверки и проверки учетных данных пользователя необходимо выполнить много работы. –

+0

my proccess.php просто требуется имя пользователя и пароль, а затем обрабатывать его ... $ data ['status'] - массив из json_decode – mieburungdara

1

Вы должны проверить, существует ли ключ в массиве $ data перед его запуском, если он еще есть. Вы должны использовать isset(), чтобы проверить, существует ли элемент массива.

Попробуйте перефразировать ваш код, как в следующем:

if($data['status']=="ok" && $data['loggedinuser']['username'] == "$username") 
{ 
    echo "ok"; 
} 
else 
{ 
    if(isset($data['message'])) { 
     echo $data['message']; 
    } 
    elseif(isset($data['errortype'])) { 
     echo $data['errortype']; 
    } 
} 

Примечание вы можете повторить $ данных [ «сообщение»] и $ данных [ «ошибка»] непосредственно в отличие от них вы сделали это.