首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Web开发
> 详细
php高级
时间:
2019-06-10 21:13:04
阅读:
128
评论:
0
收藏:
0
[点我收藏+]
标签:
file
def
文件中
空格
单个字符
字符
一个
错误代码
硬盘
php表单
GET和POST都创建数组
GET和POST被视作$_GET和$_POST,都是超全局变量,意思就是前段传来的get或者post的请求,控制器可以不用定义$_GET和$_POST就可以用
$_GET是通过URL参数传递到当前脚本的变量数组
$_POST是通过HTTP POST传递到当前脚本的变量数组
我们之所以说GET传值是不安全的是因为从表单发送的信息对任何人都可见的,都是在url中可以看到的,get对发送信息的数量是有限制的,大约在2000个字符
前方高危:注意一定不要用GET方式发送敏感数据,会导致你的信息让别人看到哦!
POST传值从表单发送的信息对其他人都是不可见的,对信息的数量也是没有限制的
$_SERVER[‘PHP_SELF‘]
一种超全局变量,返回的是当前正在执行的脚本名称
将表单数据发送到本身,不进行页面的跳转
php高级
date函数:把时间戳格式化为更易懂的日期和时间
有两个参数,第一个参数是必填的(Y-m-d H:i:s),第二个是可选的time()
dete_default_timezone_set:设置时区
date(“h:i:sa”)
mktime:创建日期
mktime(hour,minute,second,month,day,year) 时,分,秒,年,月,日
strtotime:将可读的字符串转换成Unix时间
include和require语句
错误处理方面
require会生成致命错误,并停止脚本
include只生成警告,脚本继续运行
应用场景
require:当文件被应用程序请求时
include:当文件不是必需的,且应用程序在文件未找到是应该继续运行时
操作文件
前方高危
当操作文件时必须非常小心,如果操作失误,可能会造成非常严重的破坏
常见的错误
编辑错误的文件
被垃圾数据填满硬盘
意外删除文件内容
readfile:读取文件,并把它写入输出缓存
fopen:打开文件
两个参数,第一个是打开文件的名字,第二个打开的模式
模式
r:打开文件为只读,文件指针在文件的开头开始
w:打开文件为只写,删除文件的内容或创建一个新的文件,如果它不存在,文件的指针在文件的开头开始
a:打开文件为只写,文件中的现有数据会被保留,文件指针在文件结尾开始,如果文件不存在,创建新的文件
x:创建新文件为只写,如果文件存在,返回false和错误
r+:同上
w+:同上
a+:同上
x+:同上
fread:读取打开的文件
两个参数,第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数
fclose:关闭打开的文件
养成用完文件之后将他们全部关闭的习惯
fgets:用于从文件读取单行
feof:检查是否已到达“end-of-file”
对于遍历未知长度的数据很有用
fgetc:用于从文件读取单个字符
fwrite:用于写入文件
两个参数,第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串
后写入的文件会覆盖之前文件的内容
文件上传
$_FILES
$_FILES["file"]["name"]:被上传文件的名称
$_FILES["file"]["type"]:被上传文件的类型
$_FILES["file"]["size"]:被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"]:存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"]:由文件上传导致的错误代码
错误处理
php中一些最为重要的错误检测方法
简单的die()语句
基本的错误处理:使用die()函数
自定义错误和错误触发器
默认错误处理程序是内建的错误处理程序
E_USER_ERROR:致命的用户生成的run-time,错误无法恢复,脚本执行被中断
E_USER_WARNING:非致命的用户生成的run-time警告,脚本执行不会被中断
E_USER_NOTICE:默认,用户生成的run-time通知,脚本发现了可能的错误,也可能在脚本正常运行时发生
创建一个错误专用函数,该函数至少有2个参数(error_level,error_message),对多可接受5个参数(可选file,line-number以及error_context)
error_level:必须,为用户定义的错误规定错误报告级别
error-message:必须,为用户定义的错误规定错误消息
error_file:规定错误在其中发生的文件名
error_line:规定错误发生的行号
error_context:规定一个数组,包含了当错误发生时在用的每个变量以及它们的值
错误报告级别级别
E_WARNING:非致命的run-time错误
E_NOTICE:run-time通知,脚本发现可能有错误发生,但也可能在脚本正常运行时发生
E_USER_ERROR:致命的用户生成的错误
E_USER_WARNING:非致命的用户生成的警告
E_USER_NOTICE:用户生成的通知
E_RECOVERABLE_ERROR:可捕获的致命错误
E_ALL:所有错误和警告除级别E_STRICT以外
错误报告
异常处理
什么事异常
用于在指定的错误发生时改变脚本的正常流程
当异常被触发时,通常会发生
当前代码状态被保存
代码执行被切换到预定义的异常处理器函数
处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本
不同的错误处理方法
异常的基本使用
当异常被抛出时,其后的代码不会继续执行,php会尝试查找匹配的“catch”代码块
如果异常没有被捕获,而且又没有使用set_seception_handler作相应的处理的话,那么将发生一个严重的错误,并且输出“Uncaught Exception”(未捕获异常)的错误消息
创建自定义的异常处理器
多个异常
重新抛出异常
设置顶层异常处理器
set_exception_handler:设置处理未捕获异常的用户定义函数
Try:使用异常的函数应该位于“try”代码块内,如果没有触发异常,则代码将照常执行,如果异常被触发,将会抛出一个异常
Throw:规定如何触发异常,每一个“throw”必须对应至少一个“catch”
Catch:“catch”代码块会捕获异常,并创建一个包含异常信息的对象
异常的规则
需要进行异常处理的代码应该放入try代码块内,以便捕获潜在的异常
每个try或throw代码块必须至少拥有一个应用的catch代码块
使用多个catch代码块可以捕获不同种类的异常
可以在try代码块内的catch代码块中再次抛出(re-throw)异常
如果抛出异常,就必须捕获它
过滤器
什么是php过滤器
用于验证和过滤来自非安全来源的数据
验证和过滤用户输入或自定义数据是任何web应用程序的重要组成部分
设计php的过滤器扩展的目的是使数据过滤更轻松快捷
为什么使用过滤器
几乎所有web应用程序都依赖外部的输入,这些数据通常来自用户或其他应用程序,通过使用过滤器,能够确保应有程序获得正确的输入类型
始终对外部数据进行过滤
什么事外部数据
来自表单的输入数据
cookies
服务器变量
数据库查询结果
输入过滤是最重要的应用程序安全课题之一
函数和过滤器
如果需要过滤变量,使用下面的过滤器函数之一
filter_var:通过一个指定的过滤器函数来过滤单一的变量
filter_var_array:通过相同的或不同的过滤器来过滤多个变量
filter_input:获取一个输入变量,并对它进行过滤
filter_input_array:获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
两种过滤器
Validating
用于验证用户输入
严格的格式规则
如果成功则返回预期的类型,如果失败则返回FALSE
Sanitizing
用于允许或禁止字符串中指定的字符
无数据格式规则
始终返回字符串
php的安全
跨站点脚本(Cross-site scripting , XSS)
一种计算机安全漏洞类型,一般都是出现在web应用程序
XSS能够使攻击者向其他用户浏览的网页中输入客户端脚本
如何预防
htmlspecialchars()函数
将特殊字符转化为html实体,这么做的含义是防止攻击者通过在表单中注入HTML或javascript代码
在用户提交表单的时候我们还需要做两件事:
通过PHP trim函数,去除用户输入数据中不必要的字符(多余的空格,制表符,换行)
通过PHP stripslashes函数,删除用户输入数据中的反斜杠(\)
尽量使用检查函数,$_SERVER[‘REQUEST_METHOD‘]
E-mail注入
未经授权的用户可通过输入表单在邮件头部插入数据
预防E-mail注入
最好的方法是对输入进行验证
FILTER_SANITIZE_EMAIL:从字符串中删除电子邮件的非法字符
FILTER_VALIDATE_EMAIL:验证电子邮件地址
filter_var:通过指定的过滤器过滤变量
spamcheck:电子邮件扫描和Linux系统的检疫制度
php高级
标签:
file
def
文件中
空格
单个字符
字符
一个
错误代码
硬盘
原文地址:https://www.cnblogs.com/xingyuchao/p/11000212.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
36.VUE — 认识 Webpack 和 安装
2021-07-28
【PHP】上传图片翻转问题
2021-07-28
php对数字进行万。亿的转化
2021-07-28
五个 .NET 性能小贴士
2021-07-28
Three.js中显示坐标轴、平面、球体、四方体
2021-07-28
.net 5+ 知新:【1】 .Net 5 基本概念和开发环境搭建
2021-07-27
1.html,css
2021-07-27
基于Docker搭建 Php-fpm + Nginx 环境
2021-07-27
nginx + http + svn
2021-07-27
kubernets kube-proxy的代理 iptables和ipvs
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!