Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для pixel
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290

Генератор пароля

27.10.2011, 08:29. Показов 2678. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.
Решил тут написать функцию сабжа, но что то хлам какой то неработоспособный получается:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function TestRandStr($num = 8)
    {
    $a1 = array(range(0, 9));
    $a2 = array(range('A', 'Z'));  
    $a3 = array(range('a', 'z'));
    $key = '';
    $id = 0;
    $last_id=0;
    $rand = microtime(true);
    for($i = 0; $i < $num; $i++)   
        {
          $id = rand(1, 3);
           if ($id==$last_id)
           {
           while ($id==$last_id) $id = rand(1, 3);
              $last_id=$id;
              switch ($id)
              {
              case 1:
              $key .= $a1[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
              $rand = microtime(true); 
              break;
              case 2:
              $key .= $a2[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
              $rand = microtime(true); 
              break;
              case 3:
              $key .= $a3[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
              $rand = microtime(true); 
              break;
              }           
           }
           else
           {
              $last_id=$id;
              switch ($id)
              {
              case 1:
              $key .= $a1[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
              $rand = microtime(true); 
              break;
              case 2:
              $key .= $a2[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
              $rand = microtime(true); 
              break;
              case 3:
              $key .= $a3[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
              $rand = microtime(true); 
              break;
              }
           }
        }
         return $key;  
    }
т.е. нужно сгенерить пароль из 8 символов, но что бы подряд однотипные символы не ставились. Например X0x0 - правильно а X00x - не правильно. Вывод либо вообше не происходит, либо выводится слово Array. Код получается очень громоздкий. Может есть более элегантный вариант?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2011, 08:29
Ответы с готовыми решениями:

Генератор пароля (случайной строки)
&lt;?php function genpsw() { $rp = array ( '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g',...

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

Генератор пароля
Напишите функцию, которая случайным образом генирирует пароль из 8 символов. В пароле должны присутствовать только латинские буквы и цифры ...

15
48 / 48 / 2
Регистрация: 25.05.2011
Сообщений: 277
27.10.2011, 09:27
http://www.softtime.ru/scripts/parol.php
0
 Аватар для pixel
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
27.10.2011, 10:05  [ТС]
спасибо за ссылку но это не то. вот пароль который он сгенерил - &.?jsZv)&2 j и s в нижнем регистре. Мне нужно сделать что бы шло чередование - Большая буква, маленькая буква, цифра и т.д. Но это не значит что повторение строгое может быть Большая буква, маленькая буква, цифра, маленькая буква, цифра, большая буква и т.д.
0
48 / 48 / 2
Регистрация: 25.05.2011
Сообщений: 277
27.10.2011, 13:33
Переделал....может так подойдет:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  echo generate_password(10);
 
  function generate_password($number)
  {
    $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);
      if ($index%2 == 0)
      {
          $pass .= strtolower($arr[$index]);
      } else
      {
          $pass .= strtoupper($arr[$index]);
      }
      
    }
    return $pass."<br>";
  }
1
 Аватар для pixel
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
27.10.2011, 21:09  [ТС]
спасибо за код, но для того что бы он выполнял то что мне нужно вместо
PHP
1
if ($index%2 == 0)
нужно поставить
PHP
1
if ($i%2 == 0)
Добавлено через 3 часа 31 минуту
Позже. Хотя тоже есть проблемы - иногда появляются две цифры подряд
0
 Аватар для YVSIK
26 / 26 / 3
Регистрация: 03.04.2010
Сообщений: 206
27.10.2011, 21:15
вообще зачем такой большой код то ? всё уже давненько придумано
почитай книжку Кузнецова и Семирядцева(кажется так авторов зовут)
берешь любой набор знаков и обрабатываешь их md5 потом обрезаешь на нужную дллину
все !!
0
 Аватар для pixel
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
27.10.2011, 21:22  [ТС]
громоздкость кода при генерации пароля, который нужен только при регистрации не важна. важна функциональность.
0
48 / 48 / 2
Регистрация: 25.05.2011
Сообщений: 277
28.10.2011, 08:38
YVSIK, Код взят как раз из этой книги) только ТС надо, чтобы не было подряд двух заглавных или маленьких букв.
0
33 / 33 / 12
Регистрация: 18.05.2010
Сообщений: 99
28.10.2011, 15:18
Если на сервере установлена утилита pwgen, то пароль легко сгенерировать с её помощью:
PHP
1
2
exec('pwgen 7', $pwd);
echo array_pop($pwd);
,

где 7 -- длина пароля.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
28.10.2011, 18:50
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function PassGen($len) {
    $len = (int)$len;
    $Chars = array(
        'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'abcdefghijklmnopqrstuvwxyz',
        '0123456789',
        '`~!@#$%^&*()-_=+[]{};:\'"\\|/?,.<>',
    );
    $MaxType = count($Chars) - 1;
    $result = '';
    for ($i = 0; $i < $len; $i++) {
        $type = mt_rand($i ? 1 : 0, $MaxType);
        $t = $Chars[$type];
        if ($type) {
            unset($Chars[$type]);
            array_unshift($Chars, $t);
        }
        $result .= $t[mt_rand(0, strlen($t) - 1)];
    }
    return $result;
}
1
 Аватар для pixel
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
28.10.2011, 19:45  [ТС]
подскажите а почему у меня может не работать escapeString? Пробую проверить в БД наличие логина по следующей схеме:
PHP
1
2
3
$query2="SELECT COUNT(*) FROM `users` WHERE `login` = '".escapeString($Login)."'";
echo '<br />'.$query2;
$res = mysql_query($query2) or die (mysql_error());
если escapeString оставить - echo не срабатывает, а если убрать, то срабатывает - значит что то именно с escapeString - как же мне тогда загонять в БД логин?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
28.10.2011, 20:04
Что еще за escapeString() ? Используйте mysql_real_escape_string()
1
 Аватар для pixel
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
29.10.2011, 16:57  [ТС]
т.е. использование mysql_real_escape_string() 100% избавит от SQL-инъекций?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
30.10.2011, 06:29
Цитата Сообщение от pixel Посмотреть сообщение
т.е. использование mysql_real_escape_string() 100% избавит от SQL-инъекций?
Да, если правильно применять.
0
 Аватар для pixel
26 / 19 / 5
Регистрация: 19.05.2009
Сообщений: 2,290
30.10.2011, 09:28  [ТС]
блин, опять условности. вот так я правильно применяю?
SQL
1
2
$query2 = "SELECT COUNT(*) FROM `".DBPREFIX."users` WHERE `login`='".mysql_real_escape_string($Login)."' and `password`='".
     md5(mysql_real_escape_string($Password).SALT)."'";
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
30.10.2011, 09:48
Цитата Сообщение от pixel Посмотреть сообщение
блин, опять условности. вот так я правильно применяю?
Да, все правильно. Условности в другом заключаются. Данная функция также полагается на кодировку соединения, установленную через mysql_set_charset(). Также mysql_real_escape_string() может работать только при установленном соединении с MySQL сервером. Если соединения еще не было установлено, то оно будет установлено принудительно: неявный вызов mysql_connect() без параметров - т.е. вызов с какими-то левыми дефолтными логином и паролем, что ничем хорошим уж точно Вам не сулит.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2011, 09:48
Помогаю со студенческими работами здесь

Генератор пароля
Добрый вечер. Нужно написать программу-генератор паролей. Программа должна выполнять следующие действия: a) Ввод идентификатора...

Генератор пароля
Помогите правильно записать код (выдает ошибку)

Генератор пароля пользователей
Реализовать программу – генератор паролей пользователей. Программа должна формировать случайную последовательность символов длины L = 6,...

Генератор пароля (сложно)
Думаю, что задача очень и очень сложная, но может кто-то всё же знает, как сделать это... В общем, есть генератор пароля из 6 символов...

Генератор пароля с разной длиной
Доброго дня. Помогите написать генератор пароля с изменяемой длинной и так чтобы количество цифр было равно половине пароля. если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru