PHP:file_get_contents在函数内部不起作用

时间:2013-06-15 00:25:29

标签: php file-get-contents

PHP的file_get_contents工作正常但不在函数内部。但是,在将其移动到函数并在没有任何其他更改的情况下调用该函数之后,代码将停止工作。

这(功能之外)有效......

$cpuser = 'exampl';
$cppass = 'PASSWORD';
$cpdomain = 'example.com';
$cpskin = 'darnkids';
$emailname = 'darnkids';
$emaildomain = 'example.com';
$password = 'PASSWORD';
$quota = '0';

$result1 = file_get_contents("https://$cpuser:$cppass@$cpdomain:2083/frontend/$cpskin/mail/doaddpop.html?email=$emailname&domain=$emaildomain&password=$password&quota=$quota");
echo $result1;

这个相同的代码(在函数内部)不起作用......

$cpuser = 'exampl';
$cppass = 'PASSWORD';
$cpdomain = 'example.com';
$cpskin = 'darnkids';
$emailname = 'darnkids';
$emaildomain = 'example.com';
$password = 'PASSWORD';
$quota = '0';

function account_create()
{
 $result1 = file_get_contents("https://$cpuser:$cppass@$cpdomain:2083/frontend/$cpskin/mail/doaddpop.html?email=$emailname&domain=$emaildomain&password=$password&quota=$quota");
 echo $result1;
}

account_create();

无论是什么,我都需要能够捕获响应。为什么file_get_contents在函数内部不起作用,如何让它在函数内部工作?

3 个答案:

答案 0 :(得分:3)

这与file_get_contents()无关。该函数在其范围内没有那些全局变量。

您需要使用global关键字或$GLOBALS数组来提供它们,或者更好的是,将它们放在您的函数范围内。

答案 1 :(得分:1)

当您将对file_get_contents的调用移动到函数中时,用于定义文件名的变量是本地版本,这些版本未在您的函数中定义。将变量移动到函数中,将它们作为参数传递。

答案 2 :(得分:1)

正如@Alex所述,全局变量不可用。如果您不想定义全局变量(无论出于何种原因),请确保您的函数包含第一个片段中的所有数据。像这样的东西。

function account_create(){
$cpuser = 'exampl';
$cppass = 'PASSWORD';
$cpdomain = 'example.com';
$cpskin = 'darnkids';
$emailname = 'darnkids';
$emaildomain = 'example.com';
$password = 'PASSWORD';
$quota = '0';
$result1 = file_get_contents("https://$cpuser:$cppass@$cpdomain:2083/frontend/$cpskin/mail/doaddpop.html?email=$emailname&domain=$emaildomain&password=$password&quota=$quota");
 echo $result1;
}

account_create();

如果这对您的用例不起作用,您可以始终将部分或全部数据传递给该函数。比如...

function account_create($cp_user, $cppass){
    ...
}

account_create('example1', 'PASSWORD');

您可以选择许多选项。希望这有点帮助。