批改状态:合格
老师批语:
1、单文件上传
<form action="" method="POST" enctype="multipart/form-data"><fieldset><legend>单文件上传</legend><!-- 浏览器中限制上传文件的大小,写到一个隐藏域中,并写到type=file之前 --><input type="hidden" name="MAX_FILE_SIZE" value="300000"><input type="file" name="my_pic"><button>上传</button></fieldset></form>
<?php// $_FILES: PHP超全局变量数量,保存着上传文件的全部信息printf('<pre>%s</pre>',print_r($_FILES,true));/*** 1. $_FILES:二维数组,每个元素对应一个上传的文件* 2. name: 原始文件名* 3. type: 文件类型,mime类型* 4. tmp_name: 临时目录* 5. error: 错误代码* 6. size: 文件大小(字节表示 byte)*/if(isset($_FILES['my_pic'])){$name = $_FILES['my_pic']['name'];$tmpName = $_FILES['my_pic']['tmp_name'];$error = $_FILES['my_pic']['error'];if($error > 0){$tips = '<span style="color:red;">上传失败:</span>';switch($error){case 1:$tips .= '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';break;case 2:$tips .= '文件大小超过了上传表单中MAX_FILE_SIZE最大值';break;case 3:$tips .= '文件只有部分被上传';break;case 4:$tips .= '没有文件被上传';break;case 6:$tips .= '找不到临时目录';break;case 7:$tips .= '文件写入失败,请检查目录权限';break;}echo "<p>$tips</p>";}else{// 判断用户是不是通过合法的POST方式上传if(is_uploaded_file($tmpName)){// 设置允许上传文件类型的白名单$allow = ['jpg','jpeg','png','gif'];// 获取文件扩展名$ext = pathinfo($name)['extension'];if(in_array($ext,$allow)){// 两个条件都满足了// 1、post方式上传的 2、文件类型是合法的// 目标目录$path = 'uploads/';// 自定义目标文件名$dest = $path.md5($name).'.'.$ext;// 将文件从临时目录中移动到目标目录中并重命名if(move_uploaded_file($tmpName,$dest)){echo '<p style="color:green">上传成功</p>';// 预览echo "<img src='$dest' width='200' >";}else{echo '<p style="color:red">移动失败</p>';}}else{echo '<p style="color:red">文件类型错误</p>';}}else{echo '<p style="color:red">非法方式上传</p>';}}}?>

2、多文件上传
<form action="" method="POST" enctype="multipart/form-data"><fieldset><legend>多文件上传:批量上传</legend><!-- multiple:允许同时选择多个 --><input type="file" name="my_pic[]" multiple><button>上传</button></fieldset></form>
<?php// $_FILES: PHP超全局变量数量, 保存着上传文件的全部信息printf('<pre>%s</pre>',print_r($_FILES,true));if(isset($_FILES['my_pic'])){// 这时值需要遍历$_FILES['my_pic']['error']这个数组foreach($_FILES['my_pic']['error'] as $key=>$error){if($error === 0){// 临时文件名$tmpName = $_FILES['my_pic']['tmp_name'][$key];// 原始文件名$name = $_FILES['my_pic']['name'][$key];// 目标文件名$destFile = 'uploads/0627/'.$name;move_uploaded_file($tmpName,$destFile);}}}?>


数据表如下:

分页参数:当前页数、偏移量、每页数量、总数、总页数
<?php// 1.连接数据库$db = new PDO('mysql:dbname=mydb','myshop','yzj123');// 2.当前页,再GET参数中$page = $_GET['p'] ?? 1;echo "当前页:p= $page<hr>";// 3. 每页显示数量$num = 5;// 4. 记录总数$sql = 'SELECT COUNT(`ps_id`) AS `total` FROM `sp_permission`';$stmt = $db->prepare($sql);$stmt->execute();// 将某列的值与php变量绑定,`total` => $total$stmt->bindColumn('total',$total);$stmt->fetch(PDO::FETCH_ASSOC);echo "总记录数量:$total<hr>";// 5. 总页数// 10.1 => 11 ceil: 向上取整,不丢失数据$pages = ceil($total/$num);echo "总页数: $pages<hr>";// 6. 偏移量// offset = (page-1)*num$offset = ($page-1)*$num;echo "偏移量:$offset<hr>";// 7. 分页数据$sql = "SELECT * FROM `sp_permission` LIMIT $offset,$num";$stmt = $db->prepare($sql);$stmt->execute();$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);// 遍历if(count($staffs) === 0){echo '查询结果为空';}else{foreach($staffs as $staff){// 提取参数extract($staff);printf('%d-%s-%s-%s<br>',$ps_id,$ps_name,$ps_c,$ps_a);}}
<body><table><caption>角色列表</caption><thead><tr>ID</tr><tr>名称</tr><tr>ps_c</tr><tr>ps_a</tr></thead><tbody><?php foreach ($staffs as $staff) : extract($staff) ?><tr><td><?= $ps_id ?></td><td><?= $ps_name ?></td><td><?= $ps_c ?></td><td><?= $ps_a ?></td></tr><?php endforeach ?></tbody></table><p><?php for($i=1;$i<=$pages;$i++): ?><?php$url = $_SERVER['PHP_SELF'].'?p='.$i;$active = $i==$_GET['p'] ? 'active' : null;?><a href="<?= $url ?>" class="<?= $active ?>"><?= $i ?></a><?php endfor ?></p></body>


Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号