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

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

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

最近做项目,后台已经做好了但是前台的模版还没下来,所以测试比较麻烦。于是写了个简单的脚本通过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 _

)本文来源gaodai.ma#com搞#代!码网_

搞代gaodaima码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);
}
}


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

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

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

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