Генератор паролей на PHP, Perl, функция WordPress

Надежный пароль — надежная защита! Это каждый должен знать и понимать. Но зачастую многим оказывается трудно придумать достаточно сложный и надежный пароль из 12-20 символов (а то и больше), тем более, когда их приходится заводить много. Возможно это из-за нехватки времени или воображения, или попросту из-за лени. Для решения таких проблем и неудобств на помощь могут прийти скриптовые генераторы паролей.
Скрипты генераторов паролей на PHP, Perl, WordPress

Генераторы паролей бывают программные, скриптовые, аппаратные и т.д. Причем этого добра предостаточно в сети интернет. Но все же иметь всегда под рукой свой собственный генератор лучше, чем онлайн-вариант. Кто знает точно, что сайты онлайн-генераторов паролей не сохраняют сгенерированные пароли в своих базах данных для последующего их мошеннического использования? Так что все свое, что «ближе к телу», все-таки надежнее. Вот поэтому предлагаю вашему вниманию несложные скрипты генераторов паролей на языках PHP и Perl. Также познакомимся и с одной из встроенных функцией WordPress, которая служит для тех же целей.

Генератор паролей на PHP

Простой, но вполне пригодный для использования PHP-скрипт, генерирующий как простые, так и довольно сложные пароли различной доины. Его можно сохранить в файл на сервере, например в passwgen.php, и вызывать из браузера. Страница генератора паролей будет выглядеть примерно так:

Страница генератора паролей на PHP

Одно лишь замечание по поводу использования этого PHP-скрипта — в скрипте нет проверок входных данных (запроса post) на предмет их корректности и допустимых значений. Поэтому, если Вы захотите использовать этот скрипт как шаблон для своего генератора паролей, то рекомендую доработать его, добавив обработку и проверку входных данных функции generate_password.

1<!--?php
2function generate_password( $length = 16, $special_chars = false, $extra_special_chars = false ) {
3 
4        if( $_POST[length] !== '' ) $length = $_POST[length];
5        if( $_POST[special_chars] === 'on' ) $special_chars = true;
6        if( $_POST[extra_special_chars] === 'on' ) $extra_special_chars = true;
7 
8        $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
9 
10        if ( $special_chars )
11                $chars .= '!@#$%^&*()';
12 
13        if ( $extra_special_chars )
14                $chars .= '-_[]{}<-->~`+=,.;:/?|';
15 
16        $password = "";
17 
18        for( $i = 0; $i < $length; $i++ ) {
19                $index =  mt_rand( 0, strlen($chars) - 1 );
20                $password .= substr( $chars, $index, 1 );
21        }
22 
23        return $password;
24}
25 
26if( !$_POST[length] || $_POST[length] === '' )
27        $length = 16;
28else
29        $length = $_POST[length];
30 
31if( $_POST[special_chars] === 'on' )
32        $checkbox_special_chars = 'checked';
33else
34        $checkbox_special_chars = '';
35 
36if( $_POST[extra_special_chars] === 'on' )
37        $checkbox_extra_special_chars = 'checked';
38else
39        $checkbox_extra_special_chars = '';
40?>
41 
42 
43 
44<meta charset="utf-8">
45        <title>Генератор паролей</title>
46<style>
47        h1 { font-weight: bold; }
48        #pascode { color: red; font-size: 200%; }
49  </style>
50 
51 
52<h1>Генератор паролей</h1>
53<form method="post">
54        <b>Новый пароль</b><br>
55        <input id="pascode" type="text" name="pascode" size="30" value="<?php echo generate_password(); ?>"><br><br>
56        <input type="text" name="length" size="3" value="<?php echo $length; ?>"> длина пароля<br><br>
57        <input type="checkbox" name="special_chars" <?php="" echo="" $checkbox_special_chars;="" ?=""> /> спец. символы<br>
58        <input type="checkbox" name="extra_special_chars" <?php="" echo="" $checkbox_extra_special_chars;="" ?=""> /> экстра спец. символы<br>
59        <p><input type="submit" value="Генерировать пароль"></p>
60</form>

Генератор паролей WordPress

CMS WordPress начиная с версии 2.5 содержит в своем составе функцию wp_generate_password для генерации паролей (объявляется в файле \wp-includes\pluggable.php). Поэтому те, у кого есть свой блог или сайт на WordPress могут использовать уже готовое решение.

Генератор паролей на WP можно использовать например в плагинах, темах или создать «личную» страницу со своим шаблоном специально для генерации паролей.

1wp_generate_password( $length = 16, $special_chars = true, $extra_special_chars = true );

Входные параметры:

  • $length — длина пароля;
    (по умолчанию 16 символов)
  • $special_chars — не алфавитные и не цифровые символы;
    (по умолчанию включено)
  • $extra_special_chars — дополнительные не алфавитные и не цифровые символы;
    (по умолчанию включено)

Если какой-то из параметров не будет указан при вызове функции, или вообще она будет вызвана без входных параметров, то функция будет использовать значения параметров по умолчанию.

Примеры вызова функции wp_generate_password

1echo wp_generate_password();

- получим пароль длиной в 16 символов (это значение по умолчанию), включающий всевозможные алфавитные, цифровые и другие печатные символы, включая дополнительные;

1echo wp_generate_password( 20 );

- получим пароль длиной в 20 символов, включающий всевозможные алфавитные, цифровые и другие дополнительные символы;

1echo wp_generate_password( 20, false, false );

- генерируется пароль длиной в 20 символов, в котором будут присутствовать только алфавитные (заглавные и строчные) и цифровые символы от 0 до 9;

Внимание!
Функция wp_generate_password() возвращает случайный пароль в текстовом виде. Будьте внимательны при выводе сгенерированного пароля на страницу HTML, т.к. при использовании дополнительных символов, пароль может не отобразиться корректно из-за того, что браузер может посчитать некоторые комбинации их них за коды разметки и просто пропустить либо изменить их.

Чтобы избежать такой неприятности лучше выводите сгенерированные пароли в текстовые поля ввода, такие как ,

Ссылки на Ваш сайт получат статус DoFollow после третьего комментария.

Для вставки кода в комментарии можно использовать BB-коды:
[text] [/text], [php] [/php], [html] [/html]

Подписаться на обновления блога 4remind.ru по RSS
Новости блога в социальных сетях

4remind.ru - персональный блог вебмастера