更换$ _GET,使其从命令行工作(Replacing $_GET to make it work

2019-09-28 13:49发布

目前我有这个小脚本,它可以检查一个域名是免费的。 它从浏览器的工作原理,当你键入check.php?域= 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>";
}
?>

Answer 1:

更改

$d = $_GET['domain'];

至:

$d = $argv[1];

......并把它在这样的命令行:

php /path/to/script.php "www.domaintocheck.com"


Answer 2:

另写脚本读取命令指定参数和把它们放在$ _GET数组,然后包括这个文件。

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

include 'yourscript.php';

或者只是把该位在顶部(副本)文件



Answer 3:

更换...

$d = $_GET['domain'];

与...

$d = $argv[1];

对于一个命令行版本。

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



Answer 4:

这就是一个重复: PHP通过$ _GET在Linux命令提示符

在Linux的另一种可能的方式是使用卷曲(localhost更改您的服务器的域名):

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

最后,简单笨方法是检查是否$ _GET [“域”]或$的argv [1]或getopt的(“域:”)被设置。

这样一来你的脚本都将来自HTTP请求或命令行工作。



文章来源: Replacing $_GET to make it work from command line