一页/刷新多个随机数

时间:2011-10-20 01:47:12

标签: php

我正在尝试在一个页面上生成多个唯一哈希,并且此脚本无效。我一直只得到一个数字,而不是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>

5 个答案:

答案 0 :(得分: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(); ?>

答案 1 :(得分:2)

每次需要新值时重新生成$hash。否则,显然,如果值永远不会改变,那么无论您查看多少次,您为第一个随机值赋值的变量都将具有相同的值。

答案 2 :(得分:2)

您只需设置一次$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();

如果种子不是不可变的,可以通过参数传递它:

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...' );

答案 3 :(得分: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(); ?><br>

答案 4 :(得分: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>';
}

?>