网络安全--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开发)

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

相关推荐
隐-梵2 分钟前
面向GIS的Android studio移动开发(二)--在地图上绘制电子围栏
android·ide·android studio
末央&34 分钟前
【Linux】进程状态
android·linux·运维
独行soc41 分钟前
2025年渗透测试面试题总结-快手[实习]安全工程师(题目+回答)
linux·安全·web安全·网络安全·面试·职场和发展·渗透测试
luyou1121 小时前
雷电模拟器去除广告绿色版电脑安卓模拟器 电脑上使用安卓系统软件游戏 v9.1.45.1
android·游戏·电脑
ALe要立志成为web糕手2 小时前
php://filter的trick
安全·web安全·网络安全·php·ctf
@M-2 小时前
笔记:NAT
网络·笔记·php
追随远方3 小时前
网络框架二次封装:基于Kotlin的高扩展性网络请求框架完整实现
android·网络·okhttp·kotlin
Sean_summer3 小时前
PHP伪随机数
开发语言·php