我有什么原因导致致命错误:调用未定义函数iptocountry()
在$two_letter_country_code=iptocountry($ip);
更新:我搬了$two_lettter_country_code=ipcountry($ip)
到底。 p>
现在我收到了这个错误:
警告: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();
包含文件:名称为0到200
<?php
//0-16777215
$ranges=Array(
"0" => array("16777215","ZZ"),
);
?>
答案 0 :(得分:6)
来自User-defined functions上的PHP文档:
在引用函数之前不需要定义函数,除了,当有条件地定义函数时,如下面的两个例子所示。
更准确地说,功能声明是&#34;悬挂&#34; (在声明之前可以使用它们)当它们在全局空间内声明时(即不在其他函数中),但仅在这种情况下。
您的代码可以在全局空间中工作,但它可能位于函数内部,因此forward reference错误。
为了说明,下面的代码正确地调用了global_function
,但得到了一个&#34;未定义的函数&#34;尝试致电also_global
时出错:
global_function();
function global_function()
{
also_global();
function also_global()
{
//...
}
}
答案 1 :(得分:0)
正如其他人所建议的那样,您在声明之前调用该函数。
最好将您可以在其他PHP脚本中使用的函数定义在单独的文件中,如helpers.php
,并在PHP脚本上编写require_once helper.php
,这样您就可以在任何地方使用您的函数