form表单demo:task.html
<fieldset id="setFiled">
<legend>发布任务</legend>
<form action="registr.php" method="post" id="steForm">
<label>任务类型:</label><br>
<input type="text" name="type" id="taskType" placeholder="请选择任务类型"/><br>
<label>酬&nbsp&nbsp金:</label><br>
<input type="number" name="money" id="forMoney" min="1" max="1000"/><label>元</label><br>
<label>截止时间:</label><br>
<input type="datetime" name="time" id="timeSubmit"/><span data-year="" data-month="" data-date="" id="showDate"></span><br>
<label>详细描述:</label><br>
<textarea maxlength="512" name="textAray" id="msgArea"></textarea><br>
<input type="submit" name="subMit" id="forSub" value="点击发布" />
</form>
扩展资料
1、$_POST 方式接受数据
$_POST 方式是由通过HTTP的POST方法传递过来的数据组成的数组,是一个自动全局变量。
注:只能接收Content-Type:application/x-www-form-urlencode提交的数据。也就是只能接收表单过来的数据。
2、GLOBLES[‘HTTP_RAW_POST_DATA’]
如果访问原始POST数据不是php能够识别的文档类型,比如:text/xml 或者soap等等,可以用$GLOBLES[‘HTTP_RAW_POST_DATA’]来接收,$HTTP_RAW_POST_DATA变量包含有原始POST数据。此变量仅在碰到未识别的MIME数据时产生。
注:$HTTP_RAW_POST_DATA对于enctype=”multipart/form-data”表单数据不可用,也就是说使用$HTTP_RAW_POST_DATA无法接受网页表单post过来的数据。
3、file_get_contents(“php://input”)
如果访问原始POST数据,更好的方法是使用file_get_content(“php://input”);对于未指定Content-Type的POST数据,可以使用该方法读取POST原始数据,包括二进制流也可以和$HTTP_RAW_POST_DATA比起来。它带来的生存眼里更小,并且不需要任何特殊的php.ini设置。
注:php://input不能用于 enctype=”multipart/form-data”
例如:$postStr = file_get_contents("php://input")//获取POST数据
既然你的inserttwo.php这页需要接收POST值,那你就不该用location.href这种js方法来进行页面跳转,因为这种跳转是URL的方式(也就是GET方式),而你接收的是POST方式提交的值,自然就收不到了的。所以你可以采用ajax或者form的方式来进行跳转。
ajax的方式比较简单,比如jquery框架里,用$.post()这个方法就行了(其他ajax框架看各自的API进行 *** 作,肯定是有post方法的)。
而如果用form方式:
只需要把你上面代码中的<script>...</script>这段代码改成如下代码就行了:
<form name="xxxform" method="post" action="inserttwo.php">
<input type="hidden" name="abc" value="xxxxx" />
</form>
<script type="text/javascript">
window.onload=(function(){document.xxxform.submit()})
</script>
上面的表单中含有一个隐藏的文本框,你可以把你要POST的内容填在这里。
最后采用onload事件自动提交这个表单实现页面跳转并POST传值给inserttwo.php
php调接口都是通过curl来完成的。
下面是我项目中的一个方法:
$url 是要post的地址
$params 是参数,格式array('参数1'=>'参数1值','参数2'=>'参数2值')
$header 请求头,如果模拟浏览器访问需要
$timeout 超时时间
//公共获取指定网页内容function curl($url,$params = array(),$header = array(),$timeout = 180){
if(empty($url)) return $url
$curl = curl_init()
curl_setopt($curl, CURLOPT_URL,$url)//请求url地址
curl_setopt($curl, CURLOPT_HTTPHEADER , $header ) //构造IP
if(!empty($params) && count($params) > 0){
curl_setopt($curl, CURLOPT_POST, true)
//Request Payload格式数据
if(isset($params['is_json']) && $params['is_json'] === true){
unset($params['is_json'])
$params = json_encode($params)
}else{
$params = http_build_query($params)
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $params)
}
//curl_setopt($curl, CURLOPT_HEADER, true)//是否返回响应头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true)//是否将结果返回
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true)//是否重定向
//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1 WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36')
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false) // 只信任CA颁布的证书
//curl_setopt($curl, CURLOPT_CAINFO, $cacert) // CA根证书(用来验证的网站证书是否是CA颁布)
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2) // 检查证书中是否设置域名,并且是否与提供的主机名匹配
// 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE)
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0)
//curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect: "))
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 )
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout)//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout)//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
// 自动设置Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1)
//curl_setopt($curl, CURLOPT_COOKIEJAR, "D:\phpStudy\WWW\cj\cooBE66.tmp")// //写入cookie信息
//setcookie('cookie_jar', $cookie_jar) //保存cookie路径
$data = curl_exec($curl) //执行
curl_close($curl)
return $data
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)