пароль array_rand

<?php
$abc = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o','p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O','P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');

for ($i=0; $i < 6; $i++)
    {   
        $pass = array_rand($abc);
        echo $abc[$pass];
    }

?>

Мне нужно отправить электронное письмо с сгенерированным проходом, но я должен сгенерировать проход, чтобы добраться до некоторой переменной, но я не знаю, как это сделать.


person user2052011    schedule 07.02.2013    source источник
comment
@Dagon Не могли бы вы перечислить эти тысячи? ;)   -  person Kermit    schedule 07.02.2013
comment
Это очень простая вещь php... класс уровня 100... как получить доступ к переменной.   -  person bretterer    schedule 07.02.2013
comment
stackoverflow.com/search?q=php+random+password первые 623, остальные доступны в письменном виде. запрос   -  person    schedule 07.02.2013
comment
лол, да, это программирование 101   -  person keyboardSmasher    schedule 07.02.2013
comment
Поисковые системы — ваши друзья.   -  person Gor    schedule 07.02.2013
comment
Люди все еще отправляют ответы... Я думаю, это единственный способ поднять свою репутацию здесь: повторять одну и ту же информацию снова и снова вздох   -  person keyboardSmasher    schedule 07.02.2013


Ответы (3)


Я просто использую это: $newpass = substr(md5(uniqid()),0,8);

Это не особенно безопасно, но работает, и пользователи должны менять свои пароли, как только они входят в систему со сбросом пароля. Дело в том, что это более эффективно, чем циклы и доступ к символам.

person Niet the Dark Absol    schedule 07.02.2013
comment
+1. base64_encode(md5(uniqid())) может дать сложный пароль. - person AKS; 07.02.2013
comment
@AyeshK Но длинный. Вы действительно хотите, чтобы вашим пользователям приходилось вводить 45-символьный пароль только для того, чтобы вернуться в свою учетную запись? - person Niet the Dark Absol; 07.02.2013
comment
Извините, я хотел поместить туда ваш substr(). substr(base64_encode(md5(uniqid())),0,8); - person AKS; 07.02.2013
comment
@AyeshK - Для чего нужен base64_encode? MD5 уже вернет закодированное значение, так что вы ничего не получите. - person martinstoeckli; 08.02.2013
comment
md5 возвращает только строчные английские буквы и цифры. base64_encode также даст вам символы верхнего регистра, что усложнит пароль. - person AKS; 08.02.2013

Вы можете использовать функцию iv расширения mcrypt для получения случайных данных из системы. Поскольку это битовый поток, его нужно как-то закодировать, чтобы на экране не было мусора. Кодировки Base64 должно быть достаточно. Поскольку строки в кодировке base64 примерно на 33% длиннее, вам необходимо сократить строку до нужной длины.

Вот простой пример:

function password($length = 10) {
    $random = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
    $base64 = base64_encode($random);
    return substr($base64, 0, $length);
}
var_dump(password(10));
person Sverri M. Olsen    schedule 07.02.2013

Используйте этот фрагмент кода, который я написал несколько дней назад.

function genText($length) {
    $out_str = '';
    $p_chars = "AGHACEFHJKRSTVXY124579aghacefhjkrstvxy"; // can be any set of characters
    while (strlen($out_str) < $length) {
        $out_str.= $p_chars{rand() % (strlen($p_chars))};
    }
    return $out_str;
}

$your_variable = genText(8);
person Amir Bilal    schedule 07.02.2013