php接口签名验证

在做一些api接口设计时候会遇到设置权限问题,比如我这个接口只有指定的用户才能访问。很多时候api接口是属于无状态的,没办法获取session,就不能够用登录的机制去验证,那么大概的思路是在请求包带上我们自己构造好的签名,这个签名必须满足下面几点:a、唯一性,签名是唯一的,可验证目标用户b、可变性,每次携带的签名必须是变化的c、时效性,具有一定的时效,过期作废d、完整性,能够对数据包进行验证,防止篡改//设置一个公钥(key)和私钥(secret),公钥用于区分用户,私钥加密数据,不能公开$key="c4ca4238a0b923820dcc509a6f75849b";$secret="28c8edde3d61a0411511d3b1866f0636";//待发送的数据包$data=array('username'=>'abc@qq.com','sex'=>'1','age'=>'16','addr'=>'guangzhou','key'=>$key,'timestamp'=>time(),);//获取signfunctiongetSign($secr...
开发笔记 开发笔记·2024-07-12

php 检查端口是否被占用

$ip='127.0.0.1';$port=9888;$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);socket_set_nonblock($sock);socket_connect($sock,$ip,$port);socket_set_block($sock);$return=@socket_select($r=array($sock),$w=array($sock),$f=array($sock),3);socket_close($sock);if($return==2){shell_exec("sudofuser-k-ntcp9888");shell_exec('phpwebserver.php');}var_dump($return); ...

php如何输出三角函数

php输出三角函数主要用到GD库和数学方法,请看下面代码:<?phpdefine("MAX_WIDTH_PIXEL",600);define("MAX_HEIGHT_PIXEL",240);//发送标头信息header("Content-type:image/gif");//建立图像$img=imageCreate(MAX_WIDTH_PIXEL,MAX_HEIGHT_PIXEL);//设定颜色$bgcolor=imageColorAllocate($img,0xff,0xe9,0xe9);$red=imageColorAllocate($img,255,0,0);$blue=imageColorAllocate($img,0,0,255);$brown=imageColorAllocate($img,100,0,0);$black=imageColorAllocate($img,0,0,0);$width=MAX_WIDTH_PIXEL/2;//宽度$height=MAX_HEIGHT_PIXEL/2;//高度//建立坐标轴imageLine($img,$width,0,$wi...

PHP trigger_error() 函数

trigger_error()函数创建用户自定义的错误消息。trigger_error()函数用于在用户指定的条件下触发一个错误消息。它可以与内建的错误处理程序一起使用,或者与由set_error_handler()函数设置的用户自定义函数一起使用。当您需要在运行脚本时的某个指定条件下自定义错误消息时,该函数很有用。如果指定了一个不合法的错误类型,该函数返回FALSE,否则返回TRUE。trigger_error(error_message,error_types)参数描述error_message必需。规定错误消息。长度限制为1024个字符。error_types可选。规定错误消息的错误类型。可能的错误类型:E_USER_ERROR-用户生成的运行时的致命错误。不能恢复的错误。停止执行脚本。E_USER_WARNING-用户生成的运行时的非致命警告。脚本没有停止执行。E_USER_NOTICE-默认。用户生成的运行时的通知。脚本发现可能是一个错误,但也可能在脚本正常运行时发生。<?php$test=2;if($test>1){trigger_error("Acustome...
开发笔记 开发笔记·2024-07-04

PHP简单实现图片格式转换(jpg转png,gif转png等)

依赖php扩展gd和exif实现/***图片格式转换*@paramstring$image_path文件路径或url*@paramstring$to_ext待转格式,支持png,gif,jpeg,wbmp,webp,xbm*@paramnull|string$save_path存储路径,null则返回二进制内容,string则返回true|false*@returnboolean|string$save_path是null则返回二进制内容,是string则返回true|false*@throwsException*/functiontransform_image($image_path,$to_ext='png',$save_path=null){if(!in_array($to_ext,['png','gif','jpeg','wbmp','webp','xbm'])){thrownewException('unsupporttransformimageto'.$to_ext);}switch(exif_imagetype($image_path)){caseIMAGETYPE_GI...

PHP代码-禁止IP访问网站

如果你想要禁止某一个国家的IP访问你的网站,请使用以下PHP代码:(如果是WP把这段代码加到Header.php中)<?php/****test.php(屏蔽国家IP)**/$verification='美国';//需要屏蔽国家的IPfunctionget_client_ip(){$ip=$_SERVER['REMOTE_ADDR'];if(isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR'])&&preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_REAL_FORWARDED_FOR'])){$ip=$_SERVER['HTTP_X_REAL_FORWARDED_FOR'];}elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&preg_match('/^([0-9]{1,3}.){...

php实现txt下载文件下载代码

{//echo"当前目录中,文件".$file."存在";header("Content-Disposition:attachment;filename=".$time.".txt");//告诉浏览器通过附件形式来处理文件header('Content-Length:'.filesize($file));//下载文件大小readfile($file);}else{echo"当前目录中,文件".$file."不存在";returnfalse;} ...

php禁止访问某个地区的IP

functioncheckIp(){$ip=egetip();$oldIp=getcvar('iplist');if($oldIp){Header("Location:".'/404.html');exit;}$setIps=ReturnPublicAddVar("jinyong_area");$citys=[];if(!empty($setIps)){if(strstr($setIps,'-')){$citys=explode('-',$setIps);}else{$citys=[$setIps];}//print_r($citys);exit;$res='';$res=file_get_contents("https://restapi.amap.com/v3/ip?key=7ad665ca654f32cb5c2e7363eeef36df56&ip=".$ip);$res=json_decode($res,true);$jinzhi=$citys;if($res['province']&&in_array($res['province'],$jinzhi))...

PHP实现随机图像功能

PHP随机图像实现的代码超级简单,短短四行就搞定了:<?php$img_array=glob('images/*.{gif,jpg,png,jpeg,webp,bmp}',GLOB_BRACE);if(count($img_array)==0)die('没找到图片文件。请先上传一些图片到'.dirname(__FILE__).'/images/文件夹');header('Content-Type:image/png');echo(file_get_contents($img_array[array_rand($img_array)]));?>以上的代码会查找 images 目录下的所有图片,并随机挑选出一张显示出来。...

php开发微信APP支付接口

1:用户在商户APP中选择商品,提交订单,选择微信支付。2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay4:商户APP调起微信支付。api参见本章节【app端开发步骤说明】5:商户后台接收支付通知。api参见【支付结果通知API】6:商户后台查询支付结果。,api参见【查询订单API】首先呢我们需要拿到三个参数(appid,mch_id,key),这三个参数分别对应的是在微信开发平台中创建的移动应用appid,微信支付商户号,商户支付秘钥,详情看参考【支付结果通知API】然后我们先把统一下单所需要的参数列出来 $request_data=array('appid'=>C('WX_APPID'),#应用APPID'mch_id'=&g...

thinkphp5使用phpmailer进行发送邮件功能

1、使用composer工具安装,在tp5根目录下执行 默认使用1.0版本  composerrequirephpmailer/phpmailer 安装成功后显示下面目录 2、封装发送邮件方法我放置在了extra文件夹内function sendEmail($to, $title, $content){     $email=[         "send_email"=>"111113@qq.com", //这里是一个 发邮件用的邮箱  需要设置smtp相关        "host"=>"smtp.qq.com",   &nbs...

Thinkphp5获取访客用户ip地址的方法

用户访问tp5网站,可以通过内置ip()函数获取ip地址$request = Request::instance();echo '访问ip地址:' . $request->ip();...

thinkphp使用setInc和setDec进行字段加1减1

//score字段加1db('article')->where('id',1)->setInc('score');//score字段加5db('article')->where('id',1)->setInc('score',5);//score字段减1db('article')->where('id',1)->setDec('score');//score字段减5db('article')->where('id',1)->setDec('score',5); ...

PHP使用scandir()列出当前所有文件夹和各类文件

一般的CMS通过查看文件夹结构基本可以查看出来某些重要文件PHP代码 以下是查看当前文件夹下<?php$files = scandir('.');  foreach ($files as $file) {      if ($file !== '.' && $file !== '..') {          echo $file . "";         echo "<br>";  &nbs...

PHP 自带的验证函数 FILTER_VAR()

常见的用法检查邮箱的格式是否合法if(filter_var('bob@51dev.com',FILTER_VALIDATE_EMAIL)){} 更多相关的过滤参数:ID名称描述FILTER_CALLBACK调用用户自定义函数来过滤数据。FILTER_SANITIZE_STRING去除标签,去除或编码特殊字符。FILTER_SANITIZE_STRIPPED“string”过滤器的别名。FILTER_SANITIZE_ENCODEDURL-encode字符串,去除或编码特殊字符。FILTER_SANITIZE_SPECIAL_CHARSHTML转义字符‘”<>&以及ASCII值小于32的字符。FILTER_SANITIZE_EMAIL删除所有字符,除了字母、数字以及!#$%&’*+-/=?^_`{|}~@.[]FILTER_SANITIZE_URL删除所有字符,除了字母、数字以及$-_.+!*'(),{}|//^~[]`<>#%”;/?:@&a...
首页上一页12345...下一页尾页