2017-11-11 1541 views
0

我有我的index.php文件下面的代碼給人一種獨特的數字ID的名稱

<?php 
$name = $_GET['name']; 
$id = rand(0,100); // i need a unique id from the name than random 
?> 

我想要做的是,當有人提供他們的姓名,0和100之間的唯一數字ID應該顯示。刷新頁面後不應更改。如果用戶提供名稱「John」,id應該是「99」(或任何其他不會更改的號碼) 如果用戶提供名稱「david」,則id應該是「5」(或任何其他號碼不會改變)

我試過使用MD5,但它會產生更多的數字,我不能使用它,因爲我是一個PHP新手。

對不起,我的英語不好。

+0

那麼這段代碼有什麼問題?這應該給你隨機數。你有刷新或什麼問題? 'md5'不是隨機的,它會爲每個名稱生成相同的值(並且對於不同的名稱可能具有相同的值(https://crypto.stackexchange.com/questions/1434/are-there-two-known-strings哪位-具有最相同-MD5哈希值))。 – chris85

+0

超過2-3位數字有什麼問題? –

回答

0

rand()函數只給你隨機數,但它永遠不會給你任何單詞的唯一編號。最好的解決方案是使用md5,它將您的名字轉換爲總是唯一的 字符串。如果您需要md5的幫助,請告訴我。

+0

我需要生成一個只包含數字(0到100之間)的md5散列。必須有機會獲得每個名字的所有100個號碼。 –

+0

md5無法生成0到100之間的數字,如果使用rand(),則該數字對於每個名稱都不是唯一的。 –

0

在數組中創建一個數組的數組,然後我們對其進行洗牌。獲取混洗陣列的元素。

function generateRandomNumberInRange($min, $max, $quantity) { 
    $randomNumberArray = range($min, $max); 
    shuffle($randomNumberArray); 
    return array_slice($randomNumberArray, 0, $quantity); 
} 

echo "<pre>"; 
$numbersArray = generateRandomNumberInRange(0, 100, 101); 
print_r($numbersArray); 
echo "</pre>" 

for ($i = 0; $i <= 100; $i++) { 
    echo $numbersArray[$i] . "<br/>"; 
} 

然後,您將名稱分配給唯一和隨機數。