手机
当前位置:查字典教程网 >编程开发 >php教程 >通过curl模拟post和get方式提交的表单类
通过curl模拟post和get方式提交的表单类
摘要:最近做项目,后台已经做好了但是前台的模版还没下来,所以测试比较麻烦。于是写了个简单的脚本通过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);

}

}

【通过curl模拟post和get方式提交的表单类】相关文章:

文章推荐系统(三)

MVC模式的PHP实现

用php写的serv-u的web申请账号的程序

PHP CURL 多线程操作代码实例

配置PHP使之能同时支持GIF和JPEG

通过html表格发电子邮件

php对象和数组相互转换的方法

深入了解php4(1)--回到未来

图形数字验证代码

BBS(php & mysql)完整版(七)

精品推荐
分类导航