2020.1.8PHP表单验证与流程
- 迫原创转载
- 2020年03月13日 16:57:56537浏览
2020-01-081. 流程控制之循环
for()while()foreach()
2. PHP表单处理
请求类型请求变量的验证// 几个实用函数// count(): 计算数组元素的数量// echo '数组元素的数量是: ' . count($arr1) . ' 个元素<br>';// strlen(): 计算字符串长度// echo '字符串长度: ' . strlen('php.cn') . ' 个字符<br>';// trim(), rtrim(), ltrim(): 是从字符串二边,右边, 左边删除指定的字符,默认删除的是空格$str = ' php.cn ';// echo '字符串原始长度: ' . strlen($str) . ' 个字符<br>';$str = trim($str);// echo '字符串当前长度: ' . strlen($str) . ' 个字符<br>';$str = ltrim($str, 'p');// echo '字符串当前长度: ' . strlen($str) . ' 个字符<br>';// echo $str . '<br>';$str = rtrim($str, '.cn');// echo '字符串当前长度: ' . strlen($str) . ' 个字符<br>';// echo $str . '<br>';// mt_rand(min, max): 产生指定范围的随机数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>用户注册</title> <style> .register { width: 300px; display: flex; flex-direction: column; color: #555; font-size: 14px; margin: auto; } .register>h3 { align-self: center; border-bottom: 3px solid lightcoral; font-weight: normal; font-size: 20px; } /* 表单样式 */ .register>form { display: flex; flex-direction: column; padding: 20px; background-color: lightblue; border-radius: 20px; } .register>form:hover { box-shadow: 0 0 8px #888; } /* 表单中所有inpu控件样式 */ .register>form input { border: none; outline: none; border-radius: 5px; padding-left: 5px; } .register>form input:hover { background-color: lightgoldenrodyellow; } /* 表单中所有子元素转flex,便于设置对齐 */ .register>form>span { margin: 5px 0; display: flex; justify-content: space-between; } /* 按钮按钮所在元素转flex,便于设置 */ .register>form>span:last-of-type { display: flex; justify-content: center; } /* 提交按钮样式 */ .register>form>span:last-of-type > button { margin-top: 5px; background-color: #888; border: none; background-color: lightcoral; color: white; width: 100px; height: 30px; font-size: 16px; } /* 提交按钮的悬停样式 */ .register>form>span:last-of-type > button:hover { background-color: seagreen; cursor: pointer; } </style></head><body> <div class="register"> <h3>用户注册</h3> <!-- method: 默认就是get请求 --> <form action="demo3.php" method="post"> <span> <label for="username">用户名:</label> <input type="text" name="username" id="username" placeholder="不超过20个字符" required autofocus> </span> <span> <label for="password1">密码:</label> <input type="password" name="password1" id="password1" placeholder="不能为空" required> </span> <span> <label for="password2">重复密码:</label> <input type="password" name="password2" id="password2" placeholder="必须与上面一致" required> </span> <span> <label for="email">邮箱:</label> <input type="email" name="email" id="email" placeholder="不能为空" required> </span> <span> <label for="male">性别:</label> <span> <input type="radio" name="gender" id="male" value="male" required><label for="male">男</label> <input type="radio" name="gender" id="female" value="female" required><label for="female">女</label> <input type="radio" name="gender" id="secret" value="secret" required checked><label for="secret">保密</label> </span> </span> <span> <label for="js">关心:</label> <span> <input type="checkbox" name="likes[]" id="html" value="1"><label for="html">HTML</label> <input type="checkbox" name="likes[]" id="css" value="2" checked><label for="css">CSS</label> <input type="checkbox" name="likes[]" id="js" value="3"><label for="js">JS</label> <input type="checkbox" name="likes[]" id="php" value="4" checked><label for="php">PHP</label> </span> </span> <span> <button>提交</button> </span> </form> </div></body></html>
<?php// 超全局变量: // 1. 是指每一个php程序(就是一个动态的php页面)都已经存在的变量, 不需要用户去主动创建// 2. 它的值, 是由系统根据每个php程序自动设置初始值, 大部分是反映程序状态// 3. 它的值, 大多是允许用户更新, 但不能删除它, 否则会引起致使错误 // 4. 它没有作用域限制, 无论是全局, 还是函数中, 都直接用, 不需要声明// 5. 因为每一个页拿来就用, 很容易让初学者产生错觉: 它是跨页面, 不行, 只是每个页都已存在// $_REQUEST: 请求数据的超全局变量,里面保存的是用户所有的请求数据// 包括get , post , cookie// echo '<pre>' . print_r($_REQUEST, true) . '';// echo '<pre>' . print_r($_POST, true) . '';// echo '用户名: ' . $_POST['username'] . '<br>';// echo '邮箱: ' . $_POST['email'] . '<br>';// 判断用户的请求类型是否合法// echo '请求类型: ' . $_SERVER['REQUEST_METHOD'] . '<br>';if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 检查请求变量是否设置, 并且值不能为NULL, isset() // if (isset($_POST['username'])) { // echo '有'; // } else { // echo '无'; // } // empty(): 空字符串, 0, null, false // if (!empty($_POST['username'])) { // echo '有'; // } else { // echo '无'; // } // isset(): 用在设置请求变量默认值 // echo $_POST['grade']; // if (!isset($_POST['grade'])) { // $_POST['grade'] = 60; // } // echo $_POST['grade']; // 三元运算符, 将双分支进行简化 // 条件 ? true : false // $_POST['grade'] = isset($_POST['grade']) ? $_POST['grade'] : 70; // echo $_POST['grade']; // $grade = isset($_POST['grade']) ? $_POST['grade'] : 80; // // php7+ // $grade = $_POST['grade'] ?? 90; // echo $grade; // if (!empty($_POST['username'])) { // $username = $_POST['username']; // } if (!empty($_POST['username'])) $username = $_POST['username']; if (!empty($_POST['password1'])) $password1 = $_POST['password1']; if (!empty($_POST['password2'])) $password2 = $_POST['password2']; if (!empty($_POST['email'])) $email = $_POST['email']; if (!empty($_POST['gender'])) $gender = $_POST['gender']; if (!empty($_POST['likes'])) $likes = $_POST['likes']; // 二次密码必须一致 if ($password1 === $password2) { // md5():32位随机字符串, sha1():40位随机字符串 $password = md5(sha1($password1)); } else { exit('<script>alert("二次密码不一致");history.back();</script>'); } $data = compact('username', 'password', 'email', 'gender', 'likes'); echo '<pre>' . print_r($data, true) . '';} else { exit('<h3 style="color:red">请求类型错误!</h3>');} 声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。