php使用curl如何实现简单模拟提交表单功能的代码实例

 更新时间:2017年7月6日 23:49  点击:1679
这篇文章主要为大家详细介绍了php使用curl实现简单模拟提交表单功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

php 使用curl 进行简单模拟提交表单,供大家参考,具体内容如下

 

 代码如下复制代码

//初始化curl

$ch= curl_init();

$url='xxx'

$option= [

 CURLOPT_URL =>$url,

 CURLOPT_HEADER => 1,

 CURLOPT_RETURNTRANSFER => 1,

];

curl_setopt_array($ch,$option);

$output= curl_exec($ch);

preg_match_all('/Set-Cookie: (.*);/i',$output,$str);//正则匹配

//如果有token的话就获取token

preg_match('/token = \"(.*)\"/i',$output,$token);

if(empty($str)) {

 returnfalse;

}

$cook=$str[1];

$cookie= implode('',$cook);

 

$up_url='xxx'

$post_data= [

 'name'=>'test_',

 'tel'=>�',

 'email'=>'qqhahadfdfads@163.com',

 'message'=>'this is my message;',

 '_token'=>$token[1],

];

$options= [

 CURLOPT_URL =>$up_url,

 CURLOPT_RETURNTRANSFER => 1,

 CURLOPT_HEADER => 1,

 CURLOPT_USERAGENT  =>"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36  (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36",

 CURLOPT_COOKIESESSION => 1,

 CURLOPT_POST => 1,

 CURLOPT_POSTFIELDS =>$post_data,

 CURLOPT_COOKIE =>$cookie

];

curl_setopt_array($ch,$options);

$res= curl_exec($ch);

// $info = curl_getinfo($ch);

if($res=== FALSE) {

 p('curl Error: '. curl_error($ch));

}

curl_close($ch);

p($res);

 

取自基于laravel开发的一个网站, laravel中表单中有一个csrf_token 的. 所以就得获取token, 还有带上cookie

这里注意的是, 不能同时初始化两个curl, 否则token或者cookie会发生变化, 如果你需要初始化两个curl的话, 可以使用CURLOPT_COOKIEJAR设置. [详情看手册]

然后运行下:binggo

使用curl时, 比较重要的就是一个cookie的应用, 翻了下手册, 设置cookie的就有四个...CURLOPT_COOKIESESSION、CURLOPT_COOKIE、CURLOPT_COOKIEFILE、CURLOPT_COOKIEJAR

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。

本篇文章主要介绍了PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图等的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧

JpGraph简介

JpGraph是开源的PHP统计图表生成库,基于PHP的GD2图形库构建,把生成统计图的相关操作封装,隐藏了部分复杂的操作,使在PHP页面上输出统计图表变得更加容易。JpGraph的官方网站为:http://jpgraph.net,开发者可以在上面免费下载最新版的JpGraph和阅读相关帮助文档或示例程序。

JpGraph的配置

(1)修改文件php.ini

在include_path中添加jpgraph的目录路径,并将jpgraph解压后的src目录名称更改为jpgraph。

(2)检查PHP是否支持GD库

在php.ini文件中找到语句;extension=php_gd2.dll。把上述语句前的;号去掉,即去掉注释。如果因为PHP版本不同而找不到此语句,则可直接添加extension=php_gd2.dll

(3)修改文件jpgraph_gb2312.php

找到函数:function gb2utf8($gb)

把函数修改为:

 

 代码如下复制代码

functiongb2utf8($gb) {

return$gb;

}

 

即不使用gb2编码方式转utf8方式的那段代码。

折线图

 

 代码如下复制代码

<?php

require_once("jpgraph/jpgraph.php");

require_once("jpgraph/jpgraph_line.php");

 

$data1=array(523,634,371,278,685,587,490,256,398,545,367,577);//第一条曲线的数组

 

$graph=newGraph(500,300); 

$graph->SetScale("textlin");

$graph->SetShadow();  

$graph->img->SetMargin(60,30,30,70);//设置图像边距

 

$graph->graph_theme = null;//设置主题为null,否则value->Show(); 无效

 

$lineplot1=newLinePlot($data1);//创建设置两条曲线对象

$lineplot1->value->SetColor("red");

$lineplot1->value->Show();

$graph->Add($lineplot1);//将曲线放置到图像上

 

$graph->title->Set("CDN流量图"); //设置图像标题

$graph->xaxis->title->Set("月份");//设置坐标轴名称

$graph->yaxis->title->Set("流 量(Gbits)");

$graph->title->SetMargin(10);

$graph->xaxis->title->SetMargin(10);

$graph->yaxis->title->SetMargin(10);

 

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);//设置字体

$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); 

$graph->xaxis->SetTickLabels($gDateLocale->GetShortMonth());

$graph->Stroke();//输出图像

?>

 

柱状图

 

 代码如下复制代码

<?php

require_once("jpgraph/jpgraph.php");

require_once("jpgraph/jpgraph_bar.php");

 

$data=array(19,23,34,38,45,67,71,78,85,87,96,145);     

$ydata=array("一","二","三","四","五","六","七","八","九","十","十一","十二");

 

$graph=newGraph(500,300);//创建新的Graph对象

$graph->SetScale("textlin");//刻度样式

$graph->SetShadow();    //设置阴影

$graph->img->SetMargin(40,30,40,50);//设置边距

 

$graph->graph_theme = null;//设置主题为null,否则value->Show(); 无效

 

$barplot=newBarPlot($data);//创建BarPlot对象

$barplot->SetFillColor('blue');//设置颜色

$barplot->value->Show();//设置显示数字

$graph->Add($barplot);//将柱形图添加到图像中

 

$graph->title->Set("CDN流量图"); 

$graph->xaxis->title->Set("月份");//设置标题和X-Y轴标题

$graph->yaxis->title->Set("流 量(Mbits)");                                   

$graph->title->SetColor("red");

$graph->title->SetMargin(10);

$graph->xaxis->title->SetMargin(5);

$graph->xaxis->SetTickLabels($ydata);

 

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);//设置字体

$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

$graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD);

$graph->Stroke();

?>

 

饼状图

 

 代码如下复制代码

<?php

require_once("jpgraph/jpgraph.php");

require_once("jpgraph/jpgraph_pie.php");

require_once("jpgraph/jpgraph_pie3d.php");

 

$data=array(19,23,34,38,45,67,71,78,85,87,90,96);

 

$graph=newPieGraph(550,500);

$graph->SetShadow();

 

$graph->title->Set("CDN流量比例");

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);

 

$pieplot=newPiePlot3D($data);//创建PiePlot3D对象

$pieplot->SetCenter(0.4, 0.5);//设置饼图中心的位置

$pieplot->SetLegends($gDateLocale->GetShortMonth());//设置图例

$graph->Add($pieplot);

$graph->Stroke();

?>

 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本网站!

本篇文章主要介绍了PHP读取Excel类文件的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧

想要使用PHP读取Excel文件必然要用到PHPExcel开源类库,网上资源应该挺多的。但是每一种的操作必然都是不同的,可原理应该都是大同小异。

这个文件夹里包含的就是PHPExcel类文件

,在外面还有一个入口PHP文件

处理机制:1.读取Excel文件

           2.获取最大行号和最大列号

              3.通过行数循环里面嵌套列数循环来用特殊符号拼接每个小表格里面的数据得到一个字符串

           4.然后使用explode拆分函数将字符串拆分后就得到了一个二维数组(即表格里面的数据)。

代码示例

 

 代码如下复制代码

$path="/wamp/www/xiong/hadf";

    if(is_dir($path)){

      echo"存在";

    }else{

      mkdir($path, 0777, true);

      echo"chuangji";

    }

    require_once"./PHPExcel.php";

    $filePath="./1233.xlsx";

    $PHPReader=newPHPExcel_Reader_Excel2007();

          if(!$PHPReader->canRead($filePath)) {

            $PHPReader=newPHPExcel_Reader_Excel5();

            if(!$PHPReader->canRead($filePath)) {

              echo'no Excel'

              exit;

            }

          }

    $PHPExcel=$PHPReader->load($filePath);

          /**读取excel文件中的第一个工作表*/

          $currentSheet=$PHPExcel->getSheet(0);

          /**取得最大的列号*/

          $allColumn=$currentSheet->getHighestColumn();

          // echo $allColumn;exit;

          /**取得一共有多少行*/

          $allRow=$currentSheet->getHighestRow();

          /**从第二行开始输出,因为excel表中第一行为列名*/

          $val=''

          for($currentRow= 1;$currentRow<=$allRow;$currentRow++) {

          /**从第A列开始输出*/

            for($currentColumn='A'$currentColumn<=$allColumn;$currentColumn++) {

              $val.=$currentSheet->getCellByColumnAndRow(ord($currentColumn)  - 65,$currentRow);//->getValue();/**ord()将字符转为十进制数*/

              $val.="&%|%&";

              /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将GBK编码转为UTF-8编码输出*/

              //$val .= iconv('GBK','UTF-8', $val);

            }

            $val.="\n";

          }$member_info_arr=explode("\n",$val);

          unset($member_info_arr[count($member_info_arr) - 1]);

          $present_time=date("Y-m-d H:i:s");

          if(count($member_info_arr) <= 0) {

            sys_msg_json(0,"会员信息文件中无数据,请添加");

          }

          unset($member_info_arr[0]);

          // var_dump($member_info_arr);exit;

          foreach($member_info_arras$key=>$val) {

            $arr[$key] =explode("&%|%&",$val);

          }

          // var_dump($arr);exit;

          foreach($arras$key=>$val) {

            unset($arr[$key][2]);

          }

          var_dump($arr);

 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本网站!

这篇文章主要为大家详细介绍了php使用curl实现ftp文件下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了php实现ftp文件下载功能,供大家参考,具体内容如下

不知道为什么用正常的ftp_get函数下载文件速度特别慢,但是用ftp的客户端下载很快,所以换了curl的下载方式,速度正常

 

 代码如下复制代码

functionfile_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){

  $curlobj= curl_init();//初始化

  //传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg'

  curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path);

  curl_setopt($curlobj,CURLOPT_HEADER,0);//不输出header

  curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0);

  //time out after 300s

  curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超时时间

  //通过这个函数设置ftp的用户名和密码,没设置就不需要!

  curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);

 

  $outfile=fopen($fileSavePath,'w+');//保存到本地文件的文件名

  curl_setopt($curlobj,CURLOPT_FILE,$outfile);

 

  $rtn= curl_exec($curlobj);

  if(curl_errno($curlobj)){

    writeLog('Curl error: '. curl_error($curlobj));

  }

  fclose($outfile);

  curl_close($curlobj);

   if($rtn== 1){

    returntrue;

   }else{

    unlink($fileSavePath);//如果下载失败,但是本地open了这个文件,所以要删除

    returnfalse;

   }

 

}

 

测试下载小文件是正常的,但是如果网速很慢,下载大文件时候,会报一个ftp timeout的错误,目前还在不知道是哪里配置问题,还是什么问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。

[!--infotagslink--]

相关文章

  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • 使用JQuery实现Ctrl+Enter提交表单的方法

    有时候我们为了省事就操作键盘组合键去代替使用鼠标,我们今天就使用JQuery实现Ctrl+Enter提交表单。我们发帖时,在内容输入框中输入完内容后,可以点击“提交”按钮来发表内容。可是,如果你够“懒”,你可以不用动鼠标,只需按...2015-10-23
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • 双冒号 ::在PHP中的使用情况

    前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08
  • PHP mysql与mysqli事务使用说明 分享

    mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。应用比较多的地方是 mysqli的事务。...2013-10-02
  • Postman安装与使用详细教程 附postman离线安装包

    这篇文章主要介绍了Postman安装与使用详细教程 附postman离线安装包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05
  • 浅析Promise的介绍及基本用法

    Promise是异步编程的一种解决方案,在ES6中Promise被列为了正式规范,统一了用法,原生提供了Promise对象。接下来通过本文给大家介绍Promise的介绍及基本用法,感兴趣的朋友一起看看吧...2021-10-21
  • 使用jquery修改表单的提交地址基本思路

    基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之后,表单的提交地址就会修改为page_two.html 复制...2014-06-07