www.91084.com

GVKun编程网logo

ThinkPHP远程调用模块的操作方法 URL 参数格式(thinkphp5.x远程代码执行)

9

如果您想了解ThinkPHP远程调用模块的操作方法URL参数格式和thinkphp5.x远程代码执行的知识,那么本篇文章将是您的不二之选。我们将深入剖析ThinkPHP远程调用模块的操作方法URL参数

如果您想了解ThinkPHP远程调用模块的操作方法 URL 参数格式thinkphp5.x远程代码执行的知识,那么本篇文章将是您的不二之选。我们将深入剖析ThinkPHP远程调用模块的操作方法 URL 参数格式的各个方面,并为您解答thinkphp5.x远程代码执行的疑在这篇文章中,我们将为您介绍ThinkPHP远程调用模块的操作方法 URL 参数格式的相关知识,同时也会详细的解释thinkphp5.x远程代码执行的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

ThinkPHP远程调用模块的操作方法 URL 参数格式(thinkphp5.x远程代码执行)

ThinkPHP远程调用模块的操作方法 URL 参数格式(thinkphp5.x远程代码执行)

  

* 远程调用模块的操作方法 URL 参数格式 [项目://][分组/]模块/操作
* @param string $url 调用地址
* @param string|array $vars 调用参数 支持字符串和数组
* @param string $layer 要调用的控制层名称
* @return mixed

演示案例:http://www.yixingmuban.com/

   

function R($url,$vars=array(),$layer=‘‘) {
    $info   =   pathinfo($url);
    $action =   $info[‘basename‘];
    $module =   $info[‘dirname‘];
    $class  =   A($module,$layer);
    if($class){
        if(is_string($vars)) {
            parse_str($vars,$vars);
        }
        return call_user_func_array(array(&$class,$action.C(‘ACTION_SUFFIX‘)),$vars);
    }else{
        return false;
    }
}

PHP编程:thinkphp3.2实现跨控制器调用其他模块的方法

PHP编程:thinkphp3.2实现跨控制器调用其他模块的方法

《thinkPHP3.2实现跨控制器调用其他模块的方法》要点:
本文介绍了thinkPHP3.2实现跨控制器调用其他模块的方法,希望对您有用。如果有疑问,可以联系我们。

PHP实战本文实例讲述了thinkPHP3.2实现跨控制器调用其他模块的方法.分享给大家供大家参考,具体如下:

PHP实战thinPHP中前台后台都有互相调用方法,这样可以省去重复内容.

PHP实战
$hello = new \Admin\Common\Fun\hello();
$hello->hehe();

PHP实战调用其他地方的方法同理.

PHP实战如果是在同控制器里模块名可以省略.

PHP实战如调用common里面的某个类的方法:

PHP实战
$hello = new \Common\Fun\hello();
$hello->hehe();

PHP实战框架里面提供了跨模块、夸控制器的 A() 方法

PHP实战
class GoodsController extends Controller{
  function showlist(){
    // 实例化User控制器与调用方法
    $user = A('User');//通过快捷函数实例化控制器对象
    echo $user->number();//调用number()方法
  }
}

PHP实战调用示范:

PHP实战
A('User');  //跨控制器
A('Admin/User');  //跨模块
A('shop://Admin/User');  //跨项目

PHP实战如果还是不够方便的话框架还提供了R()方法,实例化类并调用方法.

PHP实战
//User为控制器 number为方法
R('User/number');
R('Admin/User/number');
R('shop://Admin/User/number');

PHP实战效果如下:

PHP实战
class GoodsController extends Controller{
  function showlist(){
    // 实例化User控制器与调用方法
        A('User/number');//实例化user类并调用number方法
  }
}

PHP实战更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》.

PHP实战希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助.

php远程下载类分享 php 远程调试 php 远程调用 php连接远程数据

php远程下载类分享 php 远程调试 php 远程调用 php连接远程数据

本文实例为大家分享了php远程下载类,如下

m_url = $url; 
if(is_array($urls)) { 
$this->m_host = $urls["host"]; 
if(!empty($urls["scheme"])) $this->m_scheme = $urls["scheme"]; 
if(!empty($urls["user"])) $this->m_user = $urls["user"]; 
if(!empty($urls["pass"])) $this->m_pass = $urls["pass"]; 
if(!empty($urls["port"])) $this->m_port = $urls["port"]; 
if(!empty($urls["path"])) $this->m_path = $urls["path"]; 
$this->m_urlpath = $this->m_path; 
if(!empty($urls["query"])) { 
$this->m_query = $urls["query"]; 
$this->m_urlpath .= "?".$this->m_query; 
} 
} 
} 
 
/** 
* 打开指定网址 
*/
function OpenUrl($url) { 
#重设各参数 
$this->m_url = ""; 
$this->m_urlpath = ""; 
$this->m_scheme = "http"; 
$this->m_host = ""; 
$this->m_port = "80"; 
$this->m_user = ""; 
$this->m_pass = ""; 
$this->m_path = "/"; 
$this->m_query = ""; 
$this->m_error = ""; 
$this->m_httphead = "" ; 
$this->m_html = ""; 
$this->Close(); 
#初始化系统 
$this->PrivateInit($url); 
$this->PrivateStartSession(); 
} 
 
/** 
* 获得某操作错误的原因 
*/
public function printError() { 
echo "错误信息:".$this->m_error; 
echo "具体返回头:<br>"; 
foreach($this-&gt;m_httphead as $k=&gt;$v) { 
echo "$k =&gt; $v <br>\r\n"; 
} 
} 
 
/** 
* 判别用Get方法发送的头的应答结果是否正确 
*/
public function IsGetOK() { 
if( ereg("^2",$this-&gt;GetHead("http-state")) ) { 
return true; 
} else { 
$this-&gt;m_error .= $this-&gt;GetHead("http-state")." - ".$this-&gt;GetHead("http-describe")."<br>"; 
return false; 
} 
} 
 
/** 
* 看看返回的网页是否是text类型 
*/
public function IsText() { 
if (ereg("^2",$this-&gt;GetHead("http-state")) &amp;&amp; eregi("^text",$this-&gt;GetHead("content-type"))) { 
return true; 
} else { 
$this-&gt;m_error .= "内容为非文本类型<br>"; 
return false; 
} 
} 
/** 
* 判断返回的网页是否是特定的类型 
*/
public function IsContentType($ctype) { 
if (ereg("^2",$this-&gt;GetHead("http-state")) &amp;&amp; $this-&gt;GetHead("content-type") == strtolower($ctype)) { 
return true; 
} else { 
$this-&gt;m_error .= "类型不对 ".$this-&gt;GetHead("content-type")."<br>"; 
return false; 
} 
} 
 
/** 
* 用 HTTP 协议下载文件 
*/
public function SaveToBin($savefilename) { 
if (!$this-&gt;IsGetOK()) return false; 
if (@feof($this-&gt;m_fp)) { 
$this-&gt;m_error = "连接已经关闭!"; 
return false; 
} 
$fp = fopen($savefilename,"w") or die("写入文件 $savefilename 失败!"); 
while (!feof($this-&gt;m_fp)) { 
@fwrite($fp,fgets($this-&gt;m_fp,256)); 
} 
@fclose($this-&gt;m_fp); 
return true; 
} 
 
/** 
* 保存网页内容为 Text 文件 
*/
public function SaveToText($savefilename) { 
if ($this-&gt;IsText()) { 
$this-&gt;SaveBinFile($savefilename); 
} else { 
return ""; 
} 
} 
 
/** 
* 用 HTTP 协议获得一个网页的内容 
*/
public function GetHtml() { 
if (!$this-&gt;IsText()) return ""; 
if ($this-&gt;m_html!="") return $this-&gt;m_html; 
if (!$this-&gt;m_fp||@feof($this-&gt;m_fp)) return ""; 
while(!feof($this-&gt;m_fp)) { 
$this-&gt;m_html .= fgets($this-&gt;m_fp,256); 
} 
@fclose($this-&gt;m_fp); 
return $this-&gt;m_html; 
} 
 
/** 
* 开始 HTTP 会话 
*/
public function PrivateStartSession() { 
if (!$this-&gt;PrivateOpenHost()) { 
$this-&gt;m_error .= "打开远程主机出错!"; 
return false; 
} 
if ($this-&gt;GetHead("http-edition")=="HTTP/1.1") { 
$httpv = "HTTP/1.1"; 
} else { 
$httpv = "HTTP/1.0"; 
} 
fputs($this-&gt;m_fp,"GET ".$this-&gt;m_urlpath." $httpv\r\n"); 
fputs($this-&gt;m_fp,"Host: ".$this-&gt;m_host."\r\n"); 
fputs($this-&gt;m_fp,"Accept: */*\r\n"); 
fputs($this-&gt;m_fp,"User-Agent: Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2)\r\n"); 
#HTTP1.1协议必须指定文档结束后关闭链接,否则读取文档时无法使用feof判断结束 
if ($httpv=="HTTP/1.1") { 
fputs($this-&gt;m_fp,"Connection: Close\r\n\r\n"); 
} else { 
fputs($this-&gt;m_fp,"\r\n"); 
} 
$httpstas = fgets($this-&gt;m_fp,256); 
$httpstas = split(" ",$httpstas); 
$this-&gt;m_httphead["http-edition"] = trim($httpstas[0]); 
$this-&gt;m_httphead["http-state"] = trim($httpstas[1]); 
$this-&gt;m_httphead["http-describe"] = ""; 
for ($i=2;$i<count>m_httphead["http-describe"] .= " ".trim($httpstas[$i]); 
} 
while (!feof($this-&gt;m_fp)) { 
$line = str_replace("\"","",trim(fgets($this-&gt;m_fp,256))); 
if($line == "") break; 
if (ereg(":",$line)) { 
$lines = split(":",$line); 
$this-&gt;m_httphead[strtolower(trim($lines[0]))] = trim($lines[1]); 
} 
} 
} 
 
/** 
* 获得一个Http头的值 
*/ 
public function GetHead($headname) { 
$headname = strtolower($headname); 
if (isset($this-&gt;m_httphead[$headname])) { 
return $this-&gt;m_httphead[$headname]; 
} else { 
return ""; 
} 
} 
 
/** 
* 打开连接 
*/
public function PrivateOpenHost() { 
if ($this-&gt;m_host=="") return false; 
$this-&gt;m_fp = @fsockopen($this-&gt;m_host, $this-&gt;m_port, &amp;$errno, &amp;$errstr,10); 
if (!$this-&gt;m_fp){ 
$this-&gt;m_error = $errstr; 
return false; 
} else { 
return true; 
} 
} 
 
/** 
* 关闭连接 
*/
public function Close(){ 
@fclose($this-&gt;m_fp); 
} 
} 
 
#两种使用方法,分别如下: 
 
#打开网页 
$httpdown = new HttpDownload(); 
$httpdown-&gt;OpenUrl("http://www.google.com.hk"); 
echo $httpdown-&gt;GetHtml(); 
$httpdown-&gt;Close(); 
 
 
#下载文件 
$file = new HttpDownload(); # 实例化类 
$file-&gt;OpenUrl("http://dldir1.qq.com/qqfile/qq/QQ8.2/17724/QQ8.2.exe"); # 远程文件地址 
$file-&gt;SaveToBin("qq.exe"); # 保存路径及文件名 
$file-&gt;Close(); # 释放资源
</count>
登录后复制

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

以上就介绍了php远程下载类分享,包括了php,远程方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

thinkpade400578mdc ThinkPHP采用模块和操作分析

thinkpade400578mdc ThinkPHP采用模块和操作分析

任何一个WEB行为都可以认为是一个模块的某个操作,系统会根据当前的URL来分析要执行的模块和操作。这个分析工作由URL调度器来实现,官方内置了Dispatcher类来完成该调度。 在Dispatcher调度器中,会根据
http://servername/appName/moduleName/actionName/params
来获取当前需要执行的项目(appName)、 模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口文件 中指定,这种情况下,appName就会被入口文件替代)。在复杂一点的情况下面,可能还会出现分组(groupName)。
每个模块是一个Action文件,类似于我们平常所说的控制器,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,则会定位到空模块,否则抛出异常。
而actionName操作是首先判断是否存在Action类的公共方法,如果不存在则会继续寻找父类中的方法,如果依然不存在,就会寻找是否存在自动匹配的模版文件。如果存在模版文件,那么就直接渲染模版输出。
因此应用开发中的一个重要过程就是给不同的模块定义具体的操作。一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义Action控制器。 Action控制器的定义非常简单,只要继承Action基础类就可以了,例如:microfiber cloth

复制代码 代码如下:


class UserAction extends Action{
}


如果我们要执行下面的URL
http://servername/index.php/User/add
你需要增加一个add方法就可以了,例如
折叠PHP Code复制内容到剪贴板

复制代码 代码如下:


class UserAction extends Action{
// 定义一个add操作方法,注意操作方法不需要任何参数
Public function add(){
// add操作方法的逻辑实现
// …… bath rug
$this->display(); // 输出模板页面
}
}


操作方法必须定义为Public类型,否则会报错。并注意操作方法的命名不要和内置的Action类的方法重复。系统会自动定位当前操作的模板文件,而默认的模板文件应该位于项目目录下面的Tpl\default\User\add.html。

以上就介绍了thinkpade400578mdc ThinkPHP采用模块和操作分析,包括了thinkpade400578mdc方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

thinkphp 使用 url 请求调用 ThinkApi 天气教程【图文详解】

thinkphp 使用 url 请求调用 ThinkApi 天气教程【图文详解】

这篇文章主要介绍了 thinkphp 使用 url 请求调用 ThinkApi 天气的方法,结合实例形式详细分析了 thinkphp 服务市场接口的注册、接口调用、信息发送、获取相关操作技巧与注意事项,需要的朋友可以参考下

前言

        看了一年多的 thinkphp 手册,我才发现了这个国内比较便宜的(主要免费的接口和对应次数比较多)Api 服务商,虽然在使用之后发现部分接口的返回值没有某合返回的数据要多以及类似内容审核的不够严谨,不过在我看来非常适合框架新手玩家去试一试调用接口的快乐~以下带来详细教程~

一、注册 ThinkPHP 服务市场账号

服务市场首页链接

进入首页后点击右上角,注册、实名过程我就不说了。

二、拿到自己的 AppCode(因为调用接口需要啦)

(1)点击我的服务

 (2)点击安全信息

 三、随便找个免费的接口试试~

偷懒~用大家喜闻乐见的天气接口吧~

(每天一百次,这不比前段时间每天 10 次的某合数据友好?足够让大家慢慢调试数据~)

 (1)发起请求代码(放公共方法中,若不用框架,可与调用方法同层放置)

/**
 * 发送HTTP请求方法
 * @param  string $url    请求URL
 * @param  array  $params 请求参数
 * @param  string $method 请求方法GET/POST
 * @return array  $data   响应数据
 */
function http($url, $params, $method = ''GET'', $header = array(), $multi = false){
    $opts = array(
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_HTTPHEADER     => $header
    );
    /* 根据请求类型设置特定参数 */
    switch(strtoupper($method)){
        case ''GET'':
            $opts[CURLOPT_URL] = $url . ''?'' . http_build_query($params);
            break;
        case ''POST'':
            //判断是否传输文件
            $params = $multi ? $params : http_build_query($params);
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_POST] = 1;
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
        default:
            throw new Exception(''不支持的请求方式!'');
    }
    /* 初始化并执行curl请求 */
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $data  = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if($error) throw new Exception(''请求发生错误:'' . $error);
    return  $data;
}

(2)调用 Api 代码

public function test()
    {
        $url = ''https://api.topthink.com/weather/query'';
        $param = [
            ''appCode''=>''填之前(二)里面自己的Appcode'',
            ''city''=>''重庆''
        ];
        $header = array("Content-Type: application/x-www-form-urlencoded; charset=UTF-8");
        //must have it ↑
        $res = http($url,$param,''GET'',$header);
        $res = json_decode($res,true);
        if($res[''code'']!=0)
            return \json(''接口调用出错啦'');
        var_dump($res);
    }

(3)康康结果?

四、总结一下

         除了数据库小子以外,面向接口开发也是一个 phper 必不可少的一项技能,如 thinkApi 返回的那个 json 数据格式,我的经验标准是:

code 0 一般代表成功,其他的分别代表除成功以外的各种情况
msg 用于描述接口返回的各种情况说明,如成功亦或捕获到抛出的错误
data 用于装载前端需要的数据,里面的数据格式根据前端的需求来修改制定

        那么这些标准从哪里来的呢?当然是每次调用接口的时候发现 Tencent 以及 Alibaba 那些大佬是这样返回的数据,久而久之就成了我们后者学习的标杆咯~

多嘴一句记录一下:(初学者可以不看啦~)

        为什么要用 Url 请求,不用 SDK?因为后者涉及使用 composer 的版本管理问题,在 thinkphp5.0 版本使用 SDK 会牵涉到 php7.1+ - 8.0 + 版本警告问题以及 thinkphp 框架 5.0.24- 5.1 及以上版本的框架结构改变等问题,简而言之:在 tp5.0 版本使用 composer 安装 thinkApi 的 SDK 之后我们的 thinkphp 目录下的 start.php 会消失,内部的一些框架方法会抛出警告,而 composer 又不能智能为你此时的 5.0 框架安装他能够接受的 SDK,而不去改变他的结构,故在遇到某些情况(如调用此 SDK 的接口不多)的时候我们可以退而求之使用 url 请求来避免版本管理的问题。

此外,关于天气查询相关接口还有如下几种可供选择:

  1. 阿里云天气 API:https://next.api.aliyun.com/document/AliGenie/ssp_1.0/GetWeather
  2. 和风天气 API:https://dev.qweather.com/docs/configuration/api-config/
  3. 心知天气 API:https://seniverse.yuque.com/hyper_data/datasets/start?

感兴趣的朋友可以进一步了解一下~

今天关于ThinkPHP远程调用模块的操作方法 URL 参数格式thinkphp5.x远程代码执行的分享就到这里,希望大家有所收获,若想了解更多关于PHP编程:thinkphp3.2实现跨控制器调用其他模块的方法、php远程下载类分享 php 远程调试 php 远程调用 php连接远程数据、thinkpade400578mdc ThinkPHP采用模块和操作分析、thinkphp 使用 url 请求调用 ThinkApi 天气教程【图文详解】等相关知识,可以在本站进行查询。

本文标签: