html 代码:
<center> <table border="1"> <caption>1909A班学生信息添加页面</caption> <!-- 1.凡是元素必须增加name属性,这样才能在服务端获取到--> <!-- 2.凡是选择的元素,必须增加value属性,这样才能在服务端获取到值--> <!-- 3.有文件上传,提交方式(method)必须设为post--> <!-- 4.有文件上传,必须为form增加enctype属性,否则服务端无法获取到上传的附件--> <form action="add.php" method="post" enctype="multipart/form-data"> <tr> <td>学生姓名:</td> <td><input type="text" name="stu_name"></td> </tr> <tr> <td>性别:</td> <td> <input type="radio" name="sex" value="男">男 <input type="radio" name="sex" value="女">女 </td> </tr> <tr> <td>手机号:</td> <td> <input type="text" name="phone"> </td> </tr> <tr> <td>所在班级:</td> <td> <select name="class" id=""> <?php $class = ['1909A','1910A','1911A','1808A']; foreach($class as $key=>$val){ ?> <option value="<?php echo $val?>"><?php echo $val?></option> <?php } ?> </select> </td> </tr> <tr> <td>选择靓照一张:</td> <td> <input type="file" name="pic"> </td> </tr> <tr> <td>邮箱:</td> <td><input type="email" name="email"></td> </tr> <tr> <td><input type="submit" value="添加"></td> </tr> </form> </table> </center>
后端处理数据:
add.php页面 <?php // 接收数据 $name = $_POST['stu_name']; $sex = $_POST['sex']; $phone = $_POST['phone']; $class = $_POST['class']; $email = $_POST['email']; // 过滤验证 // 规则一:学生姓名必须为2-3位的汉字(一个汉字在PHP中占3个字节长度) if (strlen($name) != 9 && strlen($name) != 6) { die("学生姓名必须是2-3位的汉字,点击<a href='form.php'>重填</a>"); } // 规则二:性别必填 if (empty($sex)) { die("学生性别至少选择一个,点击<a href='form.php'>重填</a>"); } // 规则三:11位纯数字,且13,15,17,18,19开头 if (!is_numeric($phone)) { die("手机号码必须为数字,点击<a href='form.php'>重填</a>"); } // 获取手机号的前两位 $theTop = substr($phone, 0, 2); $reg = [13, 15, 17, 18, 19]; // 判断给定的元素是否存在数组中 if (!in_array($theTop, $reg)) { die("手机号码必须以13,15,17,18,19开头,点击<a href='form.php'>重填</a>"); } // 规则四:验证邮箱格式必须包含@符号 if (strpos($email, "@") == false) { die("邮箱格式不正确,点击<a href='form.php'>重填</a>"); } // 实现文件上传 // 第一步:判断文件必须通过HTTP POST形式提交 if (!is_uploaded_file($_FILES['pic']['tmp_name'])) { die("文件传输不是通过HTTP POST形式提交,点击<a href='form.php'>重填</a>"); } // 第二步:判断文件上传产生的错误信息 if ($_FILES['pic']['error'] != 0) { // 针对错误给出合理提示 switch ($_FILES['pic']['error']) { //上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值 case 1: die("错误1:文件过大,必须2M以内"); break; case 2: die("错误2:文件过大,必须2M以内"); break; case 3: die("只有部分文件被上传"); break; case 4: die("没有文件上传"); break; } } // 第三步:必须上传1兆以内 $size = 1024*1024; $fileSize = $_FILES['pic']['size']; if($fileSize>$size){ die("文件必须在1兆以内,点击<a href='form.php'>重填</a>"); } // 第四步:限制上传的类型 $reg = ['jpg','jpeg','png','gif']; $suffix = substr($_FILES['pic']['name'],strrpos($_FILES['pic']['name'],".")+1); if(!in_array(strtolower($suffix),$reg)){ die("必须上传图片,点击<a href='form.php'>重填</a>"); } // 第五步:将文件上传至指定位置 $savePath = "./img/".rand(1,999999).time().".".$suffix; if(!move_uploaded_file($_FILES['pic']['tmp_name'],$savePath)){ die("服务器繁忙请稍后再试,点击<a href='form.php'>重填</a>"); } // 把所有表单提交过来的内容放入数据库中存储 $link = mysqli_connect("127.0.0.1","root","root","1909A"); // 组装SQL语句 $sql = "insert into student(stu_name,stu_sex,stu_email,stu_tel,class_name,stu_photo) value('$name','$sex','$email','$phone','$class','$savePath')"; // 执行SQL语句 if(mysqli_query($link,$sql)){ echo "学生信息添加成功,点击前往<a href='list.php'>列表页面</a>"; }else{ echo "学生信息添加失败,点击重新<a href='add_form.php.php'>添加</a>"; }