郑州视频网站建设,设计类的网站,中小企业外贸网站建设现状,WordPress页面调用文章文章目录 开发环境数据导入-mysql架构库表列数据库操作-mysqli函数增删改查数据接收输出-html混编超全局变量第三方插件引用-js传参函数对象调用身份验证-Cookie使用身份验证-Session使用唯一性判断-Token使用具体安全知识点#xff1a;Cookie和Session都… 文章目录 开发环境数据导入-mysql架构库表列数据库操作-mysqli函数增删改查数据接收输出-html混编超全局变量第三方插件引用-js传参函数对象调用身份验证-Cookie使用身份验证-Session使用唯一性判断-Token使用具体安全知识点Cookie和Session都是用来在Web应用程序中跟踪用户状态的机制在Web应用程序中使用token和不使用token的主要差异在于身份验证和安全性 开发环境
DW PHPStorm PhpStudy Navicat Premium DW : HTMLJSCSS开发 PHPStorm : 专业PHP开发IDE PhpStudy Apache MYSQL环境 Navicat Premium: 全能数据库管理工具 数据导入-mysql架构库表列
1、数据库名数据库表名数据库列名 2、数据库数据格式类型长度键等
数据库操作-mysqli函数增删改查
PHP函数连接选择执行结果关闭等 参考https://www.runoob.com/php/php-ref-mysqli.html 常用 mysqli_connect() 打开一个到MySQL的新的连接。 mysqli_select_db() 更改连接的默认数据库。 mysqli_query() 执行某个针对数据库的查询。 mysqli_fetch_row() 从结果集中取得一行并作为枚举数组返回。 mysqli_close() 关闭先前打开的数据库连接。 MYSQL增删改查 查select * from 表名 where 列名‘条件’; 增insert into 表名(列名1, 列名2) value(‘列1值1’, ‘列2值2’); 删delete from 表名 where 列名 ‘条件’; 改update 表名 set 列名 数据 where 列名 ‘条件’; 基础的PHP语句
form idform1 nameform1 methodpost action用户名input typetext nameusername maxlength2000br内容textarea idcontent rows10 cols70 namecontent styleborder:1px solid #E5E5E5;/textareascript typetext/javascriptUE.getEditor(content);//实例化编辑器传参,id为将要被替换的容器。/scriptinput typesubmit namesubmit idsubmit value提交/form?php
include config.php;function add_gbook($con){$u $_POST[username];if (isset($u)) {$c $_POST[content];$i $_SERVER[REMOTE_ADDR];$ua $_SERVER[HTTP_USER_AGENT];$sql insert into gbook(username, content,ipaddr,uagent) value($u, $c,$i,$ua);;if (mysqli_query($con, $sql)) {echo scriptalert(留言成功)/script;}}
}function show_gbook($con,$del){$sql1select * from gbook;$datamysqli_query($con,$sql1);while ($rowmysqli_fetch_row($data)) {echo hr;echo 用户名.$row[0].br;echo 内容.$row[1].br;echo IP地址.$row[2].br;echo UA浏览器.$row[3].br;if($deldel){echo a hrefgbook-admin.php?del$row[0]删除/a;}}
}效果如下
数据接收输出-html混编超全局变量
1、html混编使HTML(JS)在PHP语言中运行
?php
echo scriptalert(x);/script
?2、超全局变量 参考 https://www.w3school.com.cn/php/php_superglobals.asp https://www.php.net/manual/zh/language.variables.superglobals.php
$GLOBALS这种全局变量用于在 PHP 脚本中的任意位置访问全局变量
$_SERVER这种超全局变量保存关于报头、路径和脚本位置的信息。
$_REQUEST$_REQUEST 用于收集 HTML 表单提交的数据。
$_POST广泛用于收集提交methodpost 的HTML表单后的表单数据。
$_GET收集URL中的发送的数据。也可用于收集提交HTML表单数据(methodget) $_FILES文件上传且处理包含通过HTTP POST方法上传给当前脚本的文件内容。
$_ENV是一个包含服务器端环境变量的数组。
$_COOKIE是一个关联数组包含通过cookie传递给当前脚本的内容。
$_SESSION是一个关联数组包含当前脚本中的所有session内容。第三方插件引用-js传参函数对象调用
引用 函数对象调用
var obj {value : 0,increment : function (inc) { this.value typeof inc number ? inc :1;//设置inc且为数字时 valueinc 反之 value1}
}
obj.increment();
console.log(obj.value); //1
obj.increment(2);
console.log(obj.value); //2身份验证-Cookie使用 生成cookie的原理图过程见图
1、客户端向服务器发送HTTP请求。
2、服务器检查请求头中是否包含cookie信息。
3、如果请求头中包含cookie信息则服务器使用该cookie来识别客户端否则服务器将生成一个新的cookie。
4、服务器在响应头中设置cookie信息并将其发送回客户端。
5、客户端接收响应并将cookie保存在本地。
6、当客户端发送下一次HTTP请求时它会将cookie信息附加到请求头中。
7、服务器收到请求并检查cookie的有效性。
8、如果cookie有效则服务器响应请求。否则服务器可能会要求客户端重新登录。PHP中 setcookie(): 设置一个cookie并发送到客户端浏览器。 unset(): 用于删除指定的cookie。 当然这里的认证功能也是不安全的存在sql注入以及cookie伪造等问题…… 预编译写法
$stmt $con-prepare(SELECT * FROM admin WHERE username ? AND password ?);
$stmt-bind_param(ss, $user, $pass);
$stmt-execute();
$result $stmt-get_result();身份验证-Session使用 1、客户端向服务器发送HTTP请求。
2、服务器为客户端生成一个唯一的session ID并将其存储在服务器端的存储器中如文件、数据库等。
3、服务器将生成的session ID作为一个cookie发送给客户端。
4、客户端将session ID保存为一个cookie通常是在本地浏览器中存储。
5、当客户端在发送下一次HTTP请求时它会将该cookie信息附加到请求头中以便服务器可以通过该session ID来识别客户端。
6、服务器使用session ID来检索存储在服务器端存储器中的与该客户端相关的session数据从而在客户端和服务器之间共享数据。session_start(): 启动会话用于开始或恢复一个已经存在的会话。 $_SESSION: 用于存储和访问当前会话中的所有变量。 session_destroy(): 销毁当前会话中的所有数据。 session_unset(): 释放当前会话中的所有变量。 Session存储路径PHP.INI中session.save_path设置路径
唯一性判断-Token使用
1、生成Token并将其存储在Session 2、生成Token并将其绑定在Cookie触发 3、尝试登录表单中带入Token验证逻辑 4、思考Token安全特性
Token保证每次请求的唯一性表单每次刷新都会重新生成token增加暴力破解成本
具体安全知识点
Cookie和Session都是用来在Web应用程序中跟踪用户状态的机制
1、存储位置不同 Cookie是存储在客户端浏览器上的而Session是存储在服务器端的。 2、安全性不同 Cookie存储在客户端上可能会被黑客利用窃取信息而Session存储在服务器上更加安全。 3、存储容量不同 Cookie的存储容量有限一般为4KB而Session的存储容量理论上没有限制取决于服务器的硬件和配置。 4、生命周期不同 Cookie可以设置过期时间即便关闭浏览器或者重新打开电脑Cookie仍然存在直到过期或者被删除。而Session一般默认在浏览器关闭后就会过期。 5、访问方式不同 Cookie可以通过JavaScript访问而Session只能在服务器端进行访问。 6、使用场景不同 Cookie一般用于存储小型的数据如用户的用户名和密码等信息。而Session一般用于存储大型的数据如购物车、登录状态等信息。 总之Cookie和Session都有各自的优缺点选择使用哪一种方式取决于具体的应用场景和需求。一般来说如果需要存储敏感信息或者数据较大建议使用Session如果只需要存储少量的数据并且需要在客户端进行访问可以选择使用Cookie。
在Web应用程序中使用token和不使用token的主要差异在于身份验证和安全性
1.身份验证采用token机制的Web应用程序用户在登录成功后会收到一个token这个token可以在每次请求时发送给服务器进行身份验证。而不采用token机制的Web应用程序一般会使用session机制来保存用户登录状态服务器会在用户登录成功后创建一个session之后的每个请求都需要在HTTP头中附带这个session ID以便服务器能够验证用户身份。 2、安全性采用token机制的Web应用程序在服务器上不会存储用户的登录状态只需要存储token即可。因此即使token被盗取黑客也无法获得用户的密码或者其他敏感信息。而不采用token机制的Web应用程序一般会在服务器上存储用户的登录状态因此如果服务器被黑客攻击黑客可能会获得用户的敏感信息。 3、跨域访问采用token机制的Web应用程序在跨域访问时可以使用HTTP头中的Authorization字段来传递token信息方便实现跨域访问。而不采用token机制的Web应用程序在跨域访问时需使用cookie或session来传递用户身份信息比较麻烦。 总之采用token机制可以提高Web应用程序的安全性并且方便实现跨域访问。不过使用token机制也需要开发者自己来实现身份验证和token的生成和验证相对来说比较复杂。而不采用token机制使用session机制则相对简单但是安全性相对较低。因此具体采用哪种机制需要根据实际情况进行权衡和选择。