php高级
Posted xingyuchao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php高级相关的知识,希望对你有一定的参考价值。
- 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"]:由文件上传导致的错误代码
- $_FILES
- 错误处理
- 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以外
- 默认错误处理程序是内建的错误处理程序
- 错误报告
- 简单的die()语句
- php中一些最为重要的错误检测方法
- 异常处理
- 什么事异常
- 用于在指定的错误发生时改变脚本的正常流程
- 当异常被触发时,通常会发生
- 当前代码状态被保存
- 代码执行被切换到预定义的异常处理器函数
- 处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本
- 不同的错误处理方法
- 异常的基本使用
- 当异常被抛出时,其后的代码不会继续执行,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
- 用于允许或禁止字符串中指定的字符
- 无数据格式规则
- 始终返回字符串
- Validating
- 什么是php过滤器
- date函数:把时间戳格式化为更易懂的日期和时间
- php的安全
- 跨站点脚本(Cross-site scripting , XSS)
- 一种计算机安全漏洞类型,一般都是出现在web应用程序
- XSS能够使攻击者向其他用户浏览的网页中输入客户端脚本
- 如何预防
- htmlspecialchars()函数
- 将特殊字符转化为html实体,这么做的含义是防止攻击者通过在表单中注入HTML或javascript代码
- htmlspecialchars()函数
- 在用户提交表单的时候我们还需要做两件事:
- 通过PHP trim函数,去除用户输入数据中不必要的字符(多余的空格,制表符,换行)
- 通过PHP stripslashes函数,删除用户输入数据中的反斜杠(\)
- 尽量使用检查函数,$_SERVER[‘REQUEST_METHOD‘]
- E-mail注入
- 未经授权的用户可通过输入表单在邮件头部插入数据
- 预防E-mail注入
- 最好的方法是对输入进行验证
- FILTER_SANITIZE_EMAIL:从字符串中删除电子邮件的非法字符
- FILTER_VALIDATE_EMAIL:验证电子邮件地址
- filter_var:通过指定的过滤器过滤变量
- spamcheck:电子邮件扫描和Linux系统的检疫制度
- 跨站点脚本(Cross-site scripting , XSS)
以上是关于php高级的主要内容,如果未能解决你的问题,请参考以下文章