1

現在、ドメイン名が無料かどうかを確認できるこの小さなスクリプトがあります。check.php?domain=xxxx.com と入力すると、ブラウザから機能し、無料かどうかを確認できます。

$_GET が使用されているため、ブラウザからのみ機能し、コマンド ラインからは機能しません。

PHP のマニュアルには、これを実現するには $argv または getopt() を使用する必要があると書かれています。試してみましたが、スクリプトが機能しなくなります。

次のコードをコマンドラインから動作させるにはどうすればよいですか?

<?php
include_once('/home/xxx/API.php');  
$CClient = new XCApi();
$CClient->isAvailable();
$d = $_GET['domain'];
ob_implicit_flush(1);

for ($i = 0; $i < 60000; ++$i) {

$domainResult = $CClient->checkDomainAvailability( new XDomain( $d ) );

if ( $domainResult->getStatus() == "domain_available" ) {
    echo $i . ". Domain " . $d . " is free (checked: " . date("Y-m-d H:i:s") . ")<br />";

    $_GET['domain'] = $d;
    include_once('Register.php');
    exit;

} 
elseif ( $domainResult->getStatus() == "domain_unavailable" ) {
    echo $i . ". Domain " . $d . " is unavailable (checked: " . date("Y-m-d H:i:s") . ")<br />";
}
else {
    echo $i . ". Domain " . $d . " is unknown (checked: " . date("Y-m-d H:i:s") . ")<br />";
}
echo"<pre>";
print_r($domainResult);
echo"</pre>";
}
?>
4

4 に答える 4

3

コマンド引数を読み取り、それらを $_GET 配列に入れる別のスクリプトを作成してから、このファイルを含めます。

#!/...
<?php
$_GET = array(
'domain' => $argv[1]
);

include 'yourscript.php';

または、そのビットをファイル (のコピー) の先頭に置くだけです

于 2012-05-06T17:06:07.063 に答える
3

変化する

$d = $_GET['domain'];

に:

$d = $argv[1];

...そして、次のようにコマンドラインで呼び出します:

php /path/to/script.php "www.domaintocheck.com"
于 2012-05-06T17:07:03.997 に答える
0

交換...

$d = $_GET['domain'];

と...

$d = $argv[1];

コマンドライン版の場合。

http://php.net/manual/en/reserved.variables.argv.php

于 2012-05-06T17:06:10.173 に答える
0

これは次の複製です: Linux コマンド プロンプトで $_GET を渡す PHP

Linux で考えられるもう 1 つの方法は、curl を使用することです (localhost をサーバーのドメイン名に変更します)。

curl http://localhost/check.php?domain=xxxx.com

最後に、単純でばかげた方法は、$_GET['domain'] または $argv[1] または getopt('domain:') が設定されているかどうかを確認することです。

そうすれば、スクリプトは http リクエストまたはコマンド ラインの両方から機能します。

于 2012-05-06T17:18:55.930 に答える