• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-26) 38次浏览 已收录 0个评论

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

<?php</P><P>/**<BR> * Class SimulantForm 模拟表单<BR> */<BR>class SimulantForm {<BR>    /**<BR>     * @var 要提交的页面url<BR>     */<BR>    protected $_url;</P><P>    /**<BR>     * @var resource curl_init()返回的curl句柄<BR>     */<BR>    protected $_ch;</P><P>    /**<BR>     * 初始化一个表单<BR>     * @param $_url url<BR>     */<BR>    public function __construct($_url) {<BR>  $this->_ch = curl_init();<BR>  $this->setUrl($_url);<BR>  curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, 1);<BR> }</P><P>    /**<BR>     * get方式提交<BR>     * @param array|string 表单数据<BR>     * @return mixed<BR>     */<BR>    public function get($_data = '') { <BR>  $this->_url .= $this->_setGetData($_data);<BR>  $this->setUrl($this->_url);<BR>  $result = curl_exec($this->_ch);<BR>        curl_close($this->_ch);<BR>        return $result;<BR> }</P><P>    /**<BR>     * post方式提交<BR>     * @param array|string 表单数据<BR>     * @return mixed<BR>     */<BR>    public function post($_data) {<BR>  curl_setopt($this->ch, CURLOPT_POST, 1);<BR>  $this->_setPostData($_data);<BR>  $result = curl_exec($this->_ch);<BR>        curl_close($this->_ch);<BR>        return $result;<BR> }</P><P>    /**<BR>     * 返回错误信息<BR>     * @return array array[0]:错误号 , array[1]:错误信息<BR>     */<BR>    public function getLastError() {<BR>  return array(curl_errno($this->_ch), curl_error($this->_ch));<BR> }<br><br> /**<BR>  * 设置SETOPT_COOKIEFILE<BR>  * @param string $_cookieFile 文件真实路径<BR>  */<BR> public function setCookieFile($_cookieFile) {<BR>  curl_setopt($this->_ch, CURLOPT_COOKIEFILE, $_cookieFile);<BR> }<br><br> /**<BR>  * 设置SETOPT_COOKIEJAR<BR>  * @param string $_cookieFile 文件真实路径<BR>  */<BR>    public function setCookieJar($_cookieFile) {<BR>        curl_setopt($this->_ch, CURLOPT_COOKIEJAR, $_cookieFile);<BR>    }<br><br> /**<BR>     * 设置url<BR>     * @param $_url<BR>     */<BR>    protected function setUrl($_url) {<BR>  $this->_url = $_url;<BR>  curl_setopt($this->_ch, CURLOPT_URL, $_url);<BR> }<br><br>    /**<BR>     * 设置get方式提交时的数据<BR>     * @param $_get_data 字符串或数组<BR>     * @return mixed<BR>     */<BR>    protected function _setGetData($_get_data) {<BR>        if(is_array($_get_data)) {<BR>           return $this->_getDataToString($_get_data);<BR>        } elseif(is_string($_get_data)) {<BR>           return $_get_data;<BR>        }<BR>    }</P><P>    /**<BR>     * 设置post方式提交时的数据<BR>     * @param array|string $_post_data<BR>     */<BR>    protected funct<i>*本5文来源gaodai$ma#com搞$$代**码)网@</i><img>搞代码gaodaima</img>ion _setPostData ($_post_data) {<BR>        curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $_post_data);<BR>    }</P><P>    /**<BR>     * 将提交的数组形式的信息解析为字符串用于get方式提交<BR>     * @param array $_get_data<BR>     * @return string<BR>     */<BR>    protected function _getDataToString(array $_get_data) {<BR>  $result_string = '?';<BR>  array_walk($_get_data, function ($value, $key) use (&$result_string) {<BR>   if(is_array($value)) {<BR>    foreach($value as $sec_value) {<BR>     $result_string .= $key . '[]=' . $sec_value . '&';<BR>    }<BR>   } else {<BR>    $result_string .= $key . '=' . $value . '&';<BR>   }<BR>  });<BR>  return substr($result_string, 0, strlen($result_string) - 1);<BR> }<BR>}<BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:通过curl模拟post和get方式提交的表单类_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址