我想生成一个参考号,当用户想将其发送给代理或返回站点时,用户可以使用该参考号进行搜索或保存。使用PHP中的帖子ID生成参考号
什么我是这样的 - >我想:
'45' -> REF4903295762
'421' -> REF3425436346
'1250' -> REF4695039476
添加“REF”字符串不是一个问题,但是从ID产生偶数长度的数字和/或字母,并具有其解码回是重要的一点。
P.S.一些符合URL缩写者的内容。
我想生成一个参考号,当用户想将其发送给代理或返回站点时,用户可以使用该参考号进行搜索或保存。使用PHP中的帖子ID生成参考号
什么我是这样的 - >我想:
'45' -> REF4903295762
'421' -> REF3425436346
'1250' -> REF4695039476
添加“REF”字符串不是一个问题,但是从ID产生偶数长度的数字和/或字母,并具有其解码回是重要的一点。
P.S.一些符合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
当我有9999998条记录时,该怎么办?这段代码会在找到最后一个备用ID之前循环很长时间。这正是为什么连续的ID是一个好主意。 – DaveRandom 2012-08-08 11:32:07
是的,我知道,这就是为什么我通常使用REF {ID},而不是随机数字,就像我以后开始的那样。有时候即使知道错误的答案也可以帮助你学习,在我看来 – 2012-08-08 11:39:32
您可以使用我创建的这个类/ 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后面。
我要测试这个并让你知道我找到了什么。谢谢。 – Foxinni 2013-01-18 11:43:36
REF45有什么问题? – zerkms 2012-08-08 11:25:33
对于P.S .:我假设shorteners只是在他们的数据库中存储一个键值元组,键与短键和值作为长... 但这不帮助你。 – DerWaldschrat 2012-08-08 11:25:48
为什么不将参考号存储在数据库中?您可以基于当前时间戳生成它。 – 2012-08-08 11:27:27