У меня проблемы с получением того, что мне нужно.У меня есть форма для генерации пароля.Он создает ajax-вызов, который проверяет некоторые поля, а затем имеет две опции:
- Генерирует пароль;
- Имеется ошибка (например, пользователь не заполнил пароль любого размера);
Если сценарий является первым, он должен добавить пароль к textarea
в форме.Если есть ошибка, он должен вывести notify
с ошибкой для пользователя.
Как я могу увидеть, есть ли ошибка или сгенерированный пароль для других действий?Я не могу просто проверить, равен ли результат чему-либо, поскольку сгенерированный пароль будет случайным.Как я могу узнать из PHP, если это успешно или неправильно использовать функции success
и error
?
Мой JS:
$.validator.setDefaults({
highlight: function(element) {
$(element).closest('.form-control').addClass('is-invalid');
$(element).closest('.form-control').removeClass(
'is-valid has-feedback').addClass('is-invalid has-feedback');
$(element).closest('.form-control').find('i.fa').remove();
},
unhighlight: function(element) {
$(element).closest('.form-control').removeClass('is-invalid');
$(element).closest('.form-control').addClass('is-valid');
$(element).closest('.form-control').find('i.fa').remove();
},
errorElement: 'p',
errorClass: 'text-danger text-sm',
errorPlacement: function(error, element) {
if (element.parent('.input-group').length) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
}
});
var OpAuthPwdGenerator = function() {
// Init Sign In Form Validation, for more examples you can check out https://github.com/jzaefferer/jquery-validation
var initValidationPwdGenerator = function(){
jQuery('.js-validation-pwd_gen').validate({
rules: {
'pwd_size': {
required: true,
digits: true,
min: 6,
max: 2048,
},
'pwd_quantity':{
required: true,
digits: true,
min: 1,
max: 100,
},
},
messages: {
'pwd_size': {
required: 'Please set the password length.',
digits: 'Length is a numeric value.',
min: 'Password should have at least 6 characters.',
max: 'Password could not have more that 2048 characters.',
},
'pwd_quantity': {
required: 'Please set the password quantities you want.',
digits: 'Length is a numeric value.',
min: 'You should generate at least one password.',
max: 'You can generate at most 100 password at a time.',
}
},
submitHandler: PasswordGenerator
});
};
function PasswordGenerator()
{
var data = $("#pwd_gen_form").serialize();
$.ajax({ url: '../inc/call.php',
data: {
dados: JSON.stringify(data),
caller: 'PasswordGenerator',
},
type: 'POST',
beforeSend: function(){
$("#gen_pwd_btn").html('<i class="fa fa-cog fa-spin"></i>');
$("#gen_pwd_btn").attr("disabled", true);
},
success: function(output) {
if(output == "OK"){
}else{
$("#gen_pwd_btn").html('Generate');
$("#gen_pwd_btn").attr("disabled", false);
$.notify({
// options
title: 'Error',
message: output,
},{
// settings
element: 'body',
position: null,
type: "danger",
allow_dismiss: true,
newest_on_top: true,
placement: {
from: "top",
align: "right"
},
offset: 20,
spacing: 10,
z_index: 9999,
delay: 10000,
timer: 1000,
url_target: '_blank',
mouse_over: null,
animate: {
enter: 'animated fadeInDown',
exit: 'animated fadeOutUp'
},
onShow: null,
onShown: null,
onClose: null,
onClosed: null,
icon_type: 'class',
template: '<div data-notify="container" class="col-xs-11 col-sm-3 alert alert-{0}" role="alert">' +
'<button type="button" aria-hidden="true" class="close" data-notify="dismiss">×</button>' +
'<span data-notify="icon"></span> ' +
'<span data-notify="title"><strong>{1}</strong></span> ' +
'<span data-notify="message">{2}</span>' +
'<div class="progress" data-notify="progressbar">' +
'<div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>' +
'</div>' +
'<a href="{3}" target="{4}" data-notify="url"></a>' +
'</div>'
});
}
}
});
};
return {
init: function () {
// Init Sign In Form Validation
initValidationPwdGenerator();
}
};
}();
// Initialize when page loads
jQuery(function(){ OpAuthPwdGenerator.init(); });
Мой PHP:
function PasswordGenerator($mysqli){
if(isset($_POST['dados'])){
$dados1 = json_decode($_POST['dados'], true);
parse_str($dados1, $dados);
if(!isset($dados['pwd_size'])){
$errors [] = "Please insert the length of password.";
}
if(!isset($dados['pwd_quantity'])){
$errors [] = "Please insert the password quantity.";
}
if((!isset($dados['pwd_numbers'])) AND (!isset($dados['pwd_lowercase'])) AND (!isset($dados['pwd_uppercase'])) AND (!isset($dados['pwd_symbols']))){
$errors [] = "You can't create an empty password...";
}
$length = validar($mysqli, $dados['pwd_size']);
$pwdnr = validar($mysqli, $dados['pwd_quantity']);
if(empty($errors)){
$sets = array();
if((isset($dados['pwd_lowercase'])) AND (isset($dados['pwd_similar']))){
$sets[] = "abcdefghjkmnpqrstuvwxyz";
}elseif((isset($dados['pwd_lowercase'])) AND (!isset($dados['pwd_similar']))){
$sets[] = "abcdefghijklmnopqrstuvwxyz";
}
if((isset($dados['pwd_uppercase'])) AND (isset($dados['pwd_similar']))){
$sets[] = "ABCDEFGHJKMNPQRSTUVWXYZ";
}elseif((isset($dados['pwd_uppercase'])) AND (!isset($dados['pwd_similar']))){
$sets[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}
if((isset($dados['pwd_numbers'])) AND (isset($dados['pwd_similar']))){
$sets[] = "23456789";
}elseif((isset($dados['pwd_numbers'])) AND (!isset($dados['pwd_similar']))){
$sets[] = "1234567890";
}
if(isset($dados['pwd_symbols'])){
$sets[] = "!{[]}@-+*_.?";
}
$all = '';
$password = '';
foreach($sets as $set){
$password .= $set[array_rand(str_split($set))];
$all .= $set;
}
$all = str_split($all);
for($i = 0; $i < $length - count($sets); $i++){
$password .= $all[array_rand($all)];
}
$password = str_shuffle($password);
return $password;
}else{
foreach($errors as $value){
echo "<p style='margin: 0 0;'>".$value."</p>";
}
}
}else{
echo "Something wrong happened. Please try again later.";
}
}