专业3 学生信息添加(原声数据进行添加+文件上传进行验证)

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>

专业3  学生信息添加(原声数据进行添加+文件上传进行验证)

 

后端处理数据:

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>";
}

 

上一篇:ZJU_1191-The Die Is Cast(深度优先搜索)


下一篇:答题卡识别