WEB应用(六)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="01_filter.php" method="post">
        用户名: <input type="text" name="uname">
        <br>
        密码: <input type="password" name="upwd">
        <br>
        <input type="submit" value="登录">
    </form>
</body>
</html>
<?php
    header('Content-type:text/html;charset=utf-8');
    // 接收用户传递的数据
    // var_dump($_POST);
    // 获取用户名和密码
    $uname = $_POST['uname'];
    $upwd = $_POST['upwd'];

    // echo '用户名:' . $uname;
    // echo '<br>';
    // echo '密码:' . $upwd;

    // trim(字符串):可以将字符串左右两侧的空格,tab,回车字符去掉
    // 查看服务器端接收的数据:
    // 网页中鼠标右键单击->选择页面源代码方式打开
    // echo $uname;
    // echo '<br>';
    // echo trim($uname);

    // stripslashes(字符串):将字符串中的反斜线\ 去除掉
    // zhangsa\n:反斜线加上正常的字符会变成一些具有特殊功能的字符
    // 如果要过滤所有的反斜杠,可以使用正则规则去进行过滤处理
    // echo $uname;
    // echo '<br>';
    // echo stripslashes($uname);

    // 用户名输入:<script>alert(123)</script>
    // echo '<script>alert(123)</script>';
    // 不想让以上的脚本代码执行,将<>功能性去掉
    // htmlspecialchars(字符串):将字符串中的预定义字符转换成实体字符
    // < => &lt;
    // > => &gt;
    // 看起来就像是直接打印到页面,无法被浏览器执行
    // echo $uname;
    // echo htmlspecialchars($uname);

    // 既对用户输入的用户名左右两侧的空格过滤
    // 也去掉用户名中的反斜杠
    // 也处理掉用户名输入的预定义字符,将他们转换成实体字符
    echo htmlspecialchars(stripslashes(trim($uname)));

?>

$_COOKIE 和$_SESSION

都是为了保存回话状态的    (我们在访问在线网页,b站我们登录了自己的账号,下次进时就不需要输入)

那么区别是什么呢?

cookie是保存在客户端

而session是保存在服务器端    相对安全

怎么使用这俩个技术呢?                话不多说,直接上代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="login.php" method="post">
        用户名: <input type="text" name="uname">
        <br>
        密码: <input type="password" name="upwd">
        <br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

 login.php

<?php
    header('Content-type:text/html;charset=utf-8');
    $uname = $_POST['uname'];
    $upwd = $_POST['upwd'];

    // echo $uname  . '<br>' . $upwd;
    // 用户名:张三丰  密码:123456
    if($uname == '张三丰' && $upwd == '123456'){
        // echo '登录成功!';
        // 将用户的数据保存在COOKIE中
        // setcookie(name,value,expire):
        // 将数据保存在cookie中,cookie的名是name,值是value,
        // expire设置的是过期时间
        // time():返回当前的时间戳
        // 时间戳:现在的时间距离格林威治时间1970年1月1日 00:00:00所经过的秒数
        // 3600(秒) : 60分钟  => 1小时
        // time()+3600 : 一小时后过期
        // 查看cookie的方式:F12->存储->Cookie->http://127.0.0.1
        setcookie('uname',$uname,time()+3600);

        // 显示登录的用户
        // $_COOKIE:保存着COOKIE数据
        // var_dump($_COOKIE);
        echo '欢迎:' . $_COOKIE['uname'];
        echo "<a href='news.php'>新闻页面</a>";
    }else{
        die('登录失败!');
    }
?>

 news.php

<?php
    header('Content-type:text/html;charset=utf-8');
    echo '<h1>世界杯正在举行!</h1>';
    // 显示登录的用户
    // 如果用户是登录的,显示欢迎xxx
    // 如果用户是没有登录,显示请重新登录!
    // isset(数组[键名]):判断数组的键名是否存在/是否设置
    // 如果存在,返回true
    // 不存在返回false
    // 如果存在缓存,使用ctrl + F5强制刷新
    if(isset($_COOKIE['uname'])){
        echo '欢迎:' . $_COOKIE['uname'];
        echo "<a href='logout.php'>退出登录</a>";
    }else{
        echo '请重新登录!';
    }
?>

logout.php

<?php
    header('Content-type:text/html;charset=utf-8');
    // 删除cookie中的数据
    // setcookie(name,value,expire)
    // name:名称
    // value:值
    // expire:过期时间
    // time()-3600 : 一小时前过期
    setcookie('uname','',time()-3600);
?>

这些操作就在模拟用户在该网站下跳转不同页面,并保持登录信息的作用。

接下来session练习

<?php
    header('Content-type:text/html;charset=utf-8');
    // 将登录的用户数据保存在session中
    // 先开启session,才能使用session
    session_start();
    // $_SESSION:存储SESSION数据
    // 数组[键名] = 值;
    $_SESSION['uname'] = 'tony';
    // 查看session保存的位置:
    // phpStudy/tmp/tmp
    // 以sess_xxxx是session文件
    // 可通过时间去找,直接用记事本打开
    // 也可以将所有的session文件删除,再次执行03_login.php文件
    // 重新生成session文件
?>
<?php
    header('Content-type:text/html;charset=utf-8');
    // 删除session中的数据
    // 先关掉打开session文件
    // 开启session
    session_start();
    // unset(数组[键]) : 销毁
    unset($_SESSION['uname']);
    // session_destroy():删除session文件
    session_destroy();
?>
<?php
    header('Content-type:text/html;charset=utf-8');
    // 判断用户是否登录
    // 如果登录,提示 欢迎xxx
    // 如果没有登录,提示 请重新登录
    session_start();
    if(isset($_SESSION['uname'])){
        echo '欢迎:' . $_SESSION['uname'];
    }else{
        echo '请重新登录!';
    }
?>
<?php
    header('Content-type:text/html;charset=utf-8');
    // 记录文章的浏览量
    echo '<h1>文章</h1>';
    echo '<br>';
    // echo '浏览量:0';
    // 可以将文章的浏览量保存在session中
    // 判断这篇文章是否被人浏览过
    // 如果这篇文章是第一次被人浏览(之前没有被浏览过)
    // 在session中设置浏览量为1

    // 如果在session中已经存在浏览量数据(代表文章已经被浏览过)
    // 在原来文章浏览量的基础上+1
    session_start();
    if(isset($_SESSION['views'])){
        $_SESSION['views']++;
    }else{
        $_SESSION['views'] = 1;
    }
    echo '浏览量:' . $_SESSION['views'];

    // 修改文章的浏览量:
    // phpStudy/tmp/tmp
    // session文件中数字部分修改为你想要的浏览量数据
    // 注意:不要修改其他部分

    // COOKIE和SESSION的区别:
    // COOKIE和SESSION都属于会话技术,都可以保存会话状态
    // COOKIE:数据保存在客户端浏览器上,相对不安全,保存数据大小有一定限制,占用服务器资源相对较少
    // SESSION:数据保存在服务器上,相对更安全,保存数据相对较大,占用服务器资源相对较多

?>

Mysqli介绍(有了Mysqli 就可以通过PHP来操作Mysql数据库):

Mysqli  extension(“ i ”意为improve)Mysql的扩展

Mysqli 只针对Mysql数据库

Mysqli是面向对象的,但也提供了API接口

Mysqli支持预处理语句

连接数据库:

先进行查看,在我们之前使用SQL_front时。

弹出这个页面

点击属性

先放着,我们用PHP程序连接数据库

<?php
    header('Content-type:text/html;charset=utf-8');
    
    $host = 'localhost'; // 数据库服务器地址   输入本机的Ip也行
    $user = 'root'; // 用户名
    $pwd = 'root'; // 密码

    // 连接数据库
    // mysqli_connect(主机地址,用户名,密码)
    $conn = mysqli_connect($host,$user,$pwd);
    // var_dump($conn);
    // 如果连接数据库的结果是bool值false,代表数据库连接失败
    // 如果不是false,数据库连接成功
    if($conn == false){
        die('数据库连接失败!');
    }else{
        echo '数据库连接成功!';
    }
?>
<?php
    header('Content-type:text/html;charset=utf-8');
    // 连接数据库
    $conn = mysqli_connect('localhost','root','root');
    if($conn == false){
        die('数据库连接失败!');
    }else{
        echo '数据库连接成功!';
    }

    // 书写SQL语句
    $sql = 'CREATE DATABASE myDD';

    // 执行SQL
    // 数据库连接对象->query(sql语句) : 执行一条sql语句
    // 执行的结果如果为true,执行成功
    // 执行的结果如果为false,执行失败
    $res = $conn->query($sql);
    if($res){
        echo '数据库创建成功!';
    }else{
        die('数据库创建失败!');
    }


    // 可以通过SQL_front工具查看创库是否成功


    // 关闭数据库连接
    $conn->close();

?>

 这里可以逐条验证

<?php
    header('Content-type:text/html;charset=utf-8');
    // 连接数据库
    $conn = mysqli_connect('localhost','root','root');
    if($conn == false){
        die('数据库连接失败!');
    }else{
        echo '数据库连接成功!';
    }

    // 使用数据库
    $sql = 'USE myDD';
    // 执行sql
    $conn->query($sql);

    // 创建数据表
    $sql = "CREATE TABLE IF NOT EXISTS myuser(
        id INT UNSIGNED NOT NULL AUTO_INCREMENT,
        uname VARCHAR(200) NOT NULL,
        upwd VARCHAR(200) NOT NULL,
        PRIMARY KEY(id)
    )";

    // 执行sql
    $res = $conn->query($sql);
    if($res){
        echo '数据表创建成功!';
    }else{
        die('数据表创建失败!');
    }


    // 书写新增数据SQL
    $sql = "INSERT myDD.myuser(uname,upwd) VALUES('tony','123456')";

    // 执行SQL
    $res = $conn->query($sql);
    if($res){
        echo '数据新增成功!';
    }else{
        echo '数据新增失败!';
    }




    // 修改id为1的数据,用户名修改为张三
    // 书写SQL语句
    $sql = "UPDATE myDD.myuser SET uname='张三' WHERE id=1";
    // 执行SQL
    $res = $conn->query($sql);
    if($res){
        echo '数据修改成功!';
    }else{
        die('数据修改失败!');
    }



    // 删除id=1的数据
    $sql = 'DELETE FROM myDD.myuser WHERE id=1';
    // 执行SQL
    $res = $conn->query($sql);
    if($res){
        echo '数据删除成功!';
    }else{
        die('数据删除失败!');
    }


    // 查询数据前确保数据表中有数据
    // 执行php文件,每执行一次,就会新增一条数据,多执行几次

    // 查询SQL
    $sql = "SELECT * FROM myDD.myuser";
    // 执行sql
    $res = $conn->query($sql);
    // var_dump($res);
    // foreach(对象 as 变量a=>变量b) : 遍历  可以遍历可迭代对象
    foreach($res as $a=>$b){
        // var_dump($a);
        // $b变量中存储的就是遍历之后数据表中的每一条数据
        // $b是一个数组,如果进行数组取值:数组[键名]
        // var_dump($b['id']);
        // var_dump($b['uname']);
        var_dump($b);
    }



    // 关闭数据库连接
    $conn->close();

?>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值