0
<?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];
    }

?>

生成されたパスを含む電子メールを送信する必要がありますが、生成されたパスをいくつかの変数に取得する必要がありますが、今は方法がわかりません。

4

3 に答える 3

2

mcrypt エクステンションの iv 関数を使用して、システムからランダム データを取得できます。これはビットストリームであるため、何らかの方法でエンコードして、画面上でゴミにならないようにする必要があります。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));
于 2013-02-07T19:20:41.863 に答える
2

私はこれを使用します:$newpass = substr(md5(uniqid()),0,8);

特に安全というわけではありませんが、十分に機能し、ユーザーはパスワードをリセットしてログインするとすぐにパスワードを変更する必要があります。ポイントは、ループや文字アクセスよりも効率的であるということです。

于 2013-02-07T19:17:21.450 に答える
0

数日前に書いたこのコード スニペットを使用してください。

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);
于 2013-02-07T19:17:01.450 に答える