1

我在我的 php 脚本中使用 random.org 来生成这样的随机数:

    function getToken($length){
        $r = explode('
',file_get_contents('http://www.random.org/integers/?num='.$length.'&min=0&max=9&col=1&base=10&format=plain'));
        $string = '';
        foreach ( $r as $char ) $string.=$char;
        return $string;
    }

但是我的大学网拒绝了这样的查询,所以当我使用大学 wifi 测试我的项目时,我没有生成随机数,这意味着麻烦。

所以,我在使用这个功能之前,需要检查我是否可以查询 random.org 或不这样:

    if( site is accessible ) return getToken();
    else return false;

检查可访问性的最佳方法是什么?

我自己试过:

    file_get_contents();

但它会发出警告,当它失败时,

    dns_get_record();

但我不知道我是否可以相信它,如果它只检查 dns 名称。请帮忙!

PS一个pinging技术可能会证明有用......

4

1 回答 1

1

您可以运行file_get_contentswith@来抑制错误,并在它没有给您随机数时简单地返回,结果如下:

function getToken($length){
    $number = @file_get_contents('http://www.random.org/integers/?num='.$length.'&min=0&max=9&col=1&base=10&format=plain');
    if($number === false) return null;
    $r = explode('',$number);
    $string = '';
    foreach ( $r as $char ) $string.=$char;
    return $string;
}

话虽如此,我严重怀疑您是否真的需要使用 random.org 来生成随机数。PHP 自己的伪随机生成器函数包括openssl_random_pseudo_bytes据说可以生成“加密强”的伪随机数:

http://www.php.net/manual/en/function.openssl-random-pseudo-bytes.php

于 2013-04-26T19:53:10.680 回答