2020-10-28
PHP CURL实现模拟登陆并上传文件操作示例

PHP CURL实现模拟登陆并上传文件操作示例

本文实例讲述了PHP CURL实现模拟登陆并上传文件操作。分享给大家供大家参考,具体如下: <?php header('content-type:text/html;charset=gb2312'); //要注意你需要上传的网站服务器的运行环境,还要看它的请求是否被压缩和转码还有就是 //在框架中或者说php5.3以下的版本可以用@,但是其它的就只能用new CURLfile()函数来转化文件了 //注意你要发送的服务器的header头的结构和特殊参数,实在不行就自己构建一个。废话不多说,直接上代码。 function curl_form($post_data,$sumbit_url,$http_url,$cookie_file){ $headers = array(); $headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; $headers[] = 'Cache-Control: max-age=0'; $headers[] = 'Accept-Encoding: gzip, deflate'; $headers[] = 'Origin: http://my.***.com'; $headers[] = 'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'; $headers[] = 'Upgrade-Insecure-Requests: 1'; $headers[] = 'Content-Type: application/x-www-form-urlencoded'; $headers[] = 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0'; $headers[] = 'Connection: keep-alive'; // $headers[] = 'Cookie: ASPSESSIONIDCCTCTQQC=KBGLPDKBIKDIDCBGFOKNMKOE'; //初始化 $ch = curl_init(); //设置变量 curl_setopt($ch, CURLOPT_URL, $sumbit_url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//执行结果是否被返回,0是返回,1是不返回 curl_setopt($ch, CURLOPT_HEADER, 0);//参数设置,是否显示头部信息,1为显示,0为不显示 curl_setopt($ch, CURLOPT_REFERER, $http_url); //表单数据,是正规的表单设置值为非0 curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1:8888'); // curl_setopt($ch, CURLOPT_ENCODING, ""); // curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data)); //执行并获取结果 $output = curl_exec($ch); if($output === FALSE) { echo "<br/>","cUrl Error:".curl_error($ch); }else{ return $output; } // 释放cURL句柄 curl_close($ch); } $temp = array(); $temp['title'] = iconv( "utf-8", "gb2312//IGNORE" , "牛排店加盟"); $temp['ly'] = iconv( "utf-8", "gb2312//IGNORE" , "特色餐饮加盟"); $temp['classid'] = iconv( "utf-8", "gb2312//IGNORE" , "7159"); $temp['newssort'] = iconv( "utf-8", "gb2312//IGNORE" , "1"); $temp['panduan'] = iconv( "utf-8", "gb2312//IGNORE" , "0"); $temp['submit_button'] = iconv( "utf-8", "gb2312//IGNORE" , "发布"); $temp['addr'] = iconv( "utf-8", "gb2312//IGNORE" , "bjcanyin"); $temp['ContentBg'] = ""; $temp['newss'] = iconv( "utf-8", "gb2312//IGNORE" , htmlspecialchars_decode("<p>阿会计师的贺卡收到框架</p><p><img alt=\"\" src=\" http://localhost/super/Uploads/img/2017-08-10/598c145a9527e.jpg\" style=\"height:243px; width:324px\" /></p>", ENT_QUOTES)); $cookie_file = dirname(__FILE__)."/jdzj.tmp"; $sumbit_url = "http://***/news/***.asp"; $http_url="http://***/news/***.asp?act=addok"; $img = curl_form($temp,$http_url,$sumbit_url,$cookie_file); var_dump($img); PS:关于PHP curl选项详细说明可参考https://www.jb51.net/article/39331.htm 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》及《PHP中json格式数据操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。...
技术教程 860次浏览 0条评论
2020-10-28
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析

php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析

本文实例讲述了php 下 html5 XHR2 + FormData + File API 上传文件操作。分享给大家供大家参考,具体如下: FormData的作用: FormData对象可以帮助我们自动的打包表单数据,通过XMLHttpRequest的send()方法来提交表单。当然FormData也可以动态的append数据。FormData的最大优点就是我们可以异步上传一个二进制文件。 例1如下: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" id="myForm" onsubmit="return post();"> 用户名<input type="text" name="uname" /> 密码<input type="password" name="upwd" /> 邮箱<input type="text" name="uemail" /> <input type="submit" name="submit" value="提交" /> </form> </body> <script type="text/javascript"> function post() { var myForm = document.getElementById("myForm"); //FormData既可以从表单读取数据,也可以动态append(键,值)添加 var fd = new FormData(myForm); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { alert(this.responseText); } }; xhr.open("post", "post.php", true); xhr.send(fd); return false; } </script> </html> File API 使用HTML5 DOM新增的File API,现在可以让网页要求用户选择本地文件,并且读取这些文件的信息了。 通过File API,我们可以在用户选取一个或者多个文件之后,访问到代表了所选文件的一个或多个File对象,这些对象被包含在一个FileList对象中。 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" id="myForm"> <input type="file" name="file" id="upfile" /> <input type="submit" name="submit" value="提交" /> </form> </body> <script type="text/javascript"> var upfile = document.getElementById("upfile"); upfile.onchange = function() { var file = this.files[0]; alert("文件名:" + file.name + "\r\n" + "大小:" + file.size + "\r\n"); }; </script> </html> 我们通过FormData + File API 上传文件 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" id="myForm"> <input type="file" name="file" id="upfile" /> <input type="submit" name="submit" value="提交" /> </form> </body> <script type="text/javascript"> var myForm = document.getElementById("myForm"); var upfile = document.getElementById("upfile"); myForm.onsubmit = function() { //我们创建一个FormData对象 var fd = new FormData(); var file = upfile.files[0]; //把文件添加到FormData对象中 fd.append("file", file); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { alert(this.responseText); } }; xhr.open("post", "upfile.php", true); //发送FormData对象 xhr.send(fd); return false; }; </script> </html> upfile.php代码如下: <?php $uploadDir = './upload/'; if(!file_exists($uploadDir)) { @mkdir($uploadDir, 0777, true); } $uploadFile = $uploadDir . basename($_FILES['file']['name']); if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) { echo "OK"; } else { echo "NO"; } 使用对象URL来显示你所选择的图片 通过window.URL.createObjectURL()和 window.URL.revokeObjectURL()两个DOM方法。 这两个方法创建简单的URL字符串对象,用于指向任何 DOM File 对象数据,包括用户电脑中的本地文件。 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" id="myForm"> <input type="file" name="file" id="upfile" /> <input type="submit" name="submit" value="提交" /> </form> </body> <script type="text/javascript"> var myForm = document.getElementById("myForm"); var upfile = document.getElementById("upfile"); upfile.onchange = function() { //创建一个img标签 var img = document.createElement("img"); //通过file对象创建对象URL img.src = window.URL.createObjectURL(this.files[0]); img.height = 60; img.onload = function() { //释放对象URL window.URL.revokeObjectURL(this.src); }; document.body.appendChild(img); }; myForm.onsubmit = function() { //我们创建一个FormData对象 var fd = new FormData(); var file = upfile.files[0]; //把文件添加到FormData对象中 fd.append("file", file); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { alert(this.responseText); } }; xhr.open("post", "upfile.php", true); //发送FormData对象 xhr.send(fd); return false; }; </script> </html> 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP目录操作技巧汇总》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结》 希望本文所述对大家PHP程序设计有所帮助。...
技术教程 710次浏览 0条评论
2020-10-28
php 使用html5 XHR2实现上传文件与进度显示功能示例

php 使用html5 XHR2实现上传文件与进度显示功能示例

本文实例讲述了php 使用html5 XHR2实现上传文件与进度显示功能。分享给大家供大家参考,具体如下: 思路:只要我们知道上传文件的总大小,还有上传过程中上传文件的大小,那么就可以实现进度显示了。 在html5中,XMLHttpRequest对象,传送数据的时候,progress事件用来返回进度信息。 它分成上传和下载两种情况 1.下载的progress事件属于XMLHttpRequest对象 2.上传的progress事件属于XMLHttpRequest.upload对象。 与progress事件相关的,还有其他五个事件: 1.load事件:传输成功完成。 2.abort事件:传输被用户取消。 3.error事件:传输中出现错误。 4.loadstart事件:传输开始。 5.loadEnd事件:传输结束,但是不知道成功还是失败。 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" id="myForm"> <input type="file" name="file" id="upfile" /> <input type="submit" name="submit" value="提交" /> </form> <div id="upStatus"></div> </body> <script type="text/javascript"> var myForm = document.getElementById("myForm"); var upfile = document.getElementById("upfile"); myForm.onsubmit = function() { //我们创建一个FormData对象 var fd = new FormData(); var file = upfile.files[0]; //把文件添加到FormData对象中 fd.append("file", file); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { alert(this.responseText); } }; xhr.open("post", "upfile.php", true); //监听上传事件 xhr.upload.onprogress = function(ev) { //如果长度是可计算的 if(ev.lengthComputable) { var percent = Math.round((ev.loaded / ev.total) * 100); document.getElementById("upStatus").innerHTML = percent + "%"; } }; //发送FormData对象 xhr.send(fd); return false; }; </script> </html> upfile.php代码如下: <?php $uploadDir = './upload/'; if(!file_exists($uploadDir)) { @mkdir($uploadDir, 0777, true); } $uploadFile = $uploadDir . basename($_FILES['file']['name']); if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) { echo "OK"; } else { echo "NO"; } 如果上传过程中PHP出现如下信息: Warning: POST Content-Length of 625523488 bytes exceeds the limit of 8388608 bytes in Unknown on line 0 说明文件大小超出了PHP设置限制,可以设置php.ini ;脚本解析输入数据(类似 POST 和 GET)允许的最大时间,单位是秒。 ;它从接收所有数据到开始执行脚本进行测量的。 max_input_time = 60 ;允许客户端单个POST请求发送的最大数据 post_max_size = 64M ;是否开启文件上传功能 file_uploads = On ;文件上传的临时存放目录(如果不指定,使用系统默认的临时目录) ;upload_tmp_dir = ;允许单个请求上传的最大文件大小 upload_max_filesize = 64M ;允许单个POST请求同时上传的最大文件数量 max_file_uploads = 20 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP目录操作技巧汇总》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结》 希望本文所述对大家PHP程序设计有所帮助。...
技术教程 630次浏览 0条评论
2020-10-28
php+iframe 实现上传文件功能示例

php+iframe 实现上传文件功能示例

本文实例讲述了php+iframe 实现上传文件功能。分享给大家供大家参考,具体如下: 我们通过动态的创建iframe,修改form的target,来实现无跳转的文件上传。 具体的实现步骤 1.捕捉表单提交事件 2.创建一个iframe 3.修改表单的target,指向iframe 4.删除iframe file.html代码如下: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form action="upfile.php" method="post" id="upfileForm" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" name="submit" value="上传" /> </form> <div id="result"></div> </body> <script type="text/javascript" src="./jquery.js"></script> <script type="text/javascript"> $("#upfileForm").bind("submit", function() { var ifrName = 'upfile' + Math.random(); var ifr = $("<iframe name='" + ifrName + "' width='0' height='0' frameborder='0'></iframe>"); $("body").append(ifr); $(this).attr("target", ifrName); }); </script> </html> upfile.php代码如下: <?php $uploadDir = './upload/'; if(!file_exists($uploadDir)) { @mkdir($uploadDir, 0777, true); } $uploadFile = $uploadDir . basename($_FILES['file']['name']); if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) { echo "<script>parent.document.getElementById('result').innerHTML='OK';</script>"; } else { echo "<script>parent.document.getElementById('result').innerHTML='NO';</script>"; } 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP目录操作技巧汇总》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结》 希望本文所述对大家PHP程序设计有所帮助。...
技术教程 680次浏览 0条评论
微信二维码