Не работает генерация пароля

275
24 мая 2017, 06:38

Столкнулся с проблемой при написании сайта, а именно - не работает генерация пароля. Сама суть задачи в чем - есть поле для ввода пароля, а рядом "Сгенерировать", при нажатии на которое в поле ввода пароля вставляется сгенерированный пароль. Собственно, вот сам кусочек с полем для пароля:

<li>
   <label for="">Пароль</label>
   <span class="star">*</span>
   <input type="text" name="reg_pass" id="reg_pass">
   <span id="genpass">Сгенерировать</span>
</li>

Написал вот такой вот скрипт в отдельном файле на php для генерации пароля:

    <?php
    $number = 7;
    $arr = array('a','b','c','d','e','f',
                 'g','h','i','j','k','l',
                 'm','n','o','p','r','s',
                 't','u','v','x','y','z',
                 '1','2','3','4','5','6',
                 '7','8','9','0');
    // Генерируем пароль
    $pass = "";
    for($i = 0; $i < $number; $i++)
    {
      // Вычисляем случайный индекс массива
      $index = rand(0, count($arr) - 1);
      $pass .= $arr[$index];
    }

  echo $pass;
?>

А это уже ajax-функция, которая обрабатывает "Сгенерировать" и должна сразу выводить сгенерированный пароль в input, однако, увы, почему-то не работает... Располагается функция в отдельном файле, где есть еще и другие функции, которые успешно работают. Вот её код:

$('#genpass').click(function(){
 $.ajax({
  type: "POST",
  url: "/functions/genpass.php",
  dataType: "html",
  cache: false,
  success: function(data) {
  $('#reg_pass').val(data);
  }
});
}); 

Помогите, пожалуйста, разобраться, почему функция не работает...

Answer 1

Генерируйте пароль на клиентской строне, зачем зря сервер мучать?

function generatePassword(length = 8){
    let alphabet = 'qwertyuiopasdfghjklzxcvbnm';
    let pass = '';
    while(length--)
        pass += alphabet[~~(Math.random()*alphabet.length)];
    return pass;
}

UP:

Как это прикрутить:

$('#genpass').click(() => {
 $('#reg_pass').val(generatePassword());
}); 
Answer 2

возвращай json из скрипта:

$ans= [
   'pass' => $pass,
];
return json_encode($ans)

и на клиенте получай json:

$('#genpass').click(function(){
   $.ajax({
       url: "/functions/genpass.php",
       cache: false,
       dataType: 'json',
       success: function(data.pass) {
           $('#reg_pass').val(data.pass);
       },
       error: function() {
           alert('Error'); 
       }
   });
 }); 
READ ALSO
Сдвиг при открытии модального окна

Сдвиг при открытии модального окна

Использую Bootstrap модальные окнаУстановил на сайт онлайн-консультант и при открытии модального окна пропадает скролл прокрутки и происходит...

254
Как сделать анимацию для слайдера на css?

Как сделать анимацию для слайдера на css?

Привет! Как можно сделать анимацию для слайдера на css, переключение осуществляется стрелками, слайды должны смещать друг другаСами слайды...

223
mysql добавить столбец с сегодняшней датой

mysql добавить столбец с сегодняшней датой

Привет, необходимо добавить в таблицу Tempvigruzka столбец dates с сегодняшней датой Пробовал 'Alter table tempvigruzka add dates datetime' но он вводит пустые значения

343