首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当我调用她7.0时,php会给我的函数增加几个参数

当我调用她7.0时,php会给我的函数增加几个参数
EN

Stack Overflow用户
提问于 2018-06-15 18:26:45
回答 2查看 108关注 0票数 -1

当我编译时,我的代码中有一个错误:

查询致命错误:未捕获查询:函数getData::

ArgumentCountError()的参数太少,在第19行的C:\xampp\htdocs\testVisitor\index.php中传递的参数为0,在QueryWhoisServer跟踪中应恰好为2:#0 C:\xampp\htdocs\testVisitor\index.php(19):getData->QueryWhoisServer() #1 {ArgumentCountError}在第72行的C:\xampp\htdocs\testVisitor\Model\getData.php中抛出

我知道从php 7.0开始我需要传递参数,但是参数不被识别…

下面是我的代码:

index.php:

代码语言:javascript
复制
require_Once('Model/getData.php');
require_Once('Controller/writeData.php');

$getData = new getData();
$writeData =new  writeData();

$getData->get_ip();
$getData->LookupIP($domain);
$getData->ValidateIP($domain);
$getData->QueryWhoisServer();



if($domain && $pageEnCours != preg_match("#localhost/testVisitor/$#",$pageEnCours)) {
    $domain = trim($domain);

    if($getData->ValidateIP($domain)) {
        $result = $getData->LookupIP($domain);
       $writeData->write_domain($result);
    }

    else{
        write_error();
    };

}
echo $domain;
echo "cc";

和getData.php:

代码语言:javascript
复制
$urlPart1 = $_SERVER['HTTP_HOST'] ;
$urlPart2 =  $_SERVER['REQUEST_URI'];
$pageEnCours = $urlPart1 .= $urlPart2;
$domain ='0.0.0.0';
class getData
{

// For the full list of TLDs/Whois servers see http://www.iana.org/domains/root/db/ and http://www.whois365.com/en/listtld/
    /**
     * Récupérer la véritable adresse IP d'un visiteur
     */
    function get_ip() {
        // IP si internet partagé
        global $domain;
        if (isset($_SERVER['HTTP_CLIENT_IP'])) {
            return $domain =$_SERVER['HTTP_CLIENT_IP'];
        }
        // IP derrière un proxy
        elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            return $domain=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        // Sinon : IP normale
        else {
            return $domain=(isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
        }
    }

    function LookupIP($ip) {
        $whoisservers = array(
            //"whois.afrinic.net", // Africa - returns timeout error :-(
            //"whois.lacnic.net", // Latin America and Caribbean - returns data for ALL locations worldwide :-)
            //"whois.apnic.net", // Asia/Pacific only
            //"whois.arin.net", // North America only
            //"whois.ripe.net" // Europe, Middle East and Central Asia only
        );
        $results = array();
        foreach($whoisservers as $whoisserver) {
            $result = QueryWhoisServer($whoisserver, $ip);

            if ($result && !in_array($result, $results)) {
                $results[$whoisserver] = $result;
            }

        }
        $res = "RESULTS FOUND: " . count($results);
        foreach($results as $whoisserver=>$result) {
            $res .= "\n\n-------------\nLookup results for " . $ip . " from " . $whoisserver . " server:\n\n" . $result;
        }
        return $res;
    }
    function ValidateIP($ip) {
        $ipnums = explode(".", $ip);
        if(count($ipnums) != 4) {
            return false;
        }
        foreach($ipnums as $ipnum) {
            if(!is_numeric($ipnum) || ($ipnum > 255)) {
                return false;
            }
        }
        return $ip;
    }

    function QueryWhoisServer($whoisserver , $domain ) {
        $port = 43;
        $timeout = 10;
        $fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
        //if($whoisserver == "whois.verisign-grs.com") $domain = "=".$domain; // whois.verisign-grs.com requires the equals sign ("=") or it returns any result containing the searched string.
        fputs($fp, $domain . "\r\n");
        $out = "";
        while(!feof($fp)){
            $out .= fgets($fp);
        }
        fclose($fp);
        $res = "";
        if((strpos(strtolower($out), "error") === FALSE) && (strpos(strtolower($out), "not allocated") === FALSE)) {
            $rows = explode("\n", $out);
            foreach($rows as $row) {
                $row = trim($row);
                if(($row != '') && ($row{0} != '#') && ($row{0} != '%') && ($row != preg_match("#^netname|^descr|^country|^person|^address|^phone#",$row ))) {
                    $res .= $row."\n";
                }
            }
        }
        return $res;
    }

}
EN

回答 2

Stack Overflow用户

发布于 2018-06-15 18:31:55

在C:\xampp\htdocs\testVisitor\index.php中传递给函数getData::

的参数太少,0

$getData->QueryWhoisServer();未提供任何参数。

票数 0
EN

Stack Overflow用户

发布于 2018-06-15 21:03:34

在您的函数中:

代码语言:javascript
复制
function QueryWhoisServer($whoisserver , $domain ) {
        $port = 43;
        $timeout = 10;
        $fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout)
        fputs($fp, $domain . "\r\n");

$fp需要$whoisserver$port$timeout

$port$timeout在函数中定义

但是当你调用这个函数时,你需要指定$whoisserver$domain (域在fput中使用),

这将是类似于:

代码语言:javascript
复制
$getData->QueryWhoisServer($whoisserver, $domain);

也在你的函数中

代码语言:javascript
复制
LookupIP($domain); 

结果使用了函数QueryWhoisServer,因此请尝试获取$result

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50873710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档