PHP 使用openssl 扩展实现公钥加密的方法_php技巧_脚本之家

正文实例呈报了PHP使用SOAP扩充达成WebService的措施。分享给我们供大家仿效,具体如下:

那么些与日常的PHP
POST或GET传值再查库拿多少的思路有一点不平等,要求用到SOAP模块,管理形式也异常的粗略,正是有点须要注意的事体。首先断定你的PHP.ini开启了.SOAP,就是extension=php_soap.dll 那眼下的分店去咯。代码超轻便:复制代码 代码如下:

正文实例陈说了PHP使用imagick扩大完毕归拢图像的秘诀。分享给咱们供大家参谋,具体如下:

正如所示:

前言

近年在二个PHP项目中连着外界接口涉及到WebService,搜索引擎上有关小说不是过多,找到的大都以引用一个叫做很强盛的开源软件NuSOAP(下载地址:
4.3,今后都盛行PHP 5.2或PHP
5.3了。先拿来尝试,运维出错,原来NuSOAP提供的soapclient类与PHP
5中新扩展了内置的SOAP扩充的SoapClient类矛盾了。

soap_defencoding = ‘utf-8’; $client->decode_utf8 = false;
$client->xml_encoding = ‘utf-8’; $param = array(‘param1’=>’01’,
‘param2’=>’02’);//$param[“param1″]威尼斯娱乐城,=”01”;//$param[“param2″]=”02”;//$result
= $client->__soapCall(“GetArticle”, array;$result =
$client->__Call(“GetArticle”, array;if (is_soap_fault{
trigger_error(“SOAP Fault: (faultcode: {$result->faultcode},
faultstring: {$result->faultstring})”, E_USER_E奇骏ROEscort);}else{ $data =
$result->GetArticleResult;//这里重返的是类,必得使用->得到成分的值
print_r;}?>须求介意的一点是,参数是数组外再包风姿洒脱层数组,正是array附SOAP接口的有的参数:以下是 SOAP 1.2
乞请和响应示例。所出示的占位符需替换为实际值。复制代码 代码如下:POST /SearchService.asmx
HTTP/1.1Host: 202.105.183.61Content-Type: text/xml;
charset=utf-8Content-Length: lengthSOAPAction:
“澳门威尼斯人平台,”

女对象做外贸的,近些日子急需做个成品册,供给是每张威朗纸上有拾柒个图片,作者思索小case吧,男生会点ps呢。可是当他把图纸发给笔者,小编生龙活虎看少了一些吓屎,近10000张图纸,那要ps必定肺痈身亡。。。

// 生成私钥# openssl genrsa -out rsa_private_key.pem 1024// 生成公钥# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

新近在做的项目必要将PHP5.6进级到PHP7.0,使用过PHP-mongo扩张的同校应该明白,PHP7.0的mongodb扩张是一心不相配PHP5.6的mongo扩大的,php-mongodb改什么利用呢。

尽管NuSOAP称得上能够用来全数的PHP
意况,不受服务器安全设置的影响。但须要援用第一次全国代表大会堆类文件,照旧认为用PHP
5中新添了内置的SOAP扩大好一些,能完毕实用就好。先理解一下SOAP:

string string

幸亏小编还或许会点php,好呢,写个小程序来产生拼图。因为图片皆以按编号排列的,要求给各种图片都抬高编号,于是本身的笔触是:1.先把富有图片缩放到统一尺寸
2.把每张图片和号码组合到一张图
3.把每20张图再组成到一张图。图片管理利用了ImageMagick和php的imagick扩张。下边上代码,有详尽评释:

上面是身体力行代码:

上边直接表明各类方式的运用:

一、SOAP和XML-PRC比较

第一步:

';// ------------------------------------------------------------// 私钥解密$encrypt_data = base64_decode;openssl_private_decrypt($encrypt_data, $decrypt_data, $prikey);var_dump;

1.mongodb连接:

在Web服务发展的开始时代,XML格式化音讯的率先个首要用处是,应用于XML-RPC合同,在那之中RPC代表远程进程调用。在XML远程进程调用中,顾客端发送一条特定音讯,该消息中必得回顾名称、运维服务的顺序以至输入参数。

// step1: 调整尺寸到 590 x 590$a = ROOT . '/' . 'a';// 扫描目录$dirA = scandir;$im = new Imagick;foreach  {// 跳过目录和缩略图if ($item === '.' || $item === '..' || strstr {continue;}// 读取图片$im->readImage;// 获取图片宽x高$geo = $im->getImageGeometry();if ($geo['width'] === 590 && $geo['height'] === 590) {// 宽高符合,跳过} else {// 调整尺寸到590 x 590im->resizeImage(590, 590, Gmagick::FILTER_UNDEFINED, 1, TRUE);}// 将图片保存到另一目录$im->writeImage(ROOT . '/_a/' . $item);// 释放资源$im->destroy();}

如上那篇PHP 使用openssl
扩展完成公钥加密的法子正是笔者共享给我们的全体内容了,希望能给我们二个参照,也冀望我们多多料理脚本之家。

private function connect { try{ $connStr = "mongodb://" . $confArr['host'] . ":" . $confArr['port'] . "/" . $confArr['db_name']; $options = array( 'username' => $confArr['username'], 'password' => $confArr['password'], 'readPreference' => $confArr['read_preference'], 'connectTimeoutMS' => intval($confArr['connect_timeout_ms']), 'socketTimeoutMS' => intval($confArr['socket_timeout_ms']), ); $mc = new MongoDB\Driver\Manager; return $mc; } catch{ return false; }}

XML-RPC只好选用轻松的数据类型系列和部分粗略的数据结构。大家认为那么些合同还非常不足有力,于是就涌出了SOAP——在那之中期的定义是粗略对象访问合同。之后,大家逐步发掘到SOAP其实并不不难,何况也不须求必需使用面向对象语言,所以,今后大家只是沿用SOAP那几个称号而已。

第二步:

2.查询find:

XML-RPC独有简短的多少类型集,取代他,SOAP是因而接纳XML
Schema的不断进步来定义数据类型的。同期,SOAP也能够利用XML
命名空间,那是XML-RPC所没有必要的。如此一来,SOAP音讯的开头部分就足以是此外类型的XML命名空间评释,其代价是在系统里头增添了越多的纷纷和不宽容性。

// step2: 合并图片和名字// 扫描目录$files = scandir;$k = 0;foreach  {// 跳过目录和缩略图if ($item === '.' || $item === '..' || strstr {continue;}// 文本图片的宽$twidth = 570;// 文本图片的高$theight = 141;// 获取图片名$pathinfo = pathinfo;$filename = $pathinfo['filename'];// 初始化图片对象$text = new Imagick;// 初始化绘制对象$draw = new ImagickDraw;// 设置字体,这里是放到网站的font下的微软雅黑$draw->setFont;// 文字大小$draw->setFontSize;// 文字颜色$draw->setFillColor(new ImagickPixel;// 文字对齐方式$draw->setTextAlignment;// 获取文字信息,主要是长宽,因为要实现在图片居中$a = $text->queryFontMetrics;// 添加文字$draw->annotation(($twidth - $a['textWidth']) / 2, 80, $filename);// 建立图像$text->newImage($twidth, $theight, new ImagickPixel;// 图片格式$text->setImageFormat;// 绘制图片$text->drawImage;// 新建一个空白图片用来做画布$canvas = new Imagick;$canvas->newimage;$canvas->setImageFormat;// 读取图片$pic = new Imagick;$pic->readImage(ROOT . '/_a/' . $item);$pic->scaleimage;// 将图片合并到画布$canvas->compositeImage($pic, Imagick::COMPOSITE_OVER, 50, 50);// 将文字合并到画布$canvas->compositeimage($text, Imagick::COMPOSITE_OVER, 0, 520);// 保存图片到另一目录$canvas->writeimage(ROOT . '/com_a/' . $item);$k++;echo "{$k} files proceeded.\n";}
public function find, $fields = array(), $collection, $sort = array(), $limit = 0, $skip = 0) { $conn = $this->connect { return false; } try { $data = array; if  { $options['projection'] = array_fill_keys; } if  { $options['sort'] = $sort; } if  { $options['skip'] = $skip; $options['limit'] = $limit; } $mongoQuery = new MongoDB\Driver\Query; $readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY); $cursor = $conn->executeQuery($collection, $mongoQuery, $readPreference); foreach { $data[] = $value; } return $data; } catch  { //记录错误日志 } return false;}

随着Computer行当的顿悟,大家开掘了基于XML的Web服务的商业潜质,于是,各家市廛发轫不停地开采主张、观点、论据以至标准化尝试。W3C曾经设法以“Web服务活动”的名义来协会成果展,此中也包涵实际做出SOAP的XML合同职业组(XML
Protocol Working
Group卡塔尔。与Web服务有关的法规成果(从某种程度上说与SOAP相关也许依赖于SOAP卡塔 尔(英语:State of Qatar)的数目已经倍增了到了令人惊悸的水平。

第三步:

3.安排操作insert:

前期,SOAP是充当XML-RPC的扩展而提升起来的,它至关心重视要重申的是,通过从WSDL文件中所得到的议程和变量名来开展远程进程调用。今后,通过不断提高,大家开掘了更加多的接收SOAP的不二秘技,而不只有是利用“文件”方式——基本上是选择叁个SOAP信封来传送XML格式化文件。无论怎样,要通晓SOAP,驾驭WSDL所扮演的剧中人物是最根本的。

// step3: 合并每20张到一页// 扫描目录$files = scandir;// 给图片分组$i = $j = 0;$group = array();foreach  { if ($item === '.' || $item === '..' || strstr { continue; } $i++; $group[$j][] = $item; if  { $j++; }}$total = count;// 按组拼接图片,A4纸尺寸,4x5的组合方式foreach  { $canvas = new Imagick; $canvas->newimage; $canvas->setimageformat; $i = $j = 0; foreach  { $im = new Imagick(ROOT . '/com_a/' . $item); // 预留了150的左边距 $x = 150 + $i * 570; // 130的顶边距 $y = 130 + $j * 661; $canvas->compositeimage($im, Imagick::COMPOSITE_OVER, $x, $y); // 每4张一行 if  { $i = 0; $j++; } else { $i++; } } $canvas->writeimage(ROOT . '/merge_a/' . $k . '.png'); $c = $k + 1; echo "Group {$c}/{$total} done.\n";}
public function insert { if  || !is_array { return false; } $conn = $this->connect { return false; } try { $bulk = new MongoDB\Driver\BulkWrite(); $bulk->insert; $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 6000); $result = $conn->executeBulkWrite($collection, $bulk, $writeConcern); if ($result->getInsertedCount { return true; } } catch  { //记录错误日志 } return false;}

二、SOAP数据包结构深入分析

PS:这里再为大家推荐六款比较实用的图纸处理工科具供大家参谋使用:

4.删除delete:

SOAP的新闻被称得上三个SOAP Envelope,满含SOAP Header和SOAP
Body。个中,SOAP Header可以方便的插入种种别的音讯来扩大Web
Service的机能,比方Security,SOAP
Body则是切实的音讯正文,也正是马歇尔后的音信。

在线图片转变BASE64工具:

public function delete($whereArr, $options = array { if  { return false; } if (!isset { $options = array( 'justOne' => false, ); } $conn = $this->connect { return false; } try { $bulk = new MongoDB\Driver\BulkWrite(); $bulk->delete; $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 30000); $result = $conn->executeBulkWrite($collection, $bulk, $writeConcern); return true; } catch  { //记录错误日志 } return false;}

SOAP调用的时候,也正是向贰个U昂CoraL(譬如
卡塔尔发送HTTP Post报文(依据SOAP典型,HTTP
Get报文也可被协理卡塔尔国,调用方法的名字在HTTP Request Header
SOAP-Action中付出,接下去便是SOAP
Envelope了。服务端接到伏乞,执行总结,将回到结果马歇尔成XML,用HTTP再次回到给顾客端。

ICOLogo在线生成工具:

5.执行command操作:

三、SOAP简单示例

在线Email邮箱Logo制作工具:

private function command { $conn = $this->connect { return false; } try { $cmd = new MongoDB\Driver\Command; $result = $conn->executeCommand; return $result; } catch  { //记录错误 } return false;}

SOAP开辟经常有二种格局选用:

在线图片格式调换工具:

6.统计count:

1)、PEAR自带的SOAP扩展;2)、PHP自带的SOAP扩展;3)、NuSOAP 。

越来越多关于PHP相关内容感兴趣的读者可查看本站专项论题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法计算》、《php面向对象程序设计入门教程》、《PHP网络编制程序手艺总括》、《PHP数组操作工夫大全》、《php字符串用法计算》、《php+mysql数据库操作入门教程》及《php不可枚举数据库操作才干汇总》

public function count { try { $cmd = array( 'count' => $collection, 'query' => $query, ); $res = $this->command; $result = $res->toArray(); return $result[0]->n; } catch  { //记录错误 } return false;}

PHP
5中新增加了安置的SOAP增加,作为PHP的一片段提供的,因而不须求下载、安装和治本单独的包。那是第七个用C并不是PHP为PHP编写的SOAP完结,因而我声称它的快慢要快得多。相关文书档案满含在PHP手册的Function
Reference部分。

瞩望本文所述对我们PHP程序设计具备利于。

7.聚合distinct:

一个访问.NET WEB服务的客商端例子:

public function distinct($key, $where, $collection) { try { $cmd = array( 'distinct' => $collection, 'key' => $key, 'query' => $where, ); $res = $this->command; $result = $res->toArray(); return $result[0]->values; } catch  { //记录错误 } return false;}
< ? php$objSoapClient = new SoapClient("http://www.webservicemart.com/uszip.asmx?WSDL");$param = array; $out = $objSoapClient->ValidateZip;$data = $out->ValidateZipResult;echo $data;?>

8.aggregate操作:

四、实例

public function aggregate($where, $group, $collection) { try { $cmd = array( 'aggregate' => $collection, 'pipeline' => array( array( '$match' => $where, ), array( '$group' => $group, ), ), 'explain' => false, ); $res = $this->command { return false; } $result = $res->toArray(); return $result[0]->total; } catch  { //记录错误 } return false;}

1)、用PHP建立SOAP服务

总结

建立soap_server.php(设想路线为:

以上便是那篇小说的全部内容了,希望本文的剧情对大家的就学也许干活富有一定的参照他事他说加以考察学习价值,多谢我们对剧本之家的支撑。

< ? php/*** A simple math utility class*/class math{ /** * Add two integers together * * @param integer $a The first integer of the addition * @param integer $b The second integer of the addition * @return integer The sum of the provided integers */ public function add{ return $a + $b; } /** * Subtract two integers from each other * * @param integer $a The first integer of the subtraction * @param integer $b The second integer of the subtraction * @return integer The difference of the provided integers */ public function sub{ return $a - $b; } /** * Div two integers from each other * * @param integer $a The first integer of the subtraction * @param integer $b The second integer of the subtraction * @return double The difference of the provided integers */ public function div{ throw new SoapFault(-1, "Cannot divide by zero!"); } return $a / $b; }}$server = new SoapServer('math.wsdl', array('soap_version'=>SOAP_1_2));$server->setClass;$server->handle(); ?>

a)、math类是快要公开的webservice;b)、$server->setClass,不是$server->addClass。2)、用PHP顾客端访问刚创设SOAP服务

< ? php// $client = new SoapClient('http://localhost/php/soap/math.wsdl');$client = new SoapClient("http://localhost/php/soap/soap_server.php?WSDL");try{ $result = $client->div; // will cause a Soap Fault if divide by zero print "The answer is: $result";}catch{ print "Sorry an error was caught executing your request: {$e->getMessage()}";}?>

本质上,

能够用ZendStudio生成静态的WSDL文件,那时用到math类的phpdoc作为生成WSDL的元数据。用ZendStudio生成wsdl文件时,必需科学表明Web服务对象地方,片断如下:

...     ...

注:调用PHP Webserver的措施必得传入命名参数。

更加多关于PHP相关内容感兴趣的读者可查阅本站专项论题:《PHP运算与运算符用法计算》、《PHP互连网编制程序能力总结》、《PHP基本语法入门教程》、《php操作office文书档案技巧总括(包含word,excel,access,ppt)》、《php日期与时光用法计算》、《php面向对象程序设计入门教程》、《php字符串用法总计》、《php+mysql数据库操作入门教程》及《php不可胜言数据库操作本事汇总》

盼望本文所述对大家PHP程序设计具备助于。

发表评论

电子邮件地址不会被公开。 必填项已用*标注