PHP致命错误; 为用户定义的函数调用未定义的函数

vel*_*Ink 0 php

是否有一个原因,我得到致命错误:调用未定义的函数iptocountry()

在线 $two_letter_country_code=iptocountry($ip);

更新:我搬到$two_lettter_country_code=ipcountry($ip) 了最底层.

现在我收到这个错误:

警告:include(/ ip_files/:: 1.php):无法打开流:没有这样的文件或目录

如何删除::号码前?

if ($_SERVER['HTTP_X_FORWARDED_FOR'])
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
else
    $ip   = $_SERVER['REMOTE_ADDR'];


function iptocountry($ip)
{
    $numbers = preg_split( "/\./", $ip);    

    include("/ip_files/".$numbers[0].".php");
    $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]);    

    foreach($ranges as $key => $value)
    {
        if($key<=$code)
        {
            if($ranges[$key][0]>=$code)
            {
                $country=$ranges[$key][1];break;

        }
    }

    if ($country=="")
    {
        $country="unknown";
    }

    return $country;
}

$two_letter_country_code=iptocountry($ip);

if ($two_letter_country_code=="US")
  die();
Run Code Online (Sandbox Code Playgroud)

包含文件:名称为0到200

<?php
//0-16777215
$ranges=Array(
"0" => array("16777215","ZZ"),
);
?>
Run Code Online (Sandbox Code Playgroud)

Gra*_*ble 6

用户定义函数的 PHP文档:

在引用函数之前不需要定义函数,除非有条件地定义函数,如下面两个示例所示.


更准确地说,当函数声明在全局空间内声明(即不在其他函数内)时,函数声明被"提升"(你可以在声明之前使用它们),但仅限于这种情况.


您的代码可以在全局空间中工作,但它可能在函数内部,因此是前向引用错误.

为了说明,以下代码正确调用,global_function但尝试调用时出现"未定义函数"错误also_global:

global_function();

function global_function()
{
    also_global();

    function also_global()
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)