2011-10-20 82 views
0

我試圖在一個頁面上生成多個唯一的哈希值,並且此腳本無法正常工作。我一直只得到一個重複3次而不是3個唯一數字的數字。我知道我可以創建hash1,hash2和hash3函數,但這是太多的代碼。一個頁面上的多個隨機數/刷新

<?php 
    $seed = 'JvKnrQWPsThuJteNQAuH'; 
    $hash = sha1(uniqid($seed . mt_rand(), true)); 
    $hash = substr($hash, 0, 10); 
?> 

<? echo $hash; ?><br> 
<? echo $hash; ?><br> 
<? echo $hash; ?><br> 
+1

似乎有一個哈希值與'$ hash'變量只有一個分配。爲什麼每個'echo'都會有所不同? –

回答

4

你可以做一個函數,然後調用,每次

<?php 

function makeHash(){ 
    $seed = 'JvKnrQWPsThuJteNQAuH'; 
    $hash = sha1(uniqid($seed . mt_rand(), true)); 
    $hash = substr($hash, 0, 10); 

    return $hash; 
} 

?> 


<?php echo makeHash(); ?><br> 

<?php echo makeHash(); ?><br> 

<?php echo makeHash(); ?> 
2

重新生成$hash你需要一個新的價值。否則,顯然,如果值永遠不會改變,那麼無論您查看了多少次,您分配第一個隨機值的變量將具有相同的值。

2

您只設置$hash的值一次,然後再調用該值三次。它看起來像你對我要創建生成一個唯一值的函數:

function hash($seed = 'defaultval') { 
    $hash = sha1(uniqid($seed . mt_rand(), true)); 
    return substr($hash, 0, 10); 
} 

echo hash('sEedOne'); 
echo hash('seEDtWO'); 
echo hash('SEed...'); 
+0

嗯...爲什麼你和@Robot Woods的答案有相同的'$ seed'?這是來自PHP手冊頁嗎? –

+0

@JaredFarrish這是OP中提供的種子。看來我們都複製/粘貼/修改了作者的代碼。 – Sampson

+0

是的。好吧,我很尷尬。 (請注意,我確實贊成...) –

2

function hash(){ 
    $seed = 'JvKnrQWPsThuJteNQAuH'; 
    $hash = sha1(uniqid($seed . mt_rand(), true)); 
    return substr($hash, 0, 10); 
} 

echo hash() . '<br />'; 
echo hash() . '<br />'; 
echo hash(); 

如果種子並非是一成不變的,你可以在通過一個參數傳遞

你需要將你的代碼的一部分作爲一個函數來多次調用它。

function hash(){ 
    $seed = 'JvKnrQWPsThuJteNQAuH'; 
    $hash = sha1(uniqid($seed . mt_rand(), true)); 
    return substr($hash, 0, 10); 
} 

<? echo hash(); ?><br> 

<? echo hash(); ?><br> 

<? echo hash(); ?><br> 
+0

我在這裏夢見'$ seed'變量嗎? –

+0

@JaredFarrish哈哈,種子來自OP – donutdan4114

+0

就是這樣。呃...我很尷尬。我在想... –

0
<?php 

function make_hash($seed = 'JvKnrQWPsThuJteNQAuH', $length = 16) { 
    if (16 > $length) $length = 16; 
    return substr(sha1(uniqid($seed . mt_rand(), true)), 0, $length); 
} 

?> 


<?php 

for ($i=0; $i<10; $i++) { 
    echo make_hash('yourtexthere', 25); 
    echo '<br>'; 
} 

?> 
相關問題