Web技术核心与安全风险(三)Web 后端安全

Web技术核心与安全风险(三)Web 后端安全

PART 1   PHP基本语法PHP介绍PHP(HyperText Preprocessor):超文本预处理器官方网站: https://www.php.net/学习工具:Trae+Phpstudy如何在Trae 中搭建PHP环境1.trae--扩展插件市场里中,搜索PHP,并安装php debug 、php IntelliSense2.在扩展设置里面,配置PHP解释器总共要设置三个,如下图所示,没有的自己创建,路径设为自己电脑里PHP的路径即可PHP基础语法PHP 代码必须包含在 <?php ... ?>标签中。1.打印hello world<?phpecho "hello world";?>语句结束:每条语句以 ;(分号)结束。   注释 //单行注释 /*多行注释*/2.变量命名规则:(1)变量以 $ 符号开始,后面跟着变量的名称(2)变量名必须以字母或者下划线字符开始(3)变量名只能包含字母、数字以及下划线(A-z、0-9 和_)(4)变量名不能包含空格(5)变量名是区分大小写的($y 和 $Y 是两个不同的变量)示例:<?php$message = "欢迎学习 PHP!";echo $message; // 输出变量内容echo "<h1>" . $message . "</h1>";?>PHP数组创建数组(1)[ ]----php版本5.4+(2)array() 函数用于创建数组示例<?php$student = ["xiaoming", "xiaolin", "xixi", "xiaoai"];echo $student[0];?>//输出结果为xiaomingif 条件语句判断条件语句:根据不同情况执行不同代码语法if (条件){条件成⽴时要执⾏的代码;}示例:<?php$score = 75;if ($score >= 60) {echo "成绩及格";}?>//输出结果为成绩及格if...else语句在条件成⽴时执⾏⼀块代码,条件不成⽴时执⾏另⼀块代码,请使⽤ if....else语句语法if (条件){条件成⽴时执⾏的代码;}else{条件不成⽴时执⾏的代码;}示例<?php$score = 55;if ($score >= 60) {echo "成绩及格";} else {echo "成绩不及格";}?>//输出结果为成绩不及格if...elseif....else语句在若⼲条件之⼀成⽴时执⾏⼀个代码块,请使⽤if...elseif....else语句。语法if(条件1){条件1成⽴时执⾏的代码;}else if(条件2){条件2成⽴时执⾏的代码;}else{以上条件不成⽴时执⾏的代码;}示例<?php$score = 75;if ($score >= 90) {echo "成绩优秀";} elseif ($score >= 60) {echo "成绩及格"; // 75 >= 60 成立} else {echo "成绩不及格";}?>//输出结果为成绩及格PHP循环1.for循环语法for (初始值; 条件; 增量){要执⾏的代码;}示例<?php$student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao'];for ($i = 0; $i <= 3 ; $i=$i+1) {echo $student[$i].' ' ;}?>2.while 循环while 循环将重复执⾏代码块,直到指定的条件不成⽴语法while (条件){要执⾏的代码;}示例<?php$count = 3;$student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao'];while ($count >= 0) {echo $student[$count].' ' ;$count=$count-1;}?>PHP函数PHP的真正威⼒源⾃于它的函数。在PHP中,提供了超过 1000 个内建的函数PHP 函数准则函数的名称应该提示出它的功能函数名称字⺟下划线开头(不能以数字开头)PHP⾃定义函数<?phpfunction functionName(){// 要执⾏的代码}?>PHP类与函数类是抽象的概念,仅仅是模板。⽤来描述具有相同属性⽅法对象的集合。⽐如:"⼈"是⼀个 类。对象实例,是某⼀个具体的事物 。如 “张三”则是具体存在 是⼀个对象示例<?phpheader("Content-Type: text/html; charset=utf-8");class student{public $name;public $age;public function say() { //自定义函数echo $this->name. " 你好!";}}$stu1 = new student();//new表示调用函数,new student 表示调用student这个函数$stu1 -> name = "xiaoming";echo $stu1->name;$stu1 -> say();?>//输出结果为xiaoming你好!PHP魔术方法(Magic Methods)PHP魔术方法(Magic Methods)在PHP中具有特定的命名和功能• 魔术方法不需要显式调用,而是由PHP解释器在特定时机自动触发。• 通常用两个下划线(__)开头,后跟方法名称,如构造方法 __construct()示例:<?phpclass Person {public function __construct() {echo "construct is coming ~";}}$p1 = new Person();?>超全局变量PHP 的强⼤在于它能轻松处理⽤⼾通过 Web 提交 的数据,这依赖于⼏个特殊的超全局变量,它们是 PHP ⾃动创建的数组。PHP提供了预定义的超全局变量,用来获取HTTP 请求信息

案例:#准备一个登录的页面<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><form action="b.php" method="get">姓名:<input type="text" name="name"><br>年龄:<input type="number" name="age"><br><button type="submit">提交</button></form></body></html>#准备另一个获取数据的php页面<?phpheader("Content-Type: text/html; charset=utf-8");$name = $_GET['name'] ;$age = $_GET['age'] ;echo "<h3>接收到的参数:</h3>";echo "姓名:{$name}<br>";echo "年龄:{$age}<br>";echo "<a href='a.php'>返回填写表单</a>";?>序列化 (serialize)• 传递多个数据可以用序列化对象• 是将⼀个 PHP 对象(包括它的类名所有属性属性值)转换为⼀个可存储可传输的字符串的过程。反序列化 (unserialize)是将这个字符串还原回原来的 PHP 对象示例:#准备一个登录的页面<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><form action="b.php" method="get">姓名:<input type="text" name="name"><br>年龄:<input type="number" name="age"><br>密码:<input type="password" name="pwd"><br><button type="submit">提交</button></form></body></html>#准备另一个获取数据的php页面<?phpheader("Content-Type: text/html; charset=utf-8");$name = $_GET['name'] ;$age = $_GET['age'] ;$pwd = $_GET['pwd'] ;echo "<h3>接收到的参数:</h3>";echo "姓名:{$name}<br>";echo "年龄:{$age}<br>";echo "密码:{$pwd}<br>";class student{public $name;public $age;public $pwd;}$stu1 = new student();$stu1 -> name = $name;$stu1 -> age = $age;$stu1 -> pwd = $pwd;echo "<h3>序列化后的数据:</h3>";$serialized = serialize($stu1);echo $serialized;echo "<h3>反序列化后的数据:</h3>";$restored = unserialize($serialized);echo $restored->name ;echo "<br>";

Read more

在Mac上实现本地AI绘画:Mochi Diffusion深度体验指南

在Mac上实现本地AI绘画:Mochi Diffusion深度体验指南 【免费下载链接】MochiDiffusionRun Stable Diffusion on Mac natively 项目地址: https://gitcode.com/gh_mirrors/mo/MochiDiffusion 当创意遇见技术:为什么需要本地AI绘画工具? 你是否曾经遇到过这样的困扰:想要尝试AI绘画,却发现云端服务需要排队等待,或者担心自己的创意想法被泄露?在Mac上运行AI绘画工具真的可行吗?这些问题正是Mochi Diffusion要解决的核心痛点。 传统的云端AI绘画服务虽然方便,但存在诸多限制:网络延迟影响体验、隐私安全难以保障、使用次数受限等。而Mochi Diffusion的出现,彻底改变了这一局面,让AI绘画真正成为Mac用户的专属创作工具。 解决方案:Mochi Diffusion如何实现本地AI绘画? Mochi Diffusion作为专为Mac设计的本地AI绘画工具,充分利用了Apple硬件的优势,实现了真正的离线创作体验。与云端服务相比,它具有以下核心优势:

OpenClaw 和 Claude Code、Cursor、Copilot 有什么区别

在了解了 OpenClaw 的基本能力之后,很多人都会产生一个很自然的问题: 它和常见的 AI 编程工具到底有什么区别? 比如: * Claude Code * Cursor * GitHub Copilot 这些工具看起来都能: * 写代码 * 改代码 * 提供建议 但如果你真正用过一段时间,就会发现: 它们解决的问题,其实不在一个层面。 这一篇我们就从实际使用角度,把它们的区别讲清楚。 一、先说结论:它们不是“替代关系” 很多人会下意识认为: OpenClaw 是不是 Cursor / Copilot 的升级版? 其实不是。 更准确的理解是: 它们分属于不同类型的工具,可以配合使用,而不是互相替代。 简单划分一下: * Copilot / Cursor:写代码的助手 * Claude Code:理解和修改代码的助手 * OpenClaw:执行任务的 Agent 接下来我们分别看。 二、

比迪丽Stable Diffusion部署案例:中小企业低成本构建二次元内容中台

比迪丽Stable Diffusion部署案例:中小企业低成本构建二次元内容中台 1. 引言:当二次元创作遇上AI生产力 如果你是一家动漫周边电商、一个独立游戏工作室,或者一个内容创作团队,你肯定遇到过这样的难题:需要大量高质量的二次元角色图片,但请画师成本太高,自己又不会画。一张精美的角色立绘,从草稿到上色,专业画师可能要花几天时间,费用动辄上千元。对于预算有限的中小团队来说,这简直是难以承受之重。 但现在,情况正在改变。我最近帮几个朋友的公司部署了一套基于Stable Diffusion的AI绘画系统,核心是一个叫“比迪丽”的角色模型。你可能对这个名字不熟悉,但如果你看过《龙珠》,一定记得那个扎着马尾辫、性格坚强的女孩。没错,这个模型就是专门用来生成《龙珠》角色“比迪丽”的AI绘画工具。 但它的价值远不止生成一个动漫角色。通过这个案例,我想分享的是:中小企业如何用极低的成本,搭建自己的AI内容生成中台。这套方案不仅解决了角色图片的生成问题,更重要的是,它展示了一条清晰的路径——如何将前沿的AI技术,转化为实实在在的生产力工具。 2. 为什么选择比迪丽模型作为切入点?

彻底关闭Win10中烦人的365 Copilot弹窗的6种方法

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 点击'项目生成'按钮,等待项目生成完整后预览效果 输入框输入如下内容 帮我开发一个Windows系统优化小工具,用于帮助普通用户一键禁用各类系统弹窗和推送功能。系统交互细节:1.提供常见弹窗类型选择 2.显示当前系统状态 3.一键禁用功能 4.支持恢复默认设置。注意事项:需要管理员权限运行 最近很多Win10用户在系统升级后都遇到了Microsoft 365 Copilot频繁弹窗的问题,这个功能虽然智能,但频繁的打扰确实影响工作效率。经过实测,我总结了6种有效的关闭方法,从简单隐藏到彻底禁用一应俱全。 1. 任务栏临时隐藏是最简单的解决方案,只需右键任务栏取消勾选相关选项。但这个方法只是隐藏入口,Copilot功能仍在后台运行。 2. 组策略彻底禁用是最推荐的方式,通过系统内置的组策略编辑器可以完全关闭Copilot。操作时需要管理员权限,设置完成后需要重启生效。这个方法禁用后连快捷键都会失效,