我想生成一个参考编号,当用户想要将其发送给代理或返回到站点时,可以使用该参考编号进行搜索或保存。
我拥有的是这个 ->我想要的:
'45' -> REF4903295762
'421' -> REF3425436346
'1250' -> REF4695039476
添加"REF"字符串不是问题,但从 ID 生成偶数长度的数字和/或字母并使其可解码是重要的一点。
附言与 URL 缩短器的作用一致。
嗯...通常,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
您可以使用我创建的这个类/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。