0

ユーザーがエージェントに送信したり、サイトに戻ったりするときに検索または保存するために使用できる参照番号を生成したいと思います。

私が持っているのはこれです->私が欲しいもの:

 '45'     ->  REF4903295762
 '421'    ->  REF3425436346
 '1250'   ->  REF4695039476

'REF'文字列を追加することは問題ではありませんが、IDから偶数の長さの数字や文字を生成し、それをデコード可能にすることが重要です。

PSURL短縮サービスの機能に沿ったもの。

4

2 に答える 2

0

ええと...通常、REFの後の数字IDです。ただし、ランダムにしたい場合は、「Ref」という別の列を作成します。乱数を作成します

$string = rand(0, 9999999);

次に、MySQLを使用して、使用されていないことを確認します。

$used = true;
while($used)
{
    $string = rand(0, 9999999);
    $query = mysql_query("SELECT * FROM `table` WHERE `REF`='$string'");
    if(!mysql_num_rows($query))
    {
        $used = false;
    }
}

その後、挿入します。そして、将来はその列で検索できます。それがmysql_num_rowsの使用方法であるかどうかを確認してください。ただし、その前にmsyql_fetch_arrayを使用する必要があるかどうかはわかりません。

于 2012-08-08T11:29:48.887 に答える
0

私が作成したこのクラス/CI_Libraryを使用できます。

<?php
class Xref{
    private $key = 24040410;//secret key - change to your own key (int only)[length = 8]
    private $limit = 67000000;//num limit [do not change]

    function encrypt($num){
        if($num > $this->limit){
            return false;
        }else{
            $binaryString = $this->toBinaryString($num);
            $reversedBinaryString = $this->reverseString($binaryString);
            $reversedBinaryInt = bindec($reversedBinaryString);
            $xor = $this->key ^ $reversedBinaryInt;
            return str_pad($xor, 8, '0', STR_PAD_LEFT);
        }
    }
    function decrypt($str){
        $xor = $this->key ^ intval($str);

        return bindec($this->reverseString($this->toBinaryString($xor)));
    }

    private function toBinaryString($num){
        return str_pad(decbin($num), 26, '0', STR_PAD_LEFT);
    }
    private function reverseString($str){
        return strrev($str);
    }
}
?>

encrypt($ID)「ランダムな」数値に変換しdecrypt($str)、IDを取り戻すために使用するだけです。

于 2013-01-09T07:00:52.220 に答える