#1 学海无涯
老师好:
昨天发现一个问题,搜索了一下没有找到更好的答案。所以发帖来求助。
问题出现:
在控制器内正常使用Curl 传输到 第三方PHP文件内没问题。代码如下:
第三方PHP文件只得是,并没有继承SP框架,单独写的。但是在同一个站点下。
如:http://localhost/api/ceshi.php
以下代码,写在 SP控制器内。使用Curl 请求Ceshi.php 完全可以执行。
$aliredata = array(
'name'=>$name,
);
/**
* CURL 提交过程
*/
$uri = "http://localhost/api/ceshi.php";
$ch = curl_init (); //初始化CUL
curl_setopt ( $ch, CURLOPT_URL, $uri ); //抓取网址
curl_setopt ( $ch, CURLOPT_POST, 1 ); //使用POST方式提交
curl_setopt ( $ch, CURLOPT_HEADER, 0 ); //设置header
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); //要求结果为字符串输出到屏幕上
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $aliredata ); //提交数据
$return = curl_exec ( $ch ); //运行
curl_close ( $ch );
echo $return;
出现问题:第三方、或者本控制器内 向框架提交Curl 无法执行。
问题一:所有都是框架内进行Curl控制器 :http://localhost/protected/controller/UserController.phpaction :update
代码如下:
$aliredata = array(
'name'=>$name,
);
/**
* CURL 提交过程
*/
$uri = "http://localhost/column/add";
$ch = curl_init (); //初始化CUL
curl_setopt ( $ch, CURLOPT_URL, $uri ); //抓取网址
curl_setopt ( $ch, CURLOPT_POST, 1 ); //使用POST方式提交
curl_setopt ( $ch, CURLOPT_HEADER, 0 ); //设置header
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); //要求结果为字符串输出到屏幕上
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $aliredata ); //提交数据
$return = curl_exec ( $ch ); //运行
curl_close ( $ch );
echo $return;
控制器 :http://localhost/protected/controller/ColumnController.phpaction :add
代码如下:
$name = arg("name"); // 使用$_POST['name']依然没有收到值
echo $name;
执行结果:直接跳转到首页(PS 不涉及伪静态的问题哦)
问题二:外部PHP 向框架内CURL数据 无法执行
Curl提交地址:http://localhost/api/tijiao.php
代码如下:
$aliredata = array(
'name'=>$name,
);
/**
* CURL 提交过程
*/
$uri = "http://localhost/column/add";
$ch = curl_init (); //初始化CUL
curl_setopt ( $ch, CURLOPT_URL, $uri ); //抓取网址
curl_setopt ( $ch, CURLOPT_POST, 1 ); //使用POST方式提交
curl_setopt ( $ch, CURLOPT_HEADER, 0 ); //设置header
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); //要求结果为字符串输出到屏幕上
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $aliredata ); //提交数据
$return = curl_exec ( $ch ); //运行
curl_close ( $ch );
echo $return;
控制器 :http://localhost/protected/controller/ColumnController.phpaction :add
代码如下:
$name = arg("name"); // 使用$_POST['name']依然没有收到值
echo $name;
执行结果:直接跳转到首页(PS 不涉及伪静态的问题哦)
谢谢老师,帮忙看下。是哪里出了问题。向外curl提交没有问题,向内(向框架内)提交有错误。
2017-12-30 23:43:41