网络安全--PHP第一天

目标 熟悉信息传递架构 基于phpstydy-mysql-php

前置条件 需要先在数据库中创建相应的库和表名并配置表的结构

该文件为数据库配置文件 名字为config.php

复制代码
<?php
$dbip = 'localhost';//连接数据库的地址 远程连接需要输入ip等
$dbuser = 'root';//连接数据库的用户
$dbpass = 'root';//连接数据库用户的密码
$dbname = 'demo01';//进入后使用的数据库的表
$con = mysqli_connect($dbip, $dbuser, $dbpass, $dbname);//返回连接的结果 该函数可以连接数据库

?>

复制代码
该文件名字为domo.php 主要是创建方法

<form id="form1" name="form1" method="post" action="">
    <p>用户名: <input type="text" name="username"></p>
    <p>内容:</p>
    <p><textarea name="content"></textarea></p>
    <input type="submit" name="submit" id="submit" value="提交">
</form>


<?php
include 'config.php';//引入数据库连接
//判断连接情况使用if语句

function add_gbook($con)//定义方法
{
    if (!$con) {
        die("连接错误: " . mysqli_connect_error());
    } else {
        //去除垃圾数据(没有用户的数据)
        $u = @$_POST['username'];//拿到 <p>用户名: <input type="text" name="username"></p> 内的数据
        if (isset($u) && trim($u) !== '') {
            //连接成功
            // 使用 null 合并运算符,避免 @ 抑制错误
            //我们使用form表单传数据 通过input里面的username属性找到要传输的数据
            $c = @$_POST['content'];  //拿到 <p><textarea name="content"></textarea></p> 的数据
            $i = @$_SERVER['REMOTE_ADDR'];//拿到连接的IP地址
            $ua = @$_SERVER['HTTP_USER_AGENT'];//拿到连接报文的请求头
            //书写sql语句
            //!!!!!插入表的数据用单引号 而字段名要反引号!!!!!
            $sql = "insert into gbook(`username`,`content`,`ipaddr`,`uagent`) value('$u','$c','$i','$ua');";
            mysqli_query($con, $sql);//执行sql语句
            echo '<script>alert("留言成功")</script>';//里面单引号 外面双引号 反之亦然
        }
    }
}

function show_gbook($con)//定义方法
{
    $sql1 = "select * from gbook";//查询语句
    $data = mysqli_query($con, $sql1);//执行语句 返回结果
    while ($row = mysqli_fetch_array($data)) {//循环输出数据
        echo "<br>";
        printf("%s : %s", $row['username'], $row['content']);//打印数据
    }
}

?>

第三个文件为主要为执行文件 名字为gbook-admin.php 和其他两个文件不在一起 注意看引入路径

复制代码
<?php
include '../config.php';//引入代码(方法)
include '../domo.php';

add_gbook($con);//调用方法

$sql1 = "select * from gbook";//定义查询语句
$data = mysqli_query($con, $sql1);//执行sql语句
while($row = mysqli_fetch_array($data)){//while循环有结果就输出 数据库数据有限
    echo "<br>";//每一次循环 换行
    printf("%s : %s",$row['username'],$row['content']);//循环打印数据
    echo "<a href='gbook-admin.php?delete=$row[username]'>删除</a>";//打印结果后添加删除功能
}

$delstr = @$_GET["delete"];//通过get方法拿到数据 $row[username] 方便后面语句查询
$sql2 = "delete from gbook where username='$delstr';";//定义删除数据语句
if(mysqli_query($con, $sql2) && $delstr != ''){//在数据库执行命令 并确保第一次进入页面不会出现alert删除弹窗
    echo "<script>alert('删除成功')</script>";//弹窗
}


结果页面

展示了信息传输的过程(php开发)

构造好数据 客户端发送消息到网页 网页传输数据到数据库 数据库存储数据 数据库返回数据到网页 网页回消息到客户端

相关推荐
阿巴斯甜10 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker10 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952711 小时前
Andorid Google 登录接入文档
android
黄林晴12 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
BingoGo13 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack13 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android