我想生成一个参考号,用户可以使用该号码进行搜索或保存,以便将其发送给代理或返回站点。
我拥有的是这个 - >我想要的是什么:
'45' -> REF4903295762
'421' -> REF3425436346
'1250' -> REF4695039476
添加'REF'字符串不是问题,但是从ID生成偶数长度数字和/或字母并使其可解码是重要的一点。
P.S。符合URL缩短程序的内容。
答案 0 :(得分: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
答案 1 :(得分: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。