源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

通过curl模拟post和get方式提交的表单类

  • 时间:2020-01-06 13:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:通过curl模拟post和get方式提交的表单类
最近做项目,后台已经做好了但是前台的模版还没下来,所以测试比较麻烦。于是写了个简单的脚本通过curl的方式模拟表单提交。可以通过数组和字符串两种方式提交数据。
[u]复制代码[/u] 代码如下:
<?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);  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部