前后端

    科技2022-08-25  89

    前后端

    实例一 html

    <body> <!-- 登录效果 --> <!-- 登录页面,使用post方式传参 将账号,密码两个input标签的数据,传参给php文件 --> <form action="./02_login.php" method="post"> 账号: <input type="text" name="username" placeholder="请您输入账号"><br> 密码: <input type="password" name="userpwd" placeholder="请您输入密码"><br> <button>登录</button> </form> </body>

    实例一 php

    <?php //后台PHP以post方式,接收前端传递参数 // 在$_POST中,以数组的形式存储 // echo '<pre>'; // print_r($_POST); // echo '</pre>'; // 从数据中获取相应的数据 // 通过[索引键名]的形式,从数据中,获取具体的参数数据 // 就是PHP的数组的操作 $username = $_POST['username']; $userpwd = $_POST['userpwd']; // echo $username , $userpwd ; // 根据前端的参数,在数据库查询是否有账号和密码都符合输入的数据 // nz2002中,有user表结构,存储账号密码,可以在user表结构中,做数据查询操作 // 通过PHP对数据库进行查询操作 // 1,链接登录数据库 $link = mysqli_connect('127.0.0.1','root','root','nz2002',3306); // 2,定义SQL语句 // 查询user表结构中 // username字段存储的数据,等于 前端传参的 $username参数 // userpwd字段存储的数据,等于 前端传参的 $userpwd参数 // SQL语句中,与php,JavaScript不同,判断是否相等,也是 = 一个等号 // = 既是赋值操作,也是比较等于操作 // WHERE 等约束条件中, = 是比较等于运算符 // 其他,都是赋值操作 // 账号密码都是字符串,要添加,单引号 $sql = "SELECT * FROM `user` WHERE `username` = '{$username}' AND `userpwd` = '{$userpwd}'"; echo $sql; // 3,执行查询语句,结果是,结果集对象 $result = mysqli_query($link , $sql); // 4,获取结果集对象 // 如果有符合的数据,数组中会有内容 // 如果没有符合的数据,数组中是一个空数组 // count(数组); 获取数组中单元的个数 // 也就相当于 length属性 // count(数组) 相当于 JavaScript中 数组.length // 如果有内容,length不是0 count(数组)不是0 // 如果空数组,length就是0 count(数组)也是0 $arr = mysqli_fetch_all($result , MYSQLI_ASSOC); // echo count($arr); // echo '<pre>'; // print_r($arr); // echo '</pre>'; // 如果 count($arr) 不是 0 ,证明有符合的账号密码,登录成功 // 如果 count($arr) 是 0 , 证明没有符合的账号密码,登录不成功 if(count($arr) == 0){ echo '您登录失败了'; }else { echo '您登录成功了'; } // 关闭数据库 mysqli_close($link); /* 总结 要正确验证的前提: 1,数据库的编码格式要是uft8 如果是其他编码格式,虽然在数据库中,使用MySQL-front,看上去都一样 但是编码格式不同,查询比对的结果,就是空数组 如果数据库编码格式不是utf8,查询结果有可能是空数组 2,数据库的引擎必须是innoDB 数据库建立时,引擎是innoDB,如果我们设定的数据库引擎,不是innoDB,执行时有可能也是空数组 3,怎么判断是引擎和编码格式造成的问题 在php中echo 输出 $sql 定义的SQL语句 复制粘贴,输出的内容,到 SQL编辑器 点击 绿色箭头 执行SQL语句 如果有执行结果,证明 SQL语句,没有问题 如果有报错,证明是 SQL语句的问题 1,前端页面部分 定义form表单,通过form表单,向后台程序传参 action : 属性值 是传参的PHP程序 method : post方式 input标签 必须定义name属性,才能正常传参 实际项目中,前端传参标签,name的属性值,不能随便定义,必须按照项目文档规定的内容来定义 2,php部分 接收前端参数 以post方式传参,PHP必须用 预定义变量 $_POST 来存储接收前端参数 通过 $_POST[索引键名] 的方式,获取具体的数据内容 前端传参的索引键名,就是input标签name属性的属性值 通过数据库操作,来查询比对账号密码 (1),链接数据库 $link = mysqli_connect('127.0.0.1','root','root','nz2002',3306); (2),定义SQL语句 $sql = "SELECT * FROM `表名` WHERE `账号字段` = '{$账号变量}' AND `密码字段` = '{$密码变量}' "; 注意: 外层使用 双引号,解析变量 账号字段存储的数据 等于 前端传参账号变量中存储的数据 密码字段存储的数据 等于 前端传参密码变量中存储的数据 逻辑与 AND 关系 如果数据是字符串形式, 必须要添加 单引号 '{$账号变量}' '{$密码变量}' (3),执行SQL语句 $result = mysqli_query($link , $sql); (4),获取结果集对象中的数据,存储成新的二维数组 $arr = mysqli_fetch_all($result , MYSQLI_ASSOC); (5),判断 如果 count(数组) 获取的数组长度为 0 ,证明是空数组,没有符合条件的数据,登录失败 如果 count(数组) 获取的数组长度不是0 ,证明不是空数组,有符合条件的数据,登录成功 if(count($arr) == 0){ echo '您登录失败了'; }else { echo '您登录成功了'; } (6),关闭数据库 mysqli_close($link); */

    前端传参总结1

    form表单传参 1,form标签设定 要定义好三个属性 2,标签设定 必须要有name属性 必须要正确设定数据参数 如果name相同,value不同,要给name添加[] 超链接传参 1,只能是以get方式传参 2,必须严格遵守语法规范 3,如果键名是重复键名,必须要添加[] <a href="url地址?键名=数值&键名=数值&..."></a> PHP程序 1,接收参数的变量,是PHP程序定义好的,专门接收参数的变量,称为预定义变量 $_GET 接收前端get方式传参的数据 $_POST 接收前端post方式传参的数据 $_FILES 接收前端上传文件数据

    实例二html

    <!-- 注册功能 输入,账号,密码,完成注册功能 之前,写过,账号,密码,确认密码,验证码,都正确,才执行form表单提交 submit事件 暂时写一个简单的注册,验证等这些功能,有待之后再完善 --> <form action="./02_reg.php" method="post"> 注册账号: <input type="text" name="regname" placeholder="请您输入注册账号"><br> 注册密码: <input type="password" name="regpwd" placeholder="请您输入注册密码"><br> <button>注册</button> </form>

    实例二php

    <?php // 1,接收前端的参数 // echo '<pre>'; // print_r($_POST); // echo '</pre>'; $regname = $_POST['regname']; $regpwd = $_POST['regpwd']; // 2,通过mysqli操作数据库,写入数据 // 链接数据库 $link = mysqli_connect('127.0.0.1' , 'root' , 'root' , 'nz2002' , 3306); // 定义SQL语句,写入操作 // 向nz2002库中,user表结构中, // username 字段写入数据,前端参数$regname // userpwd 字段写入数据,前端参数$regpwd $sql = "INSERT INTO `user` (`username` , `userpwd`) VALUES ( '{$regname}' , '{$regpwd}')"; // 执行SQL语句 // 执行的是非查询语句,是数据写入数据 // 执行结果,如果写入数据成功$result 是 true // 执行结果,如果写入数据失败$result 是 false; $result = mysqli_query($link,$sql); // 第一次写入,如果账号没有重复,会写入成功,结果是true // 如果账号重复,会写入失败,结果是false // var_dump($result); // 根据 $result 结果,判断写入数据,也就是注册是成功还是失败 if($result === true){ echo '恭喜您,注册成功'; }else{ echo '您注册的账号重复,请您重新注册'; } // 关闭数据库 mysqli_close($link); // 总结 // 登录是数据查询操作,根据数组长度来判断是否登录成功 // 注册是数据写入操作,根据写入结果来判断是否注册成功 // 1,html部分 // 定义form表单,输入注册账号和密码 // 2,php部分 // 接收前端参数 // 通过预定义变量, $_POST[索引键名] 来获取具体的数据 // 索引键名是前端input标签,name属性的属性值 // 根据参数,对数据库进行操作 // 链接数据库 // $link = mysqli_connect('127.0.0.1' , 'root' , 'root' , 'nz2002' , 3306); // 定义SQL语句 // $sql = "INSERT INTO `表名` (`账号字段名`,`密码字段名`) VALUES ( '{$注册账号数据}' , '{$注册密码数据}' )" // 执行SQL语句 // $result = mysqli_query($link , $sql); // 注册成功,$result --- true // 注册失败,$result --- false // 根据结果,设定if判断 // if($result === true){ // echo '恭喜您,注册成功'; // }else{ // echo '您注册的账号重复,请您重新注册'; // } // 关闭数据库 // mysqli_close($link); // <!--

    前端传参总结2

    1,基本步骤 (1),前端部分 定义HTML中,form表单的属性 action : 定义好路径 method : 定义好传参方式 定义HTML中,传参标签的属性 name : 传参键名,必须严格遵守项目规范手册中的命名规范 value : 确保输入的数据内容正确 定义HTML中的验证 可以通过js对前端标签输入的数据做格式内容的验证 虽然前端的验证,啥用没有,但是我们该写还是要写的 (2),后端部分 接收前端参数 $_GET 接收前端get方式传参 $_POST 接收前端post方式传参 $_FILES 接收前端上传文件内容 通过mysqli或者pdo方式操作数据库 链接数据库 定义SQL语句 执行SQL语句 查询语句---结果集对象---抽取结果集对象,组成二维数组 非查询语句---成功true,失败false 根据结果,执行if语句 2,问题 不管是form表单,还是超链接跳转 都会从前端页面,跳转是PHP程序页面 实际项目中,很多效果是没有页面跳转 而是在当前页面显示数据库执行的结果 没有页面跳转的数据交互,要通过 ajax 来实现

    封装获取cookie

    // 设定cookie函数 function mySetCookie(key,value,time){ // JavaScript中,时间单位默认是毫秒 // 获取当前时间对象 const nowTime = new Date(); // 当前时间的时间戳和服务器时间,有8个小时的时差 -8小时的毫秒数 // 设定cookie时效时间 + 时间的毫秒数 let t = nowTime.getTime() - (8*60*60*1000) + time*1000; // 将新的时间戳,设定给 时间对象 nowTime.setTime(t); // 通过三元运算符,给 expires 赋值 如果没有时间参数,赋值空字符串,有时间参数,赋值时间对象 document.cookie = `${key}=${value};expires=${time === undefined ? '' : nowTime }`; } // 获取cookie函数 function myGetCookie(cookieStr){ const obj = {}; const arr1 = cookieStr.split('; '); arr1.forEach((item)=>{ const newArr = item.split('='); obj[newArr[0]] = newArr[1]; }) return obj; }
    Processed: 0.019, SQL: 9