php - 生成随机字节不适用于托管域
问题描述
我为自动用户名字段生成随机字节的代码有问题。当我在我的本地主机上尝试它时它是成功的:
但是当我通过托管域尝试它时,它是不成功的:
这是我的代码:
<div class="form-group">
<label for="input" class="col-sm-4 control-label">Username :</label>
<div class="col-sm-6">
<input type="text" name="username" id="input" class="form-control" readonly="" value="<?php $bytes=random_bytes(5); echo bin2hex($bytes);?>" required="required">
</div>
</div>
这有什么问题?有没有更好的方法来解决我的问题?
解决方案
看openssl_random_pseudo_bytes(5)
,在 PHP 5.3+ 中工作
http://php.net/manual/en/function.openssl-random-pseudo-bytes.php
<div class="form-group">
<label for="input" class="col-sm-4 control-label">Username :</label>
<div class="col-sm-6">
<input type="text" name="username" id="input" class="form-control" readonly="" value="<?php $bytes=openssl_random_pseudo_bytes(5); echo bin2hex($bytes);?>" required="required">
</div>
</div>