精华内容
下载资源
问答
  • 开发php接口实例

    2016-07-27 11:22:17
    开发php接口实例,让你可以自己写接口来实现自己想要的数据。让你不再被后端忽悠。
  • PHP接口加密

    千次阅读 2019-11-15 13:34:46
    在工作中PHP接口开发是PHP常见的技术,通过对接口进行一些操作,可以访问接口获取数据,给app/前端提供数据接口等,如果接口没有加密,很容易发生盗用和不安全的操作.下面介绍一下常见的接口加密方法。 一.使用...

     

        在工作中PHP接口开发是PHP常见的技术,通过对接口进行一些操作,可以访问接口获取数据,给app/前端提供数据接口等,如果接口没有加密,很容易发生盗用和不安全的操作.下面介绍一下常见的接口加密方法。

     

    一.使用token进行加密解密,提高接口安全性

    如app要请求用户列表,api是“index.php?module=user&action=list”

    app生成token = md5 (‘user’.’list′.’abc12@1qwe~456’) = 5e549e3c1e808125d1a7e0746625abb6;

    则实际发起请求为 “index.php?module=user&action=list&token=5e549e3c1e808125d1a7e0746625abb6”

    服务器端接到请求用同样方法计算token:

     

    二.使用RSA配合签名进行加密解密

    使用RSA进行加密需要两个文件,一个公钥文件一个私钥文件,使用openSSL生成所需要的两个文件。使用windows生成两个文件。

    2.1.首要需要安装openSSL,使用下面的地址,找到适合自己电脑的安装包下载,按照提示安装即可。

    地址:https://oomake.com/download/openssl

    2.2.打开OpenSSL文件夹下的bin目录,点击openssl.exe,打开命令窗口。

    2.3.开始生成RSA的私钥,输入一下命令之后看到提示信息表示生成成功。

    命令:genrsa -out rsa_private_key.pem 1024

    此时在OpenSSL的bin目录下生成了一个rsa_private_key.pem,这就是最初的私钥文件 
    但是这不是我们最终要用的私钥文件,我们最终使用的私钥文件必须是要经过PKCS#8编码这个后面步骤会给出。

    2.4.利用私钥文件生成RSA公钥文件 

    命令:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

    此时在OpenSSL的bin目录下会生成rsa_public_key.pem文件,这就是公钥文件。

    2.5.前面说过我们最终使用的RSA文件是需要经过PKCS#8编码的,之前生成的RSA文件只是用来生成公钥文件的。 
    接下来就要对之前的私钥文件进行PKCS#8编码,生成一个编码后的私钥文件。

    命令:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -out pkcs8_rsa_private_key.pem –nocrypt

    这个时候在OpenSSL目录的bin目录下又会生成一个pkcs8_rsa_private_key.pem文件,这个就是我们最终要用的私钥文件。

    至此,公钥文件和私钥文件都有了,下面介绍RSA和签名进行加密解密。

     

    简单介绍RSA:

            RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。但是有不少新手对它不太了解。下面仅作简要介绍。RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性,目前它已经成为最流行的公开密钥算法。RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。 

    RSA类:

    <?php
        
        /**
         * RSA算法类
         * 签名及密文编码:base64字符串/十六进制字符串/二进制字符串流
         * 填充方式: PKCS1Padding(加解密)/NOPadding(解密)
         *
         * Notice:Only accepts a single block. Block size is equal to the RSA key size!
         * 如密钥长度为1024 bit,则加密时数据需小于128字节,加上PKCS1Padding本身的11字节信息,所以明文需小于117字节
         *
         */
        class RSA
        {
            private $pubKey = null;
            private $priKey = null;
        
            /**
             * 构造函数
             *
             * @param string 公钥文件(验签和加密时传入)
             * @param string 私钥文件(签名和解密时传入)
             */
            public function __construct($public_key_file = '', $private_key_file = '')
            {
                if ($public_key_file) {
                    $this->_getPublicKey($public_key_file);
                }
                if ($private_key_file) {
                    $this->_getPrivateKey($private_key_file);
                }
            }
        
            // 私有方法
            /**
             * 自定义错误处理
             */
            private function _error($msg)
            {
                die('RSA Error:' . $msg); //TODO
            }
        
            /**
             * 检测填充类型
             * 加密只支持PKCS1_PADDING
             * 解密支持PKCS1_PADDING和NO_PADDING
             *
             * @param int 填充模式
             * @param string 加密en/解密de
             * @return bool
             */
            private function _checkPadding($padding, $type)
            {
                if ($type == 'en') {
                    switch ($padding) {
                        case OPENSSL_PKCS1_PADDING:
                            $ret = true;
                            break;
                        default:
                            $ret = false;
                    }
                } else {
                    switch ($padding) {
                        case OPENSSL_PKCS1_PADDING:
                        case OPENSSL_NO_PADDING:
                            $ret = true;
                            break;
                        default:
                            $ret = false;
                    }
                }
                return $ret;
            }
        
            private function _encode($data, $code)
            {
                switch (strtolower($code)) {
                    case 'base64':
                        $data = base64_encode('' . $data);
                        break;
                    case 'hex':
                        $data = bin2hex($data);
                        break;
                    case 'bin':
                    default:
                }
                return $data;
            }
        
            private function _decode($data, $code)
            {
                switch (strtolower($code)) {
                    case 'base64':
                        $data = base64_decode($data);
                        break;
                    case 'hex':
                        $data = $this->_hex2bin($data);
                        break;
                    case 'bin':
                    default:
                }
                return $data;
            }
        
            private function _getPublicKey($file)
            {
                $key_content = $this->_readFile($file);
                if ($key_content) {
                    $this->pubKey = openssl_get_publickey($key_content);
                }
            }
        
            private function _getPrivateKey($file)
            {
                $key_content = $this->_readFile($file);
                if ($key_content) {
                    $this->priKey = openssl_get_privatekey($key_content);
                }
            }
        
            private function _readFile($file)
            {
                $ret = false;
                if (!file_exists($file)) {
                    $this->_error("The file {$file} is not exists");
                } else {
                    $ret = file_get_contents($file);
                }
                return $ret;
            }
        
            private function _hex2bin($hex = false)
            {
                $ret = $hex !== false && preg_match('/^[0-9a-fA-F]+$/i', $hex) ? pack("H*", $hex) : false;
                return $ret;
            }
        
            /**
             * 生成签名
             *
             * @param string 签名材料
             * @param string 签名编码(base64/hex/bin)
             * @return 签名值
             */
            public function sign($data, $code = 'base64')
            {
                $ret = false;
                if (openssl_sign($data, $ret, $this->priKey)) {
                    $ret = $this->_encode($ret, $code);
                }
                return $ret;
            }
        
            /**
             * 验证签名
             *
             * @param string 签名材料
             * @param string 签名值
             * @param string 签名编码(base64/hex/bin)
             * @return bool
             */
            public function verify($data, $sign, $code = 'base64')
            {
                $ret = false;
                $sign = $this->_decode($sign, $code);
                if ($sign !== false) {
                    switch (openssl_verify($data, $sign, $this->pubKey)) {
                        case 1:
                            $ret = true;
                            break;
                        case 0:
                        case -1:
                        default:
                            $ret = false;
                    }
                }
                return $ret;
            }
        
            /**
             * 加密
             *
             * @param string 明文
             * @param string 密文编码(base64/hex/bin)
             * @param int 填充方式(貌似php有bug,所以目前仅支持OPENSSL_PKCS1_PADDING)
             * @return string 密文
             */
            public function encrypt($data, $code = 'base64', $padding = OPENSSL_PKCS1_PADDING)
            {
                $ret = false;
                if (!$this->_checkPadding($padding, 'en')) $this->_error('padding error');
                if (openssl_public_encrypt($data, $result, $this->pubKey, $padding)) {
                    $ret = $this->_encode($result, $code);
                }
                return $ret;
            }
        
            /**
             * 解密
             *
             * @param string 密文
             * @param string 密文编码(base64/hex/bin)
             * @param int 填充方式(OPENSSL_PKCS1_PADDING / OPENSSL_NO_PADDING)
             * @param bool 是否翻转明文(When passing Microsoft CryptoAPI-generated RSA cyphertext, revert the bytes in the block)
             * @return string 明文
             */
            public function decrypt($data, $code = 'base64', $padding = OPENSSL_PKCS1_PADDING, $rev = false)
            {
                $ret = false;
                $data = $this->_decode($data, $code);
                if (!$this->_checkPadding($padding, 'de')) $this->_error('padding error');
                if ($data !== false) {
                    if (openssl_private_decrypt($data, $result, $this->priKey, $padding)) {
                        $ret = $rev ? rtrim(strrev($result), "\0") : '' . $result;
                    }
                }
                return $ret;
            }
        }
    

    ende.php 加密解密文件

    <?php
    /**
     * Created by PhpStorm.
     * User: caicai
     * Date: 15/11/19
     */
    header("Content-Type:text/html;Charset=utf-8");
    include "RSA.php";
    
    $pubfile = __DIR__.'\rsa_public_key.pem';
    $prifile = __DIR__.'\pkcs8_rsa_private_key.pem';
    
    if(!file_exists($pubfile) || !file_exists($prifile)){
       return false;
    }
    
    $rsa = new RSA($pubfile,$prifile);
    if(empty($rsa)){
       return false;
    }
    
    $rst = array(
       'ret'  => 200,
       'code' => 1,
       'data' => array(1,2,3,4,5,6),
       'msg'  => 'success'
    );
    $json_str = json_encode($rst);
    
    //加密
    $encrypt_str = $rsa->encrypt($json_str);
    
    //解密
    $decrypt_str = $rsa->decrypt($encrypt_str);
    
    echo $encrypt_str;
    echo "<pre>";
    echo $decrypt_str;
    
    echo "<pre>";
    
    $qianming = 'test';
    //签名
    $QMSTR = $rsa->sign($qianming);
    echo $QMSTR;
    
    echo "<pre>";
    //验证签名
    $resrCode = $rsa->verify($qianming,$QMSTR);
    
    var_dump($resrCode);
    echo "<pre>";
    var_dump($qianming,$resrCode);
    
    效果图:

    额外补充:

    linux下生存公钥和私钥两个文件的步骤,其实和windows一样。

    一.

    1.安装OpenSSL,首先下载opensll压缩包

    地址:http://www.openssl.org/source/openssl-1.0.2j.tar.gz

    命令:wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz

     

    2.在文件夹下解压缩,命令:tar -xzf openssl-1.0.2j.tar.gz,得到openssl-1.0.2j文件夹

    3.进入解压的目录:cd openssl-1.0.2j

    4.

    设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:

    执行命令: ./config --prefix=/usr/local/openssl

    5.执行命令./config -t

    6.执行make,编译Openssl

    7.编译完之后可以使用

    which openssl 查看openssl的路径

    openssl --version 查看openssl的版本

    二.cd到你要存放的目录下,然后进入openssl的交互界面,在命令行了输入openssl即可

    1.生成RSA私钥

    genrsa -out rsa_private_key.pem 1024

    2.把RSA私钥转换成PKCS8格式

    pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

    3.生成RSA公钥

    rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

    到此两个文件生成成功

     

    展开全文
  • API Manager PHP 接口管理工具

    千次阅读 2020-06-29 18:01:27
    API Manager PHP 接口管理工具 接口开发过程中必不可少的的接口管理工具,今天推荐一个 API Manager 接口管理工具,是通过php编写的超轻量级工具,虽然作者只写了一些简单功能,但是可以自己扩展自己需要的功能,...

    API Manager PHP 接口管理工具

    下载地址:https://download.csdn.net/download/qq_19264385/10798697

    接口开发过程中必不可少的的接口管理工具,今天推荐一个 API Manager 接口管理工具,是通过php编写的超轻量级工具,虽然作者只写了一些简单功能,但是可以自己扩展自己需要的功能,还是很实用的。git的地址我忘了。需要的童鞋自行百度吧。

    使用截图:
    php接口文档管理工具

    在这里插入图片描述

    登录界面
    在这里插入图片描述

    新建分类
    在这里插入图片描述

    安装过程(设置项目根目录即可,我用的nginx 所以我的设置如下):
    root /Users/ace/work/ApiManager;
    在这里插入图片描述

    导入数据Mysql:
    将项目中db.sql导入到你建立好的数据库中,然后去配置数据库信息如图:
    在这里插入图片描述

    配置好后,绑定本地host,打开你配置的虚拟域名,我的是api.com:8088(端口随你自己配置,80默认端口也可以)

    项目非我所有,如有侵权请联系我删除。如果有问题可留言,我看到会回复。
    网站限制:必须设置积分,留言邮箱。博主看到即发。

    展开全文
  • 浅谈php接口

    千次阅读 2016-07-04 11:29:49
    之前上学那会学习的专业是C#,工作中的php也在多个项目中,历练成长了不少,不过今天被一个问题问到,php接口,一直知道有这么一个东西存在,但是平时也没有怎么用到过接口,自己也查了下,先记录学习一下,以后有项目能...

    之前上学那会学习的专业是C#,工作中的php也在多个项目中,历练成长了不少,不过今天被一个问题问到,php接口,一直知道有这么一个东西存在,但是平时也没有怎么用到过接口,自己也查了下,先记录学习一下,以后有项目能用到那就在好不过

    书面定义

    接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式,就如面向对象程序设计提供的多重抽象化。接口可能也提供某种意义上的在讲不同语言的实体之间的翻译。人类与电脑等信息机器或人类与程序之间的接口称为用户界面。电脑等信息机器硬件组件间的接口叫硬件接口。电脑等信息机器软件组件间的接口叫软件接口
    接口中定义的所有方法都必须是公有,这是接口的特性。
    使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
    接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

    关于interface

     interface是C# 中接口操作的关键字,功能是把所需成员组合起来,以封装一定功能的集合。它好比一个模板,在其中定义了对象必须实现的成员,通过类或结构来实现它。接口不能直接实例化,即ICount ic=new iCount()是错的。接口不能包含成员的任何代码,只定义成员本身。接口成员的具体代码由实现接口的类提供。接口使用interface关键字进行声明。

    声明格式

    [attributes] [modifiers] interface identifier [: base-list] {interface-body} {;}

    使用说明

    1、attributes(可选):附加的定义性信息。
    2、modifiers(可选): 允许使用的修饰符有 new 和四个访问修饰符。分别是:new、public、protected、internal、 private。在一个接口定义中同一修饰符不允许出现多次,new 修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员。The public, protected, internal, and private 修饰符定义了对接口的访问权限。
    3、指示器和事件。
    4、identifier:接口名称。
    5、base-list(可选):包含一个或多个显式基接口的列表,接口间由逗号分隔。
    6、interface-body:对接口成员的定义。
    7、接口可以是命名空间或类的成员,并且可以包含下列成员的签名: 方法、属性、索引器 。
    8、一个接口可从一个或多个基接口继承。
    接口这个概念在C#和Java中非常相似。接口的关键词是interface,一个接口可以扩展一个或者多个其他接口。按照惯例,接口的名字以大写字母"I"开头。

    接口实现(implements)

    要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
    【注意    1、实现多个接口时,接口中的方法不能有重名。
        2、接口也可以继承,通过使用 extends 操作符。
        3、类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。
    常量接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖。

    举个栗子

    Example#1 接口示例
    <?php
    
    // 声明一个'iTemplate'接口
    interface iTemplate
    {
        public function setVariable($name, $var);
        public function getHtml($template);
    }
    
    
    // 实现接口
    // 下面的写法是正确的
    class Template implements iTemplate
    {
        private $vars = array();
      
        public function setVariable($name, $var)
        {
            $this->vars[$name] = $var;
        }
      
        public function getHtml($template)
        {
            foreach($this->vars as $name => $value) {
                $template = str_replace('{' . $name . '}', $value, $template);
            }
     
            return $template;
        }
    }
    
    // 下面的写法是错误的,会报错,因为没有实现 getHtml():
    // Fatal error: Class BadTemplate contains 1 abstract methods
    // and must therefore be declared abstract (iTemplate::getHtml)
    class BadTemplate implements iTemplate
    {
        private $vars = array();
      
        public function setVariable($name, $var)
        {
            $this->vars[$name] = $var;
        }
    }
    ?>
    Example2 可扩充的接口
    <?php
    interface a
    {
        public function foo();
    }
    
    interface b extends a
    {
        public function baz(Baz $baz);
    }
    
    // 正确写法
    class c implements b
    {
        public function foo()
        {
        }
    
        public function baz(Baz $baz)
        {
        }
    }
    
    // 错误写法会导致一个致命错误
    class d implements b
    {
        public function foo()
        {
        }
    
        public function baz(Foo $foo)
        {
        }
    }
    ?>

    Example3  继承多个接口
    <?php
    interface a
    {
        public function foo();
    }
    
    interface b
    {
        public function bar();
    }
    
    interface c extends a, b
    {
        public function baz();
    }
    
    class d implements c
    {
        public function foo()
        {
        }
    
        public function bar()
        {
        }
    
        public function baz()
        {
        }
    }
    ?>
    Example4 使用接口常量
    <?php
    interface a
    {
        const b = 'Interface constant';
    }
    
    // 输出接口常量
    echo a::b;
    
    // 错误写法,因为常量不能被覆盖。接口常量的概念和类常量是一样的。
    class b implements a
    {
        const b = 'Class constant';
    }
    ?>

    案例
    <?php
    
    /**
    * An example of duck typing in PHP
    */
    
    interface CanFly {
      public function fly();
    }
    
    interface CanSwim {
      public function swim();
    }
    
    class Bird {
      public function info() {
        echo "I am a {$this->name}\n";
        echo "I am an bird\n";
      }
    }
    
    /**
    * some implementations of birds
    */
    class Dove extends Bird implements CanFly {
      var $name = "Dove";
      public function fly() {
        echo "I fly\n";
      } 
    }
    
    class Penguin extends Bird implements CanSwim {
      var $name = "Penguin";
      public function swim() {
        echo "I swim\n";
      } 
    }
    
    class Duck extends Bird implements CanFly, CanSwim {
      var $name = "Duck";
      public function fly() {
        echo "I fly\n";
      }
      public function swim() {
        echo "I swim\n";
      }
    }
    
    /**
    * a simple function to describe a bird
    */
    function describe($bird) {
      if ($bird instanceof Bird) {
        $bird->info();
        if ($bird instanceof CanFly) {
          $bird->fly();
        }
        if ($bird instanceof CanSwim) {
          $bird->swim();
        }
      } else {
        die("This is not a bird. I cannot describe it.");
      }
    }
    
    // describe these birds please
    describe(new Penguin);
    echo "---\n";
    
    describe(new Dove);
    echo "---\n";
    
    describe(new Duck);





    展开全文
  • php接口开发简单实例

    万次阅读 2017-12-13 14:51:36
    刚刚写成人生第一个服务器接口,总结分享一下经验,没写过接口的可以看下<?php include 'response.php'; $id = $_POST["user_id"]; if ($id != 10086){ exit(); } $userinfo = array( 'username'=>'jason', '...

    刚刚写成人生第一个服务器接口,总结分享一下经验,没写过接口的可以看下。
    这里以用户用id请求自己个人信息业务为例:

    <?php
    $id = $_POST["user_id"];
    if ($id != 10086){
        exit();
    }
    
    $userinfo = array(
        'username'=>'jason',
        'password'=>'xxxxxx',
    );
    
    $result = array(
              'code'=>'10000',
              'message'=>'成功',
              'data'=>$userinfo,
            );
    echo json_encode($result);
    
    
    $id = $_POST["user_id"];
    

    是获取端上传来的 "user_id"参数,如果是GET请求则用

    $id = $_GET["user_id"];
    

    下面是一个脑残的校验和准备返回给用户的数据;
    返回给客户端的数据用的是ecoh命令,一定要返回的是数组形式的数据,否则web可以接收到,但是客户端无法接收。

    这个例子返回几个参数,这个视业务而定,我这里只是一般常用格式:

    • code:状态码,这里用10000表示成功,10001表示参数错误,这个自己去自定义;
    • message:返回一个文本消息;
    • data:客户端需要的数据;

    客户端调用的接口(阿里云到期了):
    http://yqz.flykite.me/server/sfile/api/userinfo.php
    客户端接收的到的数据:
    这里写图片描述

    展开全文
  • PHP接口(interface)的特点 1、接口的方法必须是公开的。 2、接口的方法默认是抽象的,所以不在方法名前面加abstract。 3、接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。 4、类可以实现...
  • PHP接口继承及接口多继承详解

    千次阅读 2014-12-20 11:33:44
    当然接口的继承也是使用extends关键字,要多个继承的话只要用逗号把继承的接口隔开即可。  需要注意的是当你接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法,所以类实现... 现在你对PHP接口的继承
  • php接口编写

    万次阅读 2016-08-06 08:41:09
    //生成接口 支持三种格式 xml/json/jsonp  //需求:对外提供一个通过... //请求实例地址:http://localhost/20160801/api.php  //请求方式: get  //请求参数说明:  // 名称 类型 必填 说明  // 
  • PHP接口允许ajax跨域访问设置方法

    千次阅读 2018-05-03 16:33:02
    背景 H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' ...解决方法 通过设置php接口文件的 Access-Control-Allow-Origin 头信息来实现跨域访问。 1...
  • PHP接口开发常规加密办法

    万次阅读 2016-11-25 15:53:46
    PHP接口开发是PHP常见的技术,可以通过接口进行一些操作,可以访问接口获取数据,给app提供数据接口等,但是如果接口没有加密解密的过程,很容易发生盗用和不安全的操作。   下面例子简单讲解PHP接口开发加密...
  • PHP 接口日志记录

    千次阅读 2020-11-04 13:57:40
    error_log(date("Y-m-d H:i:s",time()).'【getProducts获取商品编号SKU接口的getFieldById】'."\n".serialize($aCat)."\n\n", 3, $this->FILE); error_log(date('Y-m-d H:i:s',time())."\tnow=".$now."\n",3,...
  • PHP接口(interface)的特点

    千次阅读 2017-02-05 10:42:13
    PHP接口(interface)的特点 1、接口的方法必须是公开的。 2、接口的方法默认是抽象的,所以不在方法名前面加abstract。 3、接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。 4、类可以...
  • php接口和异常处理

    千次阅读 2013-08-25 20:32:55
    接着昨天的部分,php面向对象也提供了接口这个东西,单从接口这一块来说php和java基本上没区别,不论java还是php接口从一定程度上弥补了类单继承的不足,在不破坏类层级关系的前提下减小了耦合度.废话不说了来看一下...
  • PHP 接口调用报错 502 Bad Gateway

    千次阅读 2019-04-24 17:03:06
    PHP接口调用超过5s的请求直接返回如下信息: Response <html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad ...
  • java 使用RestTemplate.getForObject() 方法请求PHP接口返回 ![图片说明](https://img-ask.csdn.net/upload/201804/09/1523265200_880886.png) 用浏览器、postman请求,返回正常json数据,什么问题?
  • PHP接口类interface的正确使用方法

    万次阅读 2018-08-14 09:44:46
    今天在看zend Framework框架,发现它里面用到了很多的interface定义的类,好像对php接口类使用不是很理解,通过查阅资料,整理了有些关于interface的正确使用方法: 1、接口的定义:  接口:一种成员属性为抽象的...
  • Google翻译PHP接口

    千次阅读 2009-03-28 05:21:00
    <?php /* Google翻译PHP接口 * 官成文 2009-03-28 * http://blog.csdn.net/aprin/ * 注意:如果翻译文本为UTF-8编码,则要删去mb_convert_encoding函数 */ class Google_API_translator {
  • PHP版 微信小程序生成带参数小程序二维码图片 php接口+小程序demo 小程序端js代码 getcodes:function(){ var that=this wx.request({  url: 'http://www.gecodes.com/codes.php',  data:{  id:1,  ...
  • php接口安全问题

    千次阅读 2016-02-22 11:52:08
    在平时工作或者正式项目中,做接口在所难免,而接口的安全问题首当其冲,为了防止接口被别人恶意调用,一般会做一个加密的工作,不同的公司,都有一套不同的处理方式。我们公司也有一套处理方式,即:做了一个加密的...
  • PHP接口的思考

    千次阅读 2017-03-02 22:13:56
    PHP接口自始至终一直在被争议,有人说接口很好,有人说接口像鸡肋。首先要明白,好喝不好的判断标准是什么。无疑,这是和Java/C++相比。在上面的例子中,以及讨论了PHP接口在“面向契约编程”中是不足的,并没有...
  • layui 富文本 图片上传 后端PHP接口

    千次阅读 2017-08-09 16:10:31
    layui 富文本 图片上传 后端PHP接口html<!DOCTYPE html> <script type="text/javascript" src='/static/js/jquery-3.2.1.mi
  • php接口参数加密

    千次阅读 2019-05-25 10:30:24
    客户端:data加密(json.stringify将...php: /** * AES数据加密 * @param type data∗/functionaesEncrypt(data */ function aesEncrypt(data∗/functionaesEncrypt(data) { //加密 returndata=opensslencrypt...
  • PHP接口_天气接口(百度api)

    千次阅读 2019-02-19 18:33:46
    原文链接 1、介绍 在很多网站页面都会显示当前地方的天气状况,也可以给用户一些天气提示: ...接口文档:http://lbsyun.baidu.com/index.php?title=car http://lbsyun.baidu.com/index.php?title=ca...
  • php 接口写法

    千次阅读 2016-11-27 15:56:06
    AppDataAction::newrefundList   public function citylist(){    $list=array();...case 'php': echo serialize( $data ); break; default: echo json_encode( $data ); } }
  • php 接口的token

    千次阅读 2016-10-09 08:56:55
    接口特点汇总: 1、因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效; ...PHP Token(令牌) 针对以上特点,移动端与服务端的通信就需要2把钥匙,即2个token。 第一个to
  • 下面例子简单讲解PHP接口开发加密技术: 如app要请求用户列表,api是“index.php?module=user&action=list” app生成token = md5sum (‘user’.’2012-11-28′.’www.aaa.com’.list) = 880fed4ca2aabd20ae9a5dd...
  • 快速开发php接口服务推荐框架

    千次阅读 2018-05-06 00:13:09
    推荐π框架,一个轻量级PHP开源接口框架,专注于接口服务开发,支持HTTP/SOAP/RPC协议,拥有自动生成的在线文档、多种开发语言的客户端SDK包以及可重用的扩展类库,可用于快速搭建微服务、RESTful接口或Web Services...
  • Unity3D后台数据库交互 php接口设计

    千次阅读 2013-12-27 17:31:46
    这里介绍unity后台数据库的php接口设计,该设计方式不光适用unity3d,这里抛砖引玉大家课后自由发挥,由于自己php水平有限,代码有误还请指教。 1、首先在windows或者其他平台下建立mysql数据库,window下大家...
  • php接口上传文件

    千次阅读 2014-12-24 09:07:29
    <?php /* http://localhost/upload.php: print_r($_POST); print_r($_FILES); */ $ch =curl_init(); $data = array('name'=>'Foo','file'=>'@/home/user/test.png'); curl_setopt($ch,CURLOPT_U

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,950
精华内容 114,780
关键字:

php接口