前后端

前后端

实例一 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值