php如何用

php中array_map()函数如何使用?(代码示例)

array_map()函数是PHP中一个内置函数,它可以通过一种简单的方式根据用户自定义的条件(函数)来修改一个或多个数组中的所有元素。下面我们就来具体介绍一下array_map()函数的使用方法。

array_map()函数

array_map()函数基本上是将数组的每个元素发送到用户自定义的函数中进行修改或处理,然后返回一个具有该函数修改后新值的数组。

基本语法:

array_map(functionName,arr1,arr2...)

说明:

functionName参数:必需项,代表用户自定义函数的名称。array_map()函数会根据该名称将数组的值传递到该函数中进行处理,在返回。

arr1,arr2.......参数:必需项,代表需要修改的数组,可以是一个数组,也可以是多个数组。

functionName参数是强制性的,我们可以将任意数量的数组(arr1,arr2.......,依此类推)传递给函数进行处理。

array_map()函数的使用示例

下面我们通过简单示例来介绍array_map()函数的使用

示例1:对数组中的值进行处理

<?php function fun1($v) { return ($v + 7); // 数组中的每个元素值都加7} function fun2($v1,$v2) {//判断两个数组中对应的值是否相等,相等则返回1,不相等则返回0。最后形成一个由1和0组成的数组 if ($v1 == $v2) return 1; else return 0; } $arr1 = array(1, 2, 3, 4, 5); $arr2 = array(1, 3, 3, 4, 8); echo "<pre>"; print_r(array_map("fun1", $arr1)); print_r(array_map("fun2", $arr1, $arr2)); echo "</pre>"; ?>

输出:

示例说明:

fun1()可以把数组arr1中的每个元素值都加上7,在返回。

fun2()是判断数组arr1和数组arr2中的值是否相等,相等则返回1,不相等则返回0。最后形成一个由1和0组成的数组。

示例2:array_map()函数创建嵌套数组

<?php $a = array(1, 2, 3); $b = array("one", "two", "three"); $result = array_map(null, $a, $b); echo "<pre>"; print_r($result); echo "</pre>"; ?>

在PHP中,使用array_map()函数可以创建嵌套数组。为此,我们必须传递null作为参数来代替functionName参数和数组列表来创建数组数组。

输出:

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关栏目教程!!!

展开
收起

不会php代码怎么做网站?教你轻松使用各种开源系统建站方法

做网站大家首先想到的就是要怎么写代码,选择PHP还是asp,或者Java等语言,还有数据库使用MySQL、oracle还是access等等,其实完全没有那个担心,很多的个人站长并不会写代码,这是事实。只要掌握网站建设的基本方法,对于各种类型的开源网站系统都可以轻松驾驭,做出漂亮的网站。

01了解开源网站系统

开源网站系统就是开放源代码的意思,所有的代码均没有被加密,你可以任意修改,直到满足你的功能未知;开源系统一般不允许二次发布或销售,你自己使用,随便你怎么改都可以,但是不能把你改好的进行销售或再一次发布。

现在90%以上的开源网站系统使用的是PHP语言开发,主要是PHP免费,MySQL数据库也免费,PHP运行速度快等特点,一般情况下,网站语言选择PHP的就行。部分开源系统会有购买授权这一要求,个人仍然是可以免费使用的,如果是公司使用可以根据实际情况购买授权,比如你的网站已经稳定运营了,建议购买,如果是刚开始或者运营不稳定,暂缓购买授权也行(不买也可以,只不过为了减少不必要的麻烦买一个授权更放心)。

常用的开源网站系统,均为PHP+MySQL

dedecms:开源用来搭建资讯类,个人博客,企业网站,图片站,商品展示,商城,分类信息站等,功能强大,不可多得的内容管理系统,有授权,不买也可以使用;简单易学,入门很快。

discuz:简称DZ,做论坛就用他了,你现在看到的论坛网站几乎都是discuz系统搭建的,还可以用来搭建门户网站,dz应用中有很多的插件,能够实现分类信息、地方门户,商城网站,分销等很多功能;模板设计稍微复杂,只要稍加学习即可搞定。

WordPress:国外的一款使用很广泛的博客系统,可以用于搭建个人博客和企业网站。

还有很多不太知名的开源网站系统,如果不知道可以百度搜索。

02本地测试环境介绍

想要使用任何一款开源的网站系统,总是需要先在本地电脑上测试一下,所以配置一个完整的PHP环境就必不可少了,但是PHP环境的搭建优点复杂,于是有了很多的本地集成PHP环境软件,现在比较流行的有PHPstudy,PHPenv及wampserver等,大家可以百度搜索下载安装。

先将PHP集成环境在本地电脑上安装好,再去下载相应的网站源码,在集成环境上安装即可进行测试。

03模板制作或选择免费模板

开源网站系统都有一个共同的特点:模板是通用的。你可以去下载免费的模板直接使用,有条件的话也可以花钱购买一些付费的模板,直接套用就行。

如果是自己设计模板,需要懂得css和HTML相关的代码才行,这个是必须的基础,没有别的办法;其实也有简单的方法,可以去下载一些免费的模板,进行适当的修改即可成为自己的模板。很多仿站就是这么弄得,把别人的css和js文件下载下来,再进行标签套用即可。

04网站上线运营

将我们制作好的网站上线运营,需要购买服务器,可以根据自身的条件选择购买虚拟主机或是独立服务器,要是小型网站,使用虚拟空间就可以了,这个在购买的时候资讯空间商就行。

剩下的就是填充网站内容,优化和推广,获得用户或进行商品销售。网站设计制作是不是也很简单,只要会,一周上线一个网站其实是很容易的,想那些专门卖模板的网站,一套模板稍微修改一下就可以用于另一个网站,一天上线几个网站都可以。

展开
收起

如何利用PHP-FPM实现open_basedir绕过

0X00 安装模式

在PHP中有以下几种常见的安装模式:

1. CGI模式

CGI是通用网关接口,HTTP服务器使用这样的接口程序来调用外部程序,外部程序可以使用任何计算机语言来编写,例如C,C++,Perl,Visual Basic,Shell等等,历史上用来编写CGI程序使用最广泛的是Perl语言。

服务器在认为这是一个CGI请求时,会调用相关CGI程序,并通过环境变量和标准输出将数据传送给CGI程序,CGI程序处理完数据,生成html,然后再通过标准输出将内容返回给服务器,服务器再将内容交给用户浏览器,CGI进程退出。

CGI的出现让WEB从静态变为为动态,随着Web的越来越普及,很多的网站的都需要有动态的页面,以便与浏览者互交。CGI方式的缺点也越来越突出。因为HTTP要生成一个动态页面,系统就必须启动一个新的进程以运行CGI程序,CGI采用fork and execution方式,每次请求都需要新建立CGI程序来进行处理,不断地fork是一项很消耗时间和资源的工作,导致性能的低下。这就出现了FastCGI。

2. FastCGI模式

FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用。FASTCGI快速通用网关接口是常驻内存的CGI,实际上是对CGI程序的进程管理,FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

相关的Fastcgi学习可到合天网安实验室操作实验——Fastcgi安全:本实验介绍了fastcgi安全,是以nginx+php+fastcgi为环境,在多台fastcgi服务器做负载均衡的情况下,容易出现的错误。

3. Module模式

Module模式就是把php作为apache的一个子模块来运行,使用LoadModule来加载php模块,比如在apache的配置文件中

//httpd.confLoadModule php7_module "${INSTALL_DIR}/bin/php/php7.2.13/php7apache2_4.dll"

当web访问php文件时,apache会调用php模块来解析,phpmodule通过sapi来把数据传递给php解析器进行解析。

4. PHP-FPM模式

最后是本篇文章的主角PHP-FPM,FPM是一个FastCGI协议解析器,Nginx等服务器中间件将用户请求按照FastCGI的规则打包好发送给PHP-FPM,再由PHP-FPM来将打包的数据进行解析并与FastCGI进行通信,PHP-FPM就是为了实现和管理FastCGI协议的进程(fastcgi进程管理器),管理一个进程池,处理来自于web服务器的请求。其中,Ngnix与PHP-FPM有两种通信方式,分别是TCP与Unix domain sockets模式。在windows系统中只能使用tcp socket的通信方式。

TCP模式

TCP模式是PHP-FPM进程监听本机上端口(默认为9000),Ngnix将用户请求按照fastcgi的规则打包好发送给php-fpm,由PHP-FPM调用cgi进行解析。TCP通信模式允许通过网络进程之间的通信,也可以通过loopback进行本地进程之间通信。

Unix domain sockets模式

Unix socket 又叫 IPC (inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信,这种方式需要在 Ngnix配置文件中填写 PHP-FPM 的 socket 文件位置。

在P神的Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编(https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html)写这篇文章中对其中的原理已经做了比较详细的解释:

假如用户访问

http://127.0.0.1/index.php?a=1&b=2

如果web 目录为/var/www/html,Nginx将请求变成键值对

{

'GATEWAY_INTERFACE': 'FastCGI/1.0',

'REQUEST_METHOD': 'GET',

'SCRIPT_FILENAME': '/var/www/html/index.php',

'SCRIPT_NAME': '/index.php',

'QUERY_STRING': '?a=1&b=2',

'REQUEST_URI': '/index.php?a=1&b=2',

'DOCUMENT_ROOT': '/var/www/html',

'SERVER_SOFTWARE': 'php/fcgiclient',

'REMOTE_ADDR': '127.0.0.1',

'REMOTE_PORT': '12345',

'SERVER_ADDR': '127.0.0.1',

'SERVER_PORT': '80',

'SERVER_NAME': "localhost",

'SERVER_PROTOCOL': 'HTTP/1.1'

}

这个数组其实就是PHP中$_SERVER数组的一部分,也就是PHP里的环境变量。其作用不仅是填充$_SERVER数组,也是在告诉FPM要执行哪个PHP文件。当PHP-FPM拿到了数据包在之后,进行解析,得到了环境变量,然后执行SCRIPT_FILENAME的值指向的PHP文件,即/var/www/html/index.php。

0X01 如何利用

PHP-FPM默认监听9000端口,如果这个端口暴露在公网,则我们可以自己构造FastCGI协议,和FPM进行通信。这时候可以利用SCRIPT_FILENAME来指定执行php文件,如果文件不存在则返回404。在Nginx中存在一个配置限定了只有带某些后缀的文件才允许被PHP-FPM执行,默认为.php,security.limit_extensions

; Limits the extensions of the main script FPM will allow to parse. This can

; prevent configuration mistakes on the web server side. You should only limit

; FPM to .php extensions to prevent malicious users to use other extensions to

; exectute php code.

; Note: set an empty value to allow all extensions.

; Default Value: .php

;security.limit_extensions = .php .php3 .php4 .php5 .php7

为了避免404,首先需要找到已存在的PHP文件,如果不知道web的绝对路径或者web目录下的php文件名,可以使用全局搜索得到环境中默认的php文件。

find / -name "*.php"

在我们获得一个webshell的时候,怎么能突破限制执行任意PHP代码呢?

首先我们能控制

SCRIPT_FILENAME

,让fpm执行的任意文件,但是也只是执行目标服务器上的文件,并不能执行我们需要其执行的文件,但是在PHP中有很多有趣的技巧,比如在php.ini中有两个配置项

auto_prepend_file //在执行目标文件之前,先包含auto_prepend_file中指定的文件

auto_append_file //在执行完成目标文件后,包含auto_append_file指向的文件

如果设置auto_prepend_file为php://input,则相当于执行任何php文件之前会包含$_POST中的内容,使用php://input需要开启远程文件包含(allow_url_include)。

在PHP-FPM中还会解析两个环境变量

PHP_VALUE //用于设置PHP的配置项,除 disable_function 以外的大部分 php 配置

PHP_ADMIN_VALUE

设置auto_prepend_file = php://input且allow_url_include = On,然后将我们需要执行的代码放在Body中,即可执行任意代码。

{

'GATEWAY_INTERFACE': 'FastCGI/1.0',

'REQUEST_METHOD': 'GET',

'SCRIPT_FILENAME': '/var/www/html/index.php',

'SCRIPT_NAME': '/index.php',

'QUERY_STRING': '?a=1&b=2',

'REQUEST_URI': '/index.php?a=1&b=2',

'DOCUMENT_ROOT': '/var/www/html',

'SERVER_SOFTWARE': 'php/fcgiclient',

'REMOTE_ADDR': '127.0.0.1',

'REMOTE_PORT': '12345',

'SERVER_ADDR': '127.0.0.1',

'SERVER_PORT': '80',

'SERVER_NAME': "localhost",

'SERVER_PROTOCOL': 'HTTP/1.1'

'PHP_VALUE': 'auto_prepend_file = php://input',

'PHP_ADMIN_VALUE': 'allow_url_include = On'

}

以上介绍的只是对PHP-FPM进行攻击的正常流程,假如环境中增加了disable_functions的限制,如果使用包含PHP_VALUE==disable_function=的恶意FastCgi攻击FPM时,只能修改展示phpinfo信息的EG(ini_directives),也就是表面修改,对于已经禁用的函数无效的。

0X02 实例解析

以SUCTF2019中的一道题为例easyphp,在获得webshell以后,发现有disable_functions的限制,这里可以通过与php-fpm进行通信来绕过open_basedir。

这里想要获得flag需要利用php_value对open_basedir的值进行重设

'PHP_VALUE': 'auto_prepend_file = php://input'+chr(0x0A)+'open_basedir = /',

官方给的环境很有问题,少了upload目录,需要自行加上,进去以后直接用官方给的exp复现也没成功,进去docker发现php-fpm根本没有起,emmmm醉了

直接在ubuntu16.04起一个phpfpm

sudo apt update sudo apt install -y nginx sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:ondrej/php sudo apt update sudo apt install -y php7.3-fpm

修改nginx站点文件

sudo vim /etc/nginx/sites-enabled/default

启用unix socket模式

sudo vim /etc/php/7.3/fpm/pool.d/www.conf

配置php-fpm监听,将listen参数修改为127.0.0.1:9000

重启php-fpm和nginx

/etc/init.d/php7.3-fpm restart

service nginx restart

修改相应的open_basedir

利用php-fpm通信来修改basedir,用p神的脚本修改一下

最后绕过open_basedir成功

0X03 参考链接

留言或私信获取链接哦

展开
收起

php如何使用array_merge()函数?(代码示例)

array_merge()是PHP中的一个内置函数,它可以将两个或多个数组的元素或值合并为一个数组,然后返回这个数组。下面我们就来具体介绍一下array_merge()函数的用法,希望对大家有所帮助。

array_merge()函数

array_merge()函数用逗号(',')分隔的数组列表作为需要合并的参数,然后将后一个数组的值附加在前一个数组的末尾,形成一个新数组并返回,这个数组中包含在参数中传递的数组的合并值。

说明:我们可以在参数中传递任意数量的数组。

基本语法:

array array_merge($array1, $array2, ......, $arrayn)

array_merge()函数的使用

下面我们通过简单的示例来介绍array_merge()函数的工作原理,让大家了解如何使用array_merge()函数。

示例1:使用整数键传递参数

如果将参数传递给array_merge()函数,并且此数组参数的键为整数,则输出数组中的键将从0开始重新编号,并将下一个元素的值递增1。

<?php $my_array = array(1 => "PHP", 3=>"Python", 2=>"Java"); $res = array_merge($my_array); echo "<pre>";print_r($res); echo "</pre>";?>

输出:

示例2:合并两个使用整数键的数组

<?php $my_array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a'); $my_array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b'); $res = array_merge($my_array1,$my_array2);echo "<pre>";print_r($res); echo "</pre>";?>

输出:

示例3:综合示例

<?php $my_array1 = array("size" => "big", 2 =>2,3 ); $my_array2 = array(1 =>"a", "b", "size" => "medium", "shape" => "circle", 4); $res = array_merge($my_array1, $my_array2); echo "<pre>";print_r($res); echo "</pre>";?>

输出:

示例说明:

当有两个数组作为参数传递给array_merge()函数时,后一个数组的值将附加在前一个数组的末尾。如果两个元素具有相同的字符串键,则后一个值将覆盖前一个值;如果有整数键,则从零开始重新编号。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关栏目教程!!!

展开
收起

如何使用PHP语言开发《内容管理系统》

前言

实验室的孙同学,希望自己的毕业作品是一套“通用的企业后台管理系统”,因为他经常要给客户做网站,希望能有一套工具来快速生成。

今天,就和大家分享一下我对此类系统的分析和理解,并作为最近一阶段实验室的《独立开发实战项目》

此类系统的难度是什么?

自行车的结构很简单,折叠自行车也仅仅是增加了一点复杂度。但是,如果客户要求 “折叠后的自行车要装进双肩包”,你怎么办?

所以,最大的难度是:灵活、灵活、灵活;如何灵活满足各种客户的需求,是不变的追求。

什么是,通用的企业后台管理系统

很多网站的主要功能都差不多,比如:用户、新闻、产品这些,不同的网站主要是设计区别,以及少量的功能差别,尤其是对企业网站来说。

为了降低开发成本,就可以开发一套相对通用的管理系统,快速生成,也就是《内容管理系统》

什么是,内容管理系统

英文缩写:CMS,其功能可谓万金油。只要是 “内容” 都归它管。这些都是内容:会员、新闻、文章、日志、商品等等,所以可大可小。

大到门户网站的新闻系统(比如news.163.com),小到个人博客,都是内容管理系统。

有哪些,开源的内容管理系统

开源 = 免费下载源代码

十几年前我用过 ecms、dedecms假设网站,最高日IP近10万,说起来还有点小骄傲呢。后来在CMS爆发期,各种各样的管理系统蜂拥而出,不过我已经不怎么用此类产品了。

厉害一点的像wordpress、Joomla、Drupal等,厉害到什么程度呢? 虽然 wordpress 是免费的,但是有些公司为它们开发插件、设计模板,能有千万级美金的收益。

内容管理系统,有什么特点

后台强大以 ecms 做例子,它的后台大约是这样的。

有些企业网站,做出来的网站可能是这样的(仅仅是举例,也有很多用来制作大型网站)

配置多样因为功能太多,所以需要配置大量的开关,来进行取舍。所以,越强大的CMS开关越多,专业的CMS是需要专门培训的(就好像你学 office 软件一样)

插件开发再好的系统也不可能兼容所有需求,尤其是内容本身的涵盖就很广。所以,好的CMS必须留有“插件”机制,允许开发人员,针对特性需求进行二次开发。就好像U盘一样,即插即用,随时可拓展功能。

这方面,可以参考 wordpress,这是它的插件库:https://wordpress.org/plugins/,目前有 55439 个插件,没有做不到只有想不到。

模板管理因为一套CMS要胜任不同的前台需求,加之后台功能丰富无比,所以一套好的模板引擎必不可少,尤其是自定义的模板标签,这样才能实现千变万化的数据调用。

当然,不要一口吃个胖子

作为实验室的萌新,想一下完成这样的内容管理系统,过于苛刻了。我们可以分成多个版本来实现。

基本功能管理员模块配置模块用户模块内容模块

这是最基础的,有了这几个模块,就可以实现一些基本需求了,至少做个价值千元的企业网站不成问题。

插件机制因为需求千变万化,所以应尽快完成“插件”功能,将一些非核心功能以插件的形式加载,避免对系统核心造成负面影响。

模板机制为了实现数据的灵活调用,提供一些模板标签吧。

不断迭代一个系统,永远没有完美的时候,如何保持轻盈又能灵活完成需求,是开发团队需要不断思考的。

总结

内容管理系统,作为一个“万金油”,还蛮适合作为新人的入门之作的,从简单到复杂。

展开
收起

php如何搭建最简单的运行环境(入门2)?

大家好!我们写的代码想要运行起来就必须要有环境,没有执行环境代码是运行不起来的,那么如何搭建一个最简单环境呢?搭建环境有两种方式:一:linux系统环境下面编译安装。二:win系统一键安装包。为了让新手能快速入门,我这里只讲Windows系统(win7/win8/win10)环境下一键安装包的搭建方式,毕竟新手对Windows操作很熟悉。

一:PHP一键安装包的方式。

所谓一键安装包就是把apache+mysql+php全部集成安装好,简单省心。到现在很多中级程序员,甚至少数高级程序员都是用一键安装包搭建自己的运行环境。

下载一键安装包。我推荐去phpstudy的官网上面下载选择Windows版本的。

下载phpstudy一键安装包

下载之后,点击exe结尾的执行文件。记得不要用用默认安装,默认的话会安装在C盘里面。所有下载安装的软件尽量不要安装在C盘,这个是常识。要选择自定义安装在D盘或者E盘里面。

2:如何启动一键安装包。

点击启动apache按钮apache启动之后的界面

安装完成后,点击apache的启动按钮,php运行环境搭建好了。暂时mysql可以不启动,mysql是存放数据用的。后面再教大家如何使用mysql。

2:配置虚拟域名。

由于工作实际开发过程中都是用域名来访问,比如后面用的Laravel框架,thinkphp框架都是配置域名来访问的,所以我们就配置一个域名来访问服务器。

配置虚拟域名

在phpsudy控制面板里面,选择最下面的【设置】-》hossts,用记事本打开输入127.0.0.1 test100.com。这个网址(域名)是随便取的,可以根据自己的爱好修改,记得保存。意思就是我在浏览器访问test100.com这个网站,实际上是访问自己本电脑的apache服务器。顺便补充一下上图IP地址前面的#号是失效的意思,和删除是一个道理,所以正常使用的前面就不要加#号了。

3:配置虚拟域名的艮目录。

配置网站域名的根目录

继续选择最下面的【网站】-》【新建网站】-》【基本配置】域名一栏,填写刚才自己的域名,比如test100.com。根目录的路径写到安装phpstudy的www目录下面,点击保存。

4:测试php运行环境。

访问搭建的php运行环境

在浏览器里面输入刚才的网址(域名),提示站点创建成功。ok大功告成,估计不会写代码的人也会搭建了,以后就可以建设自己的网站了。记得www是根目录,php代码都要放在这个目录(文件夹)里面,放在别的地方就运行不了。有疑问的请给我留言,乐于效劳。

展开
收起

thinkphp如何使用vue进行web开发

vue可以说是近几年最火最流行的前端js框架,而thinkphp也是国内挺流行的后端框架。看到网上很多朋友的教程都是前端开发者写的,难免对像自己一样的后端程序员是一种打击。“怎么就没有从后台出发讲讲如何使用前端vue框架呢?”我时常这样想。终于我有机会,在一个公司内部的管理系统中成功将两者融合。

整个项目的系统后台使用php的thinkphp框架,前端使用vue的element ui框架,前后台交互使用axios库。这就是整个架构了。我要介绍的重点也就是大家关心的thinkphp,如何与vue交互。

vue中的v-for循环输出可以用thinkphp的volist标签进行替代。

volist标签进行替代v-for

2.vue的v-model绑定到在vue的data()属性中的一个thinkphp的变量(如{$变量名})。作用是前端元素的属性值变化随着{$变量名}变化而变化。记住是v-model="{$vo2['id']}"

v-model绑定到thinkphp的变量

3.vue前端与后台的交互使用axios库。这个axios相当于ajax。

4.按钮的单击事件使用@事件名:"绑定函数名"。如图:click是element ui的事件名称,文档中可以查到.onsubmit是绑定的函数.element ui 的属性以:开头,如:true-label="1",true-label是第六点提到的Checkbox的一个属性.可以参考下文档.

@开头的事件绑定的onsubmit函数使用

5.element ui框架中的事件如何调用呢?这其实就是初次使用的朋友不知道如何写事件的参数.如何知道事件有哪些参数,我想加入自定义的参数而不破坏原先事件自带的参数呢?看到这里朋友们的疑问就可以解决了.请看下面的例子:

我以Checkbox 多选框为例,具体文档大家可以看官网的文档说明.Checkbox 多选框有个change事件

Checkbox 多选框的change事件

change事件有个回调参数,大家一看到这个肯定就晕乎了,这参数传入什么呢,参数到底有几个呢?我测试过它的参数有2个.其中一个是官网上写的"更新后的值",还有一个可能是内置的事件参数(这个参数很多属性,与checkbox对象有关).我是如何判断事件的参数的呢,就是在vue的methods中写一个onclick函数,参数任意给我这给的是a,b,然后console.debug(a,b);即可.下边是输出2个参数的代码:

注意事件名称后边没有括号哦未知参数的前提下输出2个试探参数a,b

通过浏览器控制台的输出可以看到第一个参数就是选中或不选中的值:true/false.第二个参数就是很长的对象了.结果如下:

浏览器输出

写到这里我发现我应该单独拿出来写一篇文章给大家说说,越写越多啊!

接着第5点说,事件中我想加入参数还要带着原有的参数,怎么整呢?好办在

@change绑定事件的名称中加入一个参数$event即可.如下图我第二个参数传的是一个id整数值.

html页面调用element ui的事件

浏览器输出如下:

多加个参数的输出

浏览器控制台的输出结果1是:true-label的值,而7是我数据库表格的id.

经过以上介绍,我就把think PHP中如何使用element ui的知识点基本说到了.如果有朋友没听说讲清楚可以评论中喊我,我看到了就会回复的.欢迎交流.

展开
收起

php如何利用ssh2技术实现远程登录并操作服务器上的程序

由于工作需要将一个在linux端运行的软件可视化,打算基于web的形式将其可视化。带来的问题是如何跨平台无缝衔接web和linux中的软件,有幸的看到一个方法,利用ssh2技术即可实现我的需求。下面提供我的案例:

首先在linux端安装ssh2包,然后在需要执行linux命令,运行linux端程序的页面加入以下代码:

$host='*******';//服务器的ip$user='****';//用户名$passwd='******';//密码// 链接远程服务器$connection = ssh2_connect($host, 22); if (!$connection) die('connection to '.$host.':22 failed'); echo'connection OK'; // 获取验证方式并打印$auth_methods = ssh2_auth_none($connection, $user); print_r( $auth_methods.''); if (in_array('password', $auth_methods )) { // 通过password方式登录远程服务器if (ssh2_auth_password($connection, $user, $passwd)) { echo$user.' login OK'; $stream = ssh2_exec($connection, "命令1&&命令2"); // 一条一条地执行linux命令stream_set_blocking($stream, true); // 获取执行pwd后的内容if ($stream === FALSE) die("pwd failed"); echo stream_get_contents($stream).''; } else{ die( $user.' login Failed'); } } ?>

亲测有效。

展开
收起

如何用PHP开发一个完整的网站

尽量完整的需求方案,具体到功能上:建模结构UML,建立数据库: 1、建立的表名、字段名要与他的功能有关系。 2、根据结构建立数据库表,原则是不定项内容一定要分表。 3、字段类型要考虑内容是否够用就够就好,选择适合的类型INT Varchar Date(4)设计HTML文件和脚本的实现 根据模和数据库来设计页面是个很科学的方法,当然有的时候有人喜欢根据模型设计页面,数据库基于页面设计,都是可以的。 设计页面时要考虑到每个细节,包括提示消息页面,错误页面。(5)PHP代码的书写1、先建立底层结构和文件夹(如果是大型的网站同样设计一个文件UMML)2、基础功能分类关联,以便今后代码引用。3、代码的书写,注意简洁性和函数的使用,内部函数能实现的尽量使用内部函数。4、在部分关键位置加以代码注释。(6)程序的测试和修正1、对于发现的BUG不能就解决BUG而解决,要处于完整程序考虑。避免收之东隅收之桑榆。2、对于解决过的BUG已经要详细记录,以便日后更新。多人开发应该注意什么使用版本服务器:CVS、SVN...功能:1、单个文件历史版本的记录和恢复2、文件的锁定和更新3、单个或多个文件程序之间的沟通4、保护程序的安全性不受单个程序的误操作而丢失

尽量完整的需求方案,具体到功能上:建模结构UML,建立数据库: 1、建立的表名、字段名要与他的功能有关系。 2、根据结构建立数据库表,原则是不定项内容一定要分表。 3、字段类型要考虑内容是否够用就够就好,选择适合的类型INT Varchar Date(4)设计HTML文件和脚本的实现 根据模和数据库来设计页面是个很科学的方法,当然有的时候有人喜欢根据模型设计页面,数据库基于页面设计,都是可以的。 设计页面时要考虑到每个细节,包括提示消息页面,错误页面。

(5)PHP代码的书写1、先建立底层结构和文件夹(如果是大型的网站同样设计一个文件UMML)2、基础功能分类关联,以便今后代码引用。3、代码的书写,注意简洁性和函数的使用,内部函数能实现的尽量使用内部函数。4、在部分关键位置加以代码注释。(6)程序的测试和修正1、对于发现的BUG不能就解决BUG而解决,要处于完整程序考虑。避免收之东隅收之桑榆。2、对于解决过的BUG已经要详细记录,以便日后更新。多人开发应该注意什么使用版本服务器:CVS、SVN...功能:1、单个文件历史版本的记录和恢复2、文件的锁定和更新3、单个或多个文件程序之间的沟通4、保护程序的安全性不受单个程序的误操作而丢失

文章来源:昆明网站建设专业品牌——找北网络科技(zhaobeikj.com)

展开
收起

php如何使用变量(入门3)

php是世界上最好的语言

php的环境搭建好了之后,我们就可以写代码了。

一:如何新建PHP文件。

上一节介绍怎么搭建环境,现在接着在环境目录www(根目录)下面新建一个php文件。新建一个记事本文件,然后后缀修改成php结尾。

新建txt文件,然后修改成php结尾

二:变量?

1:变量是用$美元符号表示的,后面接着英文单词,或者汉语拼音都可以,为了方别可读性最好用英文单词表示。

2:变量是什么呢,变量好比是一个空箱子,用来临时存放数据的。$name='zhangsan';意思是把zhangsan赋值给$name,中间的=是赋值的意思,不是等于号。你给变量什么值,他就是什么什么值,随时可以改变。

$name='zhangsan';

$name='lisi';

开始给$name这个变量赋值为zhangsan,那么$name就是zhangsan,后面又$name='lisi',那么$name就不再是zhangsan了,现在是lisi了。现在就明白了,变量的值是会变得,你给他赋值什么,就变成什么值。

3:至于环境变量,魔法变量,静态变量。这些后面再讲,先入门。

4:我们现在就会写变量了,就是$符合后面跟着英文单词或者字母,名字随便取。

5:官方的变量名规则,可以参考,我讲的比较通俗。

PHP 变量规则:

变量以 $ 符号开始,后面跟着变量的名称变量名必须以字母或者下划线字符开始变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )变量名不能包含空格变量名是区分大小写的($y 和 $Y 是两个不同的变量)6:在PHP标签里面写标量,下面是案例。

<?php

$txt="Hello world!";

$x=5;

$y=10.5;

?>

展开
收起