通过curl模拟post和get方式提交的表单类_php教程-查字典教程网
通过curl模拟post和get方式提交的表单类
通过curl模拟post和get方式提交的表单类
发布时间:2016-12-29 来源:查字典编辑
摘要:最近做项目,后台已经做好了但是前台的模版还没下来,所以测试比较麻烦。于是写了个简单的脚本通过curl的方式模拟表单提交。可以通过数组和字符串...

最近做项目,后台已经做好了但是前台的模版还没下来,所以测试比较麻烦。于是写了个简单的脚本通过curl的方式模拟表单提交。可以通过数组和字符串两种方式提交数据。

复制代码 代码如下:

<?php

/**

* Class SimulantForm 模拟表单

*/

class SimulantForm {

/**

* @var 要提交的页面url

*/

protected $_url;

/**

* @var resource curl_init()返回的curl句柄

*/

protected $_ch;

/**

* 初始化一个表单

* @param $_url url

*/

public function __construct($_url) {

$this->_ch = curl_init();

$this->setUrl($_url);

curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, 1);

}

/**

* get方式提交

* @param array|string 表单数据

* @return mixed

*/

public function get($_data = '') {

$this->_url .= $this->_setGetData($_data);

$this->setUrl($this->_url);

$result = curl_exec($this->_ch);

curl_close($this->_ch);

return $result;

}

/**

* post方式提交

* @param array|string 表单数据

* @return mixed

*/

public function post($_data) {

curl_setopt($this->ch, CURLOPT_POST, 1);

$this->_setPostData($_data);

$result = curl_exec($this->_ch);

curl_close($this->_ch);

return $result;

}

/**

* 返回错误信息

* @return array array[0]:错误号 , array[1]:错误信息

*/

public function getLastError() {

return array(curl_errno($this->_ch), curl_error($this->_ch));

}

/**

* 设置SETOPT_COOKIEFILE

* @param string $_cookieFile 文件真实路径

*/

public function setCookieFile($_cookieFile) {

curl_setopt($this->_ch, CURLOPT_COOKIEFILE, $_cookieFile);

}

/**

* 设置SETOPT_COOKIEJAR

* @param string $_cookieFile 文件真实路径

*/

public function setCookieJar($_cookieFile) {

curl_setopt($this->_ch, CURLOPT_COOKIEJAR, $_cookieFile);

}

/**

* 设置url

* @param $_url

*/

protected function setUrl($_url) {

$this->_url = $_url;

curl_setopt($this->_ch, CURLOPT_URL, $_url);

}

/**

* 设置get方式提交时的数据

* @param $_get_data 字符串或数组

* @return mixed

*/

protected function _setGetData($_get_data) {

if(is_array($_get_data)) {

return $this->_getDataToString($_get_data);

} elseif(is_string($_get_data)) {

return $_get_data;

}

}

/**

* 设置post方式提交时的数据

* @param array|string $_post_data

*/

protected function _setPostData ($_post_data) {

curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $_post_data);

}

/**

* 将提交的数组形式的信息解析为字符串用于get方式提交

* @param array $_get_data

* @return string

*/

protected function _getDataToString(array $_get_data) {

$result_string = '?';

array_walk($_get_data, function ($value, $key) use (&$result_string) {

if(is_array($value)) {

foreach($value as $sec_value) {

$result_string .= $key . '[]=' . $sec_value . '&';

}

} else {

$result_string .= $key . '=' . $value . '&';

}

});

return substr($result_string, 0, strlen($result_string) - 1);

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类