【day09】PHP
一.函数
1. 作用域(Scope)
(1)局部变量:变量在声明的代码段中有效
a.动态变量
b.静态变量:static ,用在函数中,当调用函数后内存不释放,能存储变量的最后的值。
(2)全局变量:变量在任意范围中都有效,但必须在函数中声明全局变量
global
$GLOBALS
(3)超全局变量:变量在任意范围中都有效,并且不用声明变量
说明:所有的预定义变量都是超全局变量
2.预定义变量
$_POST:接受表单中传输方式'post'信息,名/值
$_GET:接受表单中传输方式'get'信息,名/值
$GLOBALS:全局变量
$_FILES:接受表单中上传的信息
$_REQUEST:等同于 $_POST,$_GET,$_COOKIE的接受
$_COOKIE:会话机制,跨页面传输信息
$_SESSION:会话机制,跨页面传输信息
$_SERVER:获得服务器信息
$_ENV:环境变量
说明:
a.预定义变量都是以数组形式存储的
例如:获得表单信息中 某一个值:$_POST['user']
print_r($_POST);查看表单元素所有信息
二.常量
1.什么是常量 :程序中不可以改变的量 常量一旦定义不能重复定义
2常量分类
(1)自定义常量
a.声明常量
(a) define('常量名称','值');
(b) const 常量名称='值';(面向对象中定义)
b.输出常量
(a) echo 常量名称;
(b) constant('常量名称');
c.常量名称规范
(a) 没有 $
(b) 常量名称尽量大写
(c) 常量都是标量类型
(d) 常量是超全局变量,除了const定义外
(2)系统常量:
a.PHP_INT_MAX 获得整型最大值
b.PHP_VERSION php版本
c.PHP_OS 操作系统
(3)魔术常量:
__LINE__:获得当前代码的行号
__FILE__:获得当前文件的绝对路径
__DIR__:获得当前文件的目录绝对路径
__FUNCTION__:获得函数名称
__CLASS__:获得类名称
__METHOD__:获得方法名称
__NAMESPACE__:获得命名空间的名称
三.上传
1.表单中具备浏览框的条件
(1) method 必须是 post传输
(2) form标记中添加 enctype="multipart/form-data"
2. 接受上传的信息($_FILES 数组)
(1) $_FILES['浏览框名称']['name']
上传的文件名称
(2) $_FILES['浏览框名称']['type']
上传的文件类型
(3) $_FILES['浏览框名称']['tmp_name']
上传的文件在服务器的临时目录及文件名称
(4) $_FILES['浏览框名称']['error']
上传的文件报错, 0代表成功
(5) $_FILES['浏览框名称']['size']
上传的文件大小,单位 字节(Byte)
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
3.文件报错
(1)UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功。
(2)UPLOAD_ERR_INI_SIZE 其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize=2M 选项限制的值。
(3)UPLOAD_ERR_FORM_SIZE 其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
(4)UPLOAD_ERR_PARTIAL 其值为 3,文件只有部分被上传。
(5)UPLOAD_ERR_NO_FILE 其值为 4,没有文件被上传。
(6)UPLOAD_ERR_NO_TMP_DIR 其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
php.ini 中参数upload_tmp_dir ='临时目录'
(7)UPLOAD_ERR_CANT_WRITE 其值为 7,文件写入失败。PHP 5.1.0 引进。
4. 将临时目录和文件上传到目标位置上
move_uploaed_file($tmpname,'文件夹'+$filename);
5. 包含文件函数
include:当文件加载失败时,报警告(Warning)错误并且后面代码继续执行
require:当文件加载失败时,报致命(Fatal)错误并且后面代码停止执行
include_once:当页面重复加载时,只加载一次
require_once:当页面重复加载时,只加载一次
6.多文件上传
(1) 表单元素名称以数组形式命名,
得三维数组信息,所以将三维数组转为
索引+关联的二维数组
(2) 表单元素名称单独命名,得关联+关联的
二维数组,所以关联+关联转为索引+关联
的二维数组,与单文件上传的区别是有多个
成员值
7. 上传步骤
(1)表单元素中浏览框具备的条件
(2)将上传接受的信息都转为 索引+关联的二维数组
(3)单文件或多文件上传
(a) 获得新的 索引+关联的二维数组(循环每个文件上传)
(b) 判断 上传报错 0 成功
(c) 避免上传文件冲突给文件重命名
(d) 临时目录和文件名称移动到目标位置上
(4) 要求
...
// =================================
Linux 目的:给www 文件夹权限
打开终端
a. su root (进入root用户)
b. 密码: php123456
c. cd / (根目录下)
d. cd home (进入 home 文件夹)
e. ll 查看 home 文件的目录资源 www
f. chmod -R 777 www
f. ll
【day09】PHP的更多相关文章
- 网络编程基础【day09】:socket编程入门(一)
本节内容 1.OSI七层模型 2.概述 3.关系图 4.代码逻辑图 5.socket概念 一.OSI七层模型 二.概述 socket通常也称作"套接字",用于描述IP地址和端口,是 ...
- 网络编程基础【day09】:堡垒机前戏(十一)
本节内容 1.堡垒机前戏 2.SSHClient 3.SFTPClient 一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 ...
- 网络编程基础【day09】:socketserver进阶(十)
本节内容 1.概述 2.多用户并发 3.socketserver.BaseServer 一.概述 之前上一篇写的 day8-socketserver使用 讲解了socketsever如何使用,但是在最 ...
- 网络编程基础【day09】:socketserver使用(九)
本节内容 1.概述 2.socketserver类型 3.创建socketserver步骤 4.简单的代码实现 一.概述 我们之前的用户都是不支持多并发的,所以我们现在需要一个支持多用户,实现一个并发 ...
- 网络编程基础【day09】:socket解决粘包问题之MD5(八)
本节内容 1.概述 2.代码实现 一.概述 上一篇博客讲到的用MD5来校验还是用的之前解决粘包的方法,就是客户端发送一个请求,等待服务端的确认的这样的一个笨方法.下面我们用另外一种方法:就是客户端已经 ...
- 网络编程基础【day09】:socket接收大数据(五)
本节内容 1.概述 2.socket接收大数据 3.中文字符的坑 一.概述 上篇博客写到了,就是说当服务器发送至客户端的数据,大于客户端设置的数据,则就会把数据服务端发过来的数据剩余数据存在IO缓冲区 ...
- 网络编程基础【day09】:socket实现文件发送(六)
本节内容 1.概述 2.文件下载实现 3.MD5值校验 一.概述 我们如何利用socket去下载一个文件,整体思路是这样的: 读取文件名 检测文件是否存在 打开文件 检测文件大小 发送文件大小给客户端 ...
- 网络编程基础【day09】:简单socket实例(二)
本节内容 1.概述 2.socket实例 3.总结 一.概述 之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的? 二.socket实例 2. ...
- 网络编程基础【day09】:通过socket实现简单ssh客户端(三)
本节内容 1.概述 2.socket发送中文 3.重复发送和多次接收 4.模拟ssh客户端 一.概述 本篇博客讲一下,如果socket客户端断了,另外的客户端怎么接入服务端,还有模拟ssh的链接等. ...
- 网络编程基础【day09】:实现简单地ssh(四)
本节内容 概述 简单ssh socket接收大数据的困惑 一.概述 我们用过linux的就知道什么是ssh,它是一种客户端和服务端交互返回的一个解决,输入一个命令,给我返回什么,接下来我们说一说,如何 ...
随机推荐
- Log4j2之ThreadContext
简介 系统中使用log4j2作为日志系统,然而在高并发的情况下,多次请求的日志参杂在一起,要跟踪某个用户一次的请求操作所有日志是很麻烦的.幸运的是log4j中有相应的解决方案. NDC和MDC NDC ...
- react+dva 全局model中异步获取数据state在组件中取不到值
先上结论,不是取不到,是写法有问题. 全文分4部分,1是问题描述,2是一开始的解决想法(错误做法),3是问题产生原因的思考,4是正常解决方法.只想看结论直接跳4 1.问题描述 接触react dva一 ...
- 《2018:skymind.ai 发布了一份非常全面的开源数据集》
这是一份非常全面的开源数据集,你,真的不想要吗? 近期,skymind.ai 发布了一份非常全面的开源数据集.内容包括生物识别.自然图像以及深度学习图像等数据集,现机器之心将其整理如下:(内附链接 ...
- Spring-AOP-配置实现五大通知
码云: xml配置方法:https://gitee.com/MarkPolaris/spring_aop_1 注解配置方法:https://gitee.com/MarkPolaris/spring-e ...
- OpenDaylight开发hello-world项目之功能实现
OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...
- Java类加载机制以及双亲委派模型
一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允 ...
- php 截取字符串 strstr 和strrchr
截取字符串 strstr 和strrchr 结果:(其中之一) strstr : 执行时间在0.10 - 0.19 之间 strrchr : 执行时间在0.095 - 0.19 之间 结论:从数十次执 ...
- eclipse彻底去除validation(彻底解决编辑js文件的卡顿问题)
Eclipse中默认的JS编辑器非常慢,尤其在拷贝粘贴代码时,CPU总是占用很高甚至到100%,也就导致了编辑起来很卡. 这是因为Eclipse中带的Validate功能导致的,这个鸡肋的功能简直让人 ...
- eclipse强行停止buliding workspace
使用Eclipse的过程中可能会遇到buliding workspace卡在一半走不动的情况. 出现这个情况往往是因为Eclipse太调皮了,需要拉出去打屁股,打一顿就好了. 开玩笑的,事实上出现这个 ...
- Python笔记:设计模式之工厂模式
工厂模式:“工厂”即表示一个负责创建其他类型的对象的类,通常情况下,一个工厂的对象会有一个或多个方法与之关联,这些方法用于创建不同类型的对象,工厂对象会根据客户端给方法传递的不同的参数或者客户端调用不 ...