Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как осуществить генерирование строки активации?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
prog90
Отправлено: 14 Августа, 2011 - 21:32:16
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Нашел в интернете такую функцию:
function generatePassword($length = 8){
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
Хорошо ли она будет работать или есть стандартные функции в php для этого? Например, не сможет ли кто-то активировать аккаунт после регистрации, подобрав строку? Усилит ли уникальность кода, если еще применить md5 к cтроке, которую возвращает функция выше?
 
 Top
OrmaJever Модератор
Отправлено: 14 Августа, 2011 - 21:42:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




стандартных нет, такой вариант будет работать нормально только лутше rand заменить на mt_rand()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
White
Отправлено: 14 Августа, 2011 - 21:43:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




использую для этого такую функцию
PHP:
скопировать код в буфер обмена
  1. function generate($length) {
  2.         $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUWXYZ';
  3.         for ($i=0; $i<$length; $i++) {
  4.                 $result .= $characters[mt_rand(0, strlen($characters))];
  5.         }
  6.         return $result;
  7. }


-----
if(time()>1356048000) die();
 
 Top
LIME
Отправлено: 14 Августа, 2011 - 21:52:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




White ваш вариант принципиально не отличается
а вот strlen($characters) из цикла всетаки вынести бы неплохо ))
 
 Top
White
Отправлено: 14 Августа, 2011 - 21:54:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




LIME да наверное, это к слову про mt_rand()


-----
if(time()>1356048000) die();
 
 Top
LIME
Отправлено: 14 Августа, 2011 - 21:55:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




хотя длина строки в пхп хранится а не вычисляется так что не особо ускорит
 
 Top
prog90
Отправлено: 15 Августа, 2011 - 08:15:27
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Спасибо за ответы.
Помогло
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB