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