PHP表单处理、会话管理、文件上传、文件处理、执行函数(10.8 第十六天)
表单处理
服务器接收用户发过来的数据方式:
$_GET 接收用户以GET方式发过来的数据
$_POST 接收用户以POST方式发过来的数据
$_COOKIE 接收用户COOKIE
$_REQUEST 接收用户发过来的数据
htmlspecialchars() 实体化编码
文件包含:通过一些文件包含的函数将本地或者远程服务器中文件包含解析到当前服务器中,达到文件读取、代码利用、函数调用等目的
include "文件名 "==include("文件名")
include_once
去包含文件时,后者只需要包含一次即可,当找不到包含的文件,会警告(php warning),后续代码依然会执行
require
require_once
包含文件时,后者只需要包含一次即可,当找不到包含的文件时,会直接报错,后续代码不执行
包含过来文件中,只要文件中代码是标准格式的PHP代码就会被解析,如果里面内容不是PHP代码,就会把内容显示出来。包含文件的写法:可以是相对路径,也可以是绝对路径
注意:读文件时需要注意当前web服务的权限
copy good.png/b+shell.php/a bad.png(Windows 本地生成图片马)
good.png 是一个正常图片 /b 表示比特流文件
shell.php 这是木马文件或者含有php代码的文件
/a 表示ASCII文件 bad.png 这是生成的图片马
会话管理
会话:服务器和用户之间传输数据的方式或者途经,在通道传输数据之间需要建立通道,这个通道可理解为会话,在客户端通过cookie来管理会话,在服务器通过session来管理会话,cookie和session的介绍以及区别?前面已经讲过!!
cookie和session比较:
1、cookie是存放在用户的浏览器中,是服务端通返回包中set-cookie来设置,cookie表示用户的浏览器和服务器之间的会话状态,登录成功之后方可获取cookie数据,该数据一般具有时效性,失效之后需要用户重新去登录。有了cookie数据之后,用户的每次请求都会带上cookie,服务端会验证该cookie的合法性和时效性,cookie的发送需要遵循浏览器的同源策略。
2、session是存放在服务端,表示用户和服务器之间的会话状态,session和cookie是一一对应的,服务器也需要记住哪个用户登录了该站点,一般情况下,session以文件的形式保存在/tmp目录中,形式为:sess_XXXXX,此刻服务器给浏览器分配的cookie跟session一样,只要该cookie的值被修改过,那么服务器就会要求用户重新登录。
cookie的管理,首先需要服务器给用户分发cookie数据,setcookie(name,value,表达式,路径,域范围),后三者可不写,其中表达式 主要用来设置cookie的时效性。注意:setcookie需要写在HTML代码之前
服务器获取cookie:$_COOKIE["cookie的名字"] 注意:需要使用当前打开的浏览器去访问,不能换用其他浏览器。
删除cookie:setcookie("loginInfo","",time()-3600); 通过服务器去删除
session的管理,工作机制:为用户创建唯一的uid,在该uid的基础上存储变量,uid放在cookie或者通过URL去传输(相比较,后者不安全)
在HTML代码之前通过session_start()开启(就意味着在/tmp目录下会生成session文件,格式:sess_uid,uid是32位的),开启之后可以通过session[]数组存储某些变量
销毁session方式:unset()和session_start()一起使用
session_destory()和session_start()一起使用 注意慎用会清除所有的session数据
header() 向用户的浏览器发送HTTP报头
echo"<meta charset='utf-8'/>";
header("Content-Type:text/html;charset=utf-8"); //解决编码问题
header('location:http://www.hacke.com/index.php')
文件上传:通过代码实现上传文件的功能。
explode(标识,字符串),按照标识将字符串分割为数组
explode(".","test.te.png")==arrat("test","te","png")
end(数组)取出数组中最后一个值
in_array($fileEndName, $array) 在数组中匹配要找的内容,如果有,则返回true
move_uploaded_file(临时文件位置,目的位置),将临时文件拷贝到目标位置中
file_exists() 检测文件或者目录是否存在,如果存在,则返回true
文件管理:通过PHP代码进行文件的打开、关闭、读取、写入
fopen(打开文件的位置包含了文件路径和文件名,打开文件的方式)
r 以只读的方式去打开
r+ 读和写
w 只以写的方式打开,如果文件不存在,则创建文件
w+ 读和写,如果不存在,则创建
a 文件末尾追加,如文件不存在,则创建文件
a+ 读和追加,如文件不存在,则创建
fclose(打开的文件对应的句柄) 关闭打开的文件
fread(打开的文件对应的句柄,读取大小单位是字节) 读取指定大小的文件内容
feof() 检测是否到达了文件的末尾,如果没有到达文件的末尾,返回值是false
fgets() 读取单行数据内容,只有一个参数,如果需要将整个文档都读取出来,则需要使用feof+fgets循环读 while(!feof($file)){echo fgets($file)}
fgetc()读取单个字符数据
file() 将整个文档中数据读取到数组中,一行对应一个单元
file_get_contents() 将整个文档值班费的数据读取到字符串中
file_put_contents(文件名,数据) 写数据,如果文件名不存在,则创建文件
basename() 文件名 dirname()
copy(源文件,目标文件) 拷贝
unlink() unset() 删除文件
命令执行函数,通过php中某些函数去执行系统命令,和系统交互
常用的命令执行函数有:
system()
exec() 执行了但是没有返回值
shell_exec()
echo 'whoami';
passthru()等等
代码执行函数,使用PHP某些函数去执行字符串类型的PHP代码,注意:PHP代码
常用函数有:
eval()
assert() 代码中通;可以不要
preg_replace(/正则表达式/e,替换的字符。被替换的字符串),注意:如果执行代码解析功能
preg_replace("/test/e","system(net user)","test icq");
PHP表单处理、会话管理、文件上传、文件处理、执行函数(10.8 第十六天)的更多相关文章
- c# 模拟表单提交,post form 上传文件、大数据内容
表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每 ...
- c# 模拟表单提交,post form 上传文件、数据内容
转自:https://www.cnblogs.com/DoNetCShap/p/10696277.html 表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipar ...
- 使用django表单,使网页添加上传文件,并分析文件。
开发环境是: apache + python + django+ eclipse(开发环境) 欲达到目的: 在网页上,添加上传文件控件.然后读取csv文件,并分析csv文件. 操作步骤: django ...
- from表单实现无跳转上传文件,接收页面后台数据。
本文基于我刚写的http://www.cnblogs.com/iwang5566/p/6287529.html进行了简单的扩展,实现页面无跳转表单数据提交,并接收后台返回的数据. 下载好,上一篇文章d ...
- from表单实现无跳转上传文件,接收页面后台数据
实现无跳转发送表单数据.文件,并能接收后台返回的数据. 主要技术要点: 1.form表单添加target属性,指定一个iframme的name:form表单提交后在iframe内嵌窗口接受响应,主页面 ...
- WebLogic 任意文件上传远程代码执行_CVE-2018-2894漏洞复现
WebLogic 任意文件上传远程代码执行_CVE-2018-2894漏洞复现 一.漏洞描述 Weblogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限.Oracle 7月 ...
- 摒弃FORM表单上传图片,异步批量上传照片
之前作图像处理一直在用form表单做图片数据传输, 个人感觉low到爆炸而且用户体验极差,现在介绍一个一部批量上传图片的小技巧,忘帮助他人的同时也警醒自己在代码的编写时不要只顾着方便,也要考虑代码的健 ...
- MVC文件上传文件限制
最近想实现MVC中文件上传限制,总觉得有便利的方法,找了半天就找到加属性accept <input type="file" id="file" name= ...
- 【收集】JAVA多文件 上传文件接口代码 -兼容app
原文:http://www.verydemo.com/demo_c143_i23854.html 我们在 multifile 中可以很容易的发现如何使用,这里就简单说说了,首先在页面上我们需要有这样几 ...
- ASP.NET Core WEB API 使用element-ui文件上传组件el-upload执行手动文件文件,并在文件上传后清空文件
前言: 从开始学习Vue到使用element-ui-admin已经有将近快两年的时间了,在之前的开发中使用element-ui上传组件el-upload都是直接使用文件选取后立即选择上传,今天刚好做了 ...
随机推荐
- 【攻防世界】 高手进阶区 Recho WP
0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...
- java学习-初级入门-面向对象⑤-类与对象-类与对象的定义和使用3
这次我们要做一个日期类Date类 主要目的是 1. 熟悉-->构造不同参数的函数 2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...
- 模板语法(DOM与Vue数据绑定)
Vue.js使用了基于HTML的模板语法,允许开发者声明式的将DOM绑定至底层Vue实例的数据. 插值 文本:{{ }}数据绑定最常见的形式就是使用Mustache语法(双大括号)的文本插值,解释为普 ...
- C++ 标准模板库STL 队列 queue 使用方法与应用介绍
C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数, ...
- Codeforces Round #568 (Div. 2) 选做
A.B 略,相信大家都会做 ^_^ C. Exam in BerSU 题意 给你一个长度为 \(n\) 的序列 \(a_i\) .对于每个 \(i\in [1,N]\) 求 \([1,i-1]\) 中 ...
- flutter如何使用配置文件pubspec.yaml(位于项目根目录)来管理第三方依赖包
官方文档 在软件开发中,很多时候有一些公共的库或SDK可能会被很多项目用到,因此,将这些代码单独抽到一个独立模块,然后哪个项目需要使用时再直接集成这个模块,便可大大提高开发效率.很多编程语言或开发工具 ...
- impala invalidate metadata和impala-shell -r作用相同
impala的invalidate metadata内部命令,是否和外部命令impala-shell -r的作用相同的? 这个问题的回答: 在invalidate metadata 和 impala- ...
- VUE - 路由跳转时设置动画效果
/* 为对应的路由跳转时设置动画效果 */ <transition name="fade"> <router-view /> & ...
- dubbo 相关面试题 有用(转)
调用关系说明: · 0. 服务容器负责启动,加载,运行服务提供者. · 1. 服务提供者在启动时,向注册中心注册自己提供的服务. · 2. 服务消费者在启动时,向注册中心订阅自己所需的服务. · 3. ...
- 向量容器vector操作
1.向量容器vector 1.1 vector说明 进行vector操作前应添加头文件#include<vector>: vector是向量类型,可以容纳许多类型的数据,因此也被称为容器: ...