메신저 단순한 로그인 스크립트를 사용하고 있지만 아약스를 사용하고 있습니다.JSON 반환이 작동하지 않습니다.
나는 다른 곳에서 자바 스크립트 측면에 대해 동일한 스크립트를 사용했지만 괜찮 았지만 지금은 어떤 것이 시도하고 있는지는 잘 모르겠다.
그래서, 나는 반환이 사용하고 있습니다 : 다음
$return['loginSuccess'] = true;
echo json_encode($return);
및 반환이를 잡으려고 : 리턴 보낼 때
if (response.loginSuccess === true) {
window.location = "index.php";
} else {
// error
}
그러나, 아무 일도 발생하지 않습니다. 나는 자바 스크립트 측면을 제거했으며 login.php 페이지는 loginSuccess = True의 응답을 보내고 있음을 보여줍니다.
왜 다른 스크립트에서 작동하는지 알지 못하지만 실제로는 아무 것도 없습니다. 여기
전체 자바 스크립트입니다 (나는 그것을 짧게 유지하기 위해 검증을 제거한) :// JavaScript - Login AJAX
$(document).ready(function(){
// When the form is submitted
$('.loginbutton').click(function(){
var check = true;
// Get the values
var usernamelogin = $('.logininputuser').val();
var passwordlogin = $('.logininputpass').val();
// Database validation checks
if (check === true) {
$.ajax({
type: "POST",
url: "process/login.php",
data: $(".formlogin").serialize(),
dataType: "json",
success: function(response){
if (response.loginSuccess === true) {
window.location = "index.php";
} else {
// error
}
}
});
}
return false;
});
});
그리고 PHP : 그것의 가능한 경우
, 긴 질문에 대한<?php
header('Content-Type: application/json');
require("../common.php");
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if(!empty($_POST['loginbutton'])) {
$query = " SELECT id, username, password, salt, email FROM users WHERE username = :username ";
// Create bound values
$query_params = array(
':username' => $_POST['username']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$login_ok = false;
$row = $stmt->fetch();
if($row)
{
$check_password = hash('sha256', $_POST['password'] . $row['salt']);
for($round = 0; $round < 65536; $round++)
{
$check_password = hash('sha256', $check_password . $row['salt']);
}
if($check_password === $row['password'])
{
$login_ok = true;
}
}
// Sucsess for login
if($login_ok)
{
unset($row['salt']);
unset($row['password']);
$_SESSION['user'] = $_POST['username'];
$_SESSION['logged'] = "1";
$return['loginSuccess'] = true;
echo json_encode($return);
}
else
{
die();
}
} else if(!empty($_POST['regbutton'])) {
header('Location: ../register.php') ;
}
}
?>
죄송 확실하지 가능하다면이 코드에 무슨 문제가 있는지 보시거나 어떤 도움을 주셔서 감사합니다.
확인, 다음을 디버깅하려고합니다. – N20084753
ajax에서'console.log (응답)'을 보냈을 때 디버거에 남긴 메세지는 무엇입니까? – Newben
btw'var_dump ($ _ POST [ 'username'])'을 반환하는 것은 무엇입니까? – Newben