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 ping テクニックが役に立つかもしれません...

4

1 に答える 1

1

with を実行file_get_contents@てエラーを抑制し、乱数が得られない場合に単純に返すと、次のようになります。

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 に答える