Web 后端php

Web 后端php

Web 后端php

PHP基本语法

PHP(HyperText Preprocessor):超文本预处理器
官方网站: https://www.php.net/

  1. PHP 代码必须包含在 <?php ... ?>标签中
    这是服务器识别 PHP 代码的标识
  2. 语句结束:每条语句以 ;(分号)结束
  3. 注释 //单行注释 /多行注释/
  4. 变量规则:所有变量都必须以$符号开头

1. 输出

<?php // 这是输出helloworld echo "helloworld"; // echo 打印,输出 ?> 输出:helloworld 

写程序的时候需养成注释代码的好习惯,以免日后忘记,导致从头开始理解代码

2. 定义变量和拼接字符串

<?php // 定义变量 $message ="你好,大家好"; $name="张三"; // . 表示拼接 echo $message."我是".$name; ?> 输出:你好,大家好我是张三 

简单来说,把变量比作一个盒子,变量名可以自定义,就像你可以拿不同材质、大小的盒子一样
定义一个变量,就像你网购一个快递,不管是什么样的盒子(你所定义的变量名),里面都是你所下单的东西(即你所定义的值)
变量可以反复使用,并且修改变量中包含的值,所有代码中的变量都会改变,节省修改代码时间

变量名可以自定义,但最好还是做到“见词生意”,看见变量名就能大概理解变量所代表的值
普通变量:保存单个数据,变量名可自定义

PHP 变量规则

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格

变量名是区分大小写的($y 和 $Y 是两个不同的变量)

在这里插入图片描述

HTML 和 PHP 可以混合输出

3. 数组

创建数组:

  1. [ ]

array() 函数用于创建数组----php版本5.4+

在这里插入图片描述
<?php // 定义数组:可以保存多个值 $student = ["xiaoming", "xiaolin", "xixi", "xiaoai"]; //利用索引获取数组里数据 echo $student[0]; //0 代表数组第一个值 ?> 输出:xiaoming 

数组:保存多个数据,可以用[ ]
组:用来存储一组类同数据(如:都表示姓名)

4. php流程控制–条件语句

PHP流程控制语句用于决定代码的执行顺序
条件语句:根据不同情况执行不同代码

在这里插入图片描述

if语句
表示判断,如果成立则执行,不成立则不执行

<?php $score = 75; if ($score >= 60) { echo "成绩及格"; } ?> 输出:成绩及格 #小于60则不会执行代码 

if…else语句
判断两个条件并执行其中一个

if…elseif…else 语句
判断多个条件,选择所触发条件的代码执行

<?php $score = 85; if ($score >= 90) { echo "成绩优秀"; } elseif ($score >= 80) { echo "成绩优良"; //85 >=80 成立 } elseif ($score >=60) { echo "成绩及格"; }else { echo "成绩不及格"; } ?> 输出:成绩优良 #根据所输入的数据判断哪条条件满足执行 

if语句:表示判断,可判断一次,两次,也可判断多次
if语句执行:当满足条件时则会执行,否则不执行

5. 流程控制–循环语句

PHP流程控制语句用于决定代码的执行顺序。
循环语句:重复执行某个任务
for循环

在这里插入图片描述

如:打印全班同学的名字

<?php //索引'xiaoming'=0, 'xiaolin'=1, 'xixi'=2, 'xiaogao'=3 $student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao']; //$i=0 初始化; $<=3 循环条件; $i=$i+1 迭代 for ($i = 0; $i <= 3 ; $i=$i+1) { echo $student[$i].' ' ; //这里输出空格是为了美观 } ?> 输出:xiaoming xiaolin xixi xiaogao 

for循环:当条件满足时,会重复执行某部分代码
注意:条件一直满足(死循环),会一直重复循环,电脑容易卡死

while循环

在这里插入图片描述
<?php $count = 3; $student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao']; // ($count >= 0) 循环条件 while ($count >= 0) { echo $student[$count].' ' ; $count=$count-1; //迭代,递减操作,确保循环能终止 } ?> 输出:xiaogao xixi xiaolin xiaoming 

while循环:当条件满足时,会重复执行某部分代码
习惯:知道次数通常用for,不知道次数通常用while

6. 类与函数

类:

在PHP中,使用class关键字来定义一个类
class表示类,可以通过属性表示多个不同类型的数据

<?php header("Content-Type: text/html; charset=utf-8"); // 定义一个类;student(类名,可自定义) class student{ // 定义属性;public 表示公共的,公开的 public $name; public $age; } // 类的使用:new一个对象 $stu1 = new student(); // 通过new的对象去使用该类中的属性并赋值(name = "xiaoming") $stu1 -> name = "xiaoming"; $stu1 -> age =18; // $stu1->name 表示使用$stu1对象中的name属性(此时变量$stu1中的属性name="xiaoming") echo $stu1->name; echo $stu1->age; ?> 输出:xiaoming18 

函数:

<?php header("Content-Type: text/html; charset=utf-8"); // 定义一个类;student(类名,可自定义) class student{ // 定义属性(变量);public 表示公共的,公开的 public $name; public $age; // function 表示自定义函数;say 函数名(可自定义) public function say() { //自定义函数 echo $this->name. " 你好!"; } } // 类的使用:new一个对象 $stu1 = new student(); $stu1 -> name = "xiaoming"; #代码从上往下执行,先给name赋值xiaoming $stu1 -> age =18; $stu1->say(); #然后再调用函数 ?> 输出:xiaoming 你好! 

类可以包含属性(变量)和方法(函数)
属性用于存储数据,而方法用于执行操作
new关键字直接跟类名来创建对象

理解关键字
class
对象new
函数function
  • 类是模板/蓝图,定义属性和方法的抽象规则;对象是类的实例,是根据模板创建的具体实体,拥有类的属性和方法。
    简单说:类造对象,对象用类的功能
  1. 一个类可创建多个不同对象,各对象属性值独立,方法共用。
  2. 对象通过 -> 访问属性/方法,类通过 :: 访问静态成员。
  3. 类是抽象的,不能直接使用;对象是具体的,可直接操作。

魔术方法·
魔术方法不需要显式调用,而是由PHP解释器在特定时机自动触发。
通常用两个下划线(__)开头,后跟方法名称,如构造方法 __construct()

<?php // 定义一个人类 class Person { //通常用两个下划线(__)开头,后跟方法名称,如构造方法 __construct() public function __construct() { echo "construct is coming ~"; } } // 通过某个机制触发,new的时候触发构造方法(满足条件,自动执行) $p1 = new Person(); ?> 输出:construct is coming ~ 

函数

  1. 普通函数:独立于类之外,直接定义、直接调用,无归属
  2. 类的函数:定义在类内部,是类的行为属性,需通过对象(非静态方法)或类名(静态方法)调用
  3. PHP 内置函数:PHP 自带的全局函数(“__”开头),无需定义直接触发机制调用,覆盖绝大多数常用功能,是开发中最常使用的函数类型

7. 超全局变量

PHP 的强⼤在于它能轻松处理⽤⼾通过 Web 提交的数据,这依赖于⼏个特殊的超全局变量,它们是 PHP ⾃动创建的数组
HP提供了预定义的超全局变量,用来获取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="test10.php" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="number" name="age"><br> <button type="submit">提交</button> </form> </body> </html> 

和接收代码

<?php header("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>"; ?> 

效果:

在这里插入图片描述


在这里插入图片描述

序列化与反序列化

传递多个数据可以用序列化对象
序列化 是将⼀个 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="test10.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 header("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>"; // serialize:序列化:把对象转换为字符串 $serialized = serialize($stu1); echo $serialized; echo "<h3>反序列化后的数据:</h3>"; // unserialize:反序列化:把字符串转换为对象 $restored = unserialize($serialized); //序列化以后的值 echo $restored->name ; echo "<br>"; echo $restored->age ; echo "<br>"; echo $restored->pwd ; echo "<br>"; echo "<a href='a.php'>返回填写表单</a>"; ?> 

效果:

在这里插入图片描述


在这里插入图片描述

Read more

libdatachannel:轻量级C++ WebRTC库完全指南

libdatachannel:轻量级C++ WebRTC库完全指南 【免费下载链接】libdatachannelC/C++ WebRTC network library featuring Data Channels, Media Transport, and WebSockets 项目地址: https://gitcode.com/GitHub_Trending/li/libdatachannel libdatachannel是一个轻量级的C++ WebRTC网络库,提供数据通道、媒体传输和WebSocket功能。这个开源项目让开发者能够在原生应用程序和Web浏览器之间建立直接的实时通信连接,无需依赖谷歌臃肿的参考库。 什么是libdatachannel? 🤔 libdatachannel是一个独立的WebRTC实现,支持跨平台开发,包括GNU/Linux、Android、FreeBSD、macOS、iOS和Windows。它实现了W3C和IETF标准的WebRTC协议,让设备间能够进行实时点对点数据和媒体交换。 核心功能特性 ✨ WebRTC数据通道 * 基于

耳机阻抗与前端适配:32Ω、150Ω、300Ω 耳机的功放推力需求分析

耳机阻抗与前端适配分析 耳机阻抗(单位:欧姆,Ω)直接影响前端设备的推力需求。根据电功率公式: $$P = \frac{U^2}{R}$$ 其中$P$为功率,$U$为电压,$R$为阻抗。可知在相同电压下,阻抗越高,耳机获得的功率越小。以下是具体分析: 1. 32Ω 耳机 * 推力需求:低 * 适配设备:智能手机、普通播放器等便携设备 * 原理: 低阻抗使耳机在低电压下即可获得足够功率。例如驱动1mW功率所需电压: $$U = \sqrt{P \times R} = \sqrt{0.001 \times 32} \approx 0.18 , \text{V}$$ 普通手机输出(

Web 创建设计

下面为你整理一份系统全面、通俗易懂、适合初学者与进阶者的 《Web 创建与设计指南》(Web Creation & Design Guide)。 它覆盖从网站构思、设计、前端、后端、交互、发布到维护的完整流程。 如果你愿意,我还可以将它扩展成 PDF、PPT、Markdown 或课程体系。 🌐 Web 创建与设计指南 (Web Creation & Design Guide) 1. 什么是 Web 创建与设计? Web 创建(Web Development)= 网站功能的开发(HTML/CSS/JS + 后端 + 数据库) Web 设计(Web Design)= 网站视觉与体验设计(UI/UX)

Clawdbot Web Chat平台惊艳效果:支持思维链(CoT)可视化、推理步骤高亮展示

Clawdbot Web Chat平台惊艳效果:支持思维链(CoT)可视化、推理步骤高亮展示 1. 一眼就懂的思维链体验:不是“黑箱输出”,而是“看得见的思考” 你有没有试过问一个AI问题,它直接甩给你一段答案,但你完全不知道它是怎么想出来的?就像考试时只看到最终答案,却看不到解题过程——既难验证对错,也难学以致用。 Clawdbot Web Chat平台彻底改变了这一点。它不只告诉你“是什么”,更清晰地展示“为什么”和“怎么一步步得出的”。当你输入一个问题,比如“请分析这组销售数据的趋势并给出建议”,页面上立刻出现带编号的推理步骤:从识别时间范围、计算同比变化、发现异常波动,到最终提出库存优化建议——每一步都独立成行、自动高亮,像一位资深分析师在你眼前边写边讲。 这不是简单的分段换行,而是真正基于Qwen3:32B大模型原生支持的思维链(Chain-of-Thought, CoT)能力实现的结构化输出。系统会主动将长推理过程拆解为逻辑连贯的子步骤,并通过前端动态渲染,让每一步都可读、可定位、