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

ComfyUI Prompt Control:精准驾驭AI绘画提示词

ComfyUI Prompt Control:精准驾驭AI绘画提示词

摘要:本文详细介绍了ComfyUI Prompt Control,阐述其功能特点、使用方法及相关技巧。通过掌握这些内容,用户能更精准地控制AI绘画过程,生成符合预期的图像,提升创作效率与质量。 一、引言 在AI绘画领域,ComfyUI以其强大的功能和灵活性备受创作者青睐。而ComfyUI Prompt Control(提示词控制)则是其中关键的一环,它允许用户对提示词进行精细调整,从而更精准地引导AI生成理想的图像,为创作带来了更多可能性和可控性。 二、ComfyUI Prompt Control概述 ComfyUI Prompt Control提供了一系列工具和方法,让用户能够方便地编辑提示词,实现多种常见操作的提示词可控。它支持通过提示词控制Lora加载与调度、进行高级文本编码、区域提示等功能,还能生成与手工制作相似的动态图形。 三、主要功能 * 提示词权重调整:可使用<prompt:weight>语法为提示词部分加权,如(flowers:1.2)在蓝色花瓶里能让模型更强调花朵。也可通过快捷键Ctrl

毫秒级响应!树莓派5 + Whisper + EdgeTTS 构建全离线语音助手 (含避坑指南)

1. 为什么选择 Whisper 替代 Vosk? 我之前用 Vosk 做离线语音识别确实挺方便的,特别是那个 40MB 的小模型中文件,在树莓派 5 上几乎瞬间就能响应。但用久了发现一个问题:中文识别准确率还是不够理想,特别是当我说得稍微快一点或者带点口音的时候,它经常会听错。 后来我试了 OpenAI 的 Whisper,虽然模型大了不少(我用的 base 版本大约 150MB),但识别准确率真的提升很明显。最重要的是,Whisper 支持热词增强功能,这对智能家居控制特别有用!我可以把"开灯"、"关风扇"这些指令设为热词,识别准确率直接拉满。 实测下来,Whisper 在树莓派 5 上的响应速度依然能保持在毫秒级。我用 Python 写了个简单的测试脚本: import

2026实测6款免费/白嫖向学术论文降AIGC专业工具

到了每年的毕业季和期刊截稿期,学术圈最怕的不再是查重率,而是被知网 AI 检测系统或 Turnitin 标上一片刺眼的“疑似 AI 生成”。 作为一名常年泡在文献堆里的学术搬砖人,我太懂这种焦虑了。很多时候,明明是自己熬夜敲出来的开题报告,仅仅因为借用翻译工具润色了一下,或者逻辑结构过于严密工整,就被概率算法判定为 AIGC 浓度超标。一旦被打上这个标签,轻则打回重写,重则面临学术不端的指控。 必须明确一点:使用“降AIGC”工具,绝不是为了掩盖学术造假,而是利用技术手段打破僵化的机器特征,保护我们真实的科研成果不被机械探针误伤。 今天,我从实用性和“零成本/白嫖”的角度,为大家深度实测了6款能够有效打乱机器生成特征、重构学术文本的专业工具(附官方网址),教你如何利用魔法打败魔法。 1. 炼字工坊 —— 跨界降维打击的“底层消痕 IDE” (首推体验) * 官方网址:lianzigongfang.com * 学术实测点评: 如果你对工具底层架构有所了解,会知道这其实是一个专为长篇小说和剧本流打造的集成开发环境(