在PHP中使用CURL API模拟浏览器HTTP请求方法

时间:2012-12-04 23:15:30

标签: php curl

这是非常基本的,但在我出错的地方(学习如何实现RESTful Web服务)我感到很困惑。上下文是,我有一个简单的simulator.php文件,它模拟对我的本地PHP文件之一的HTTP请求。本地PHP文件(index.php)除了返回带有值的变量外什么都不做。所以它非常像这样:

<?php
$variable = 'hello';
return $variable;
?>

我的simulator.php文件包含以下内容:

?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/kixeye/index.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
var_dump($contents);
curl_close($ch);
?>

但是,var_dump($ contents)并没有完全吐出从index.php返回的$ variable值。我不太明白为什么不。

2 个答案:

答案 0 :(得分:3)

return函数之外的东西实际上不会做任何事情。您所做的cURL请求将从请求的页面返回HTML响应,因此您真正想做的是echo响应,而不是使用return

只需将index.php脚本更改为:

<?php
$variable = 'hello';
echo $variable;
?>

第二个脚本中的var_dump()将输出hello

答案 1 :(得分:0)

$contents变量将包含由Curl完成的http请求返回的网页。如果您只需要index.php中的一个值,则只需回显它,其值将以$contents作为字符串结束。

如果要检索多个变量,可以尝试对它们进行json编码,然后在index.php中回显结果。然后,您必须通过json解码$contents在第二个脚本中执行相反的操作。

或者,您可以在第一个脚本中生成并回显有效的PHP代码,然后在第二个脚本中对其进行评估,但这是非常糟糕的做法(强烈建议不要使用eval。)

请参阅: