На моей странице index.php у меня есть форма.Когда вы отправляете форму, она отправляется в файл process.php, который выполняет следующий код:
$(document).ready(function() {
$('#login_button').click(function()
{
event.preventDefault();
var formData = {
'email' : $('input[name=email]').val(),
'password' : $('input[name=password]').val()
};
$.ajax({
type : 'POST',
url : 'ajax/proclogin.php',
data : formData,
dataType : 'json',
success : function(data)
{
if (data.success == false)
{
if(data.errors.email)
{
toastr.error('Email is blank. Type in an email.');
}
else if(data.errors.password)
{
toastr.error('Password input is blank. Type in a password.');
}
}
else
{
toastr.success('Works!', 'WooHoo!');
}
}
});
});
});
Затем выполняется следующий код, который является страницей proclogin.php:
<?php
// proc(ess)login.php
$errors = array(); // array to hold validation errors
$data = array(); // array to pass back data
// validate the variables ======================================================
// if any of these variables don't exist, add an error to our $errors array
if (empty($_POST['email']))
{
$errors['email'] = 'Email field is blank.';
}
if (empty($_POST['password']))
{
$errors['password'] = 'Password field is blank.';
}
// return a response ===========================================================
// if there are any errors in our errors array, return a success boolean of false
if(empty($errors))
{
// if there are no errors process our form, then return a message
$connection = mysqli_connect("****","*****","*****","*****");
$email = mysqli_real_escape_string($connection, $_POST['email']); # Define email field
$input = mysqli_real_escape_string($connection, $_POST['password']); # Define password field
$query = mysqli_query($connection, "SELECT `Email`, `Password` FROM users WHERE Email='$email' LIMIT 1"); # Query what we need
$row = mysqli_fetch_array($query); # Fetch what we need
$p = $row['Password']; # Define fetched details
$email = $row['Email']; # Define fetched details
if(password_verify($input, $p)) # Verify input password matches hashed password in the DB.
{
#It matches, let's set a session and redirect them to the dashboard.php page.
//$_SESSION['SID'] = $email;
$data['success'] = true;
$data['message'] = 'Success';
}
else
{
$data['success'] = false;
$data['message'] = 'failed';
}
}
else
{
// if there are items in our errors array, return those errors
$data['success'] = false;
$data['errors'] = $errors;
}
// return all our data to an AJAX call
echo json_encode($data);
?>
Если поле электронной почты пустое, вы получите сообщение об ошибке, написанное на странице process.js.Если поле пароля не заполнено, вы получите сообщение об ошибке, записанное на странице process.js.
Ни одно из сообщений об ошибке не было передано из proclogin.php.Меня это не сильно волнует, меня беспокоит то, что «неудачнику» выдвигают, чтобы уведомить их о неправильности их учетных данных.Я поиграл с кодом и попытался сопоставить то, что было выше, но не могу заставить его работать.
Я также создал $ errors ['deny'] = "Неправильные данные";и попытался протолкнуть его на странице process.js как data.errors.deny - это правильный путь?(новичок в AJAX / jQuery).