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

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

相关推荐
Hum8le1 小时前
CTF题目《easy_web》(安洵杯 2019 变种 Web)
前端·安全·web安全
ZHOUPUYU1 小时前
PHP 9.0 前瞻:下一代 PHP 会带来哪些新功能?
android·开发语言·php
JMchen1 小时前
性能优化——让Native代码飞起来
android·c++·性能优化
HackTwoHub1 小时前
DeepSeek Harness 红队破甲插件|适配 SRC 挖掘场景,区分平台拦截与模型原生输出,用于大模型安全边界合规测评研究
安全·web安全·网络安全·系统安全·密码学·网络攻击模型·安全架构
梦帮科技1 小时前
【3.0】上线与运维:节点监控、水龙头、区块浏览器与安全清单
运维·安全·web安全·金融·区块链·密码学·安全架构
ZHOUPUYU2 小时前
PHP 8.2 的核心高级特性,包括只读类、类型系统增强
android·性能优化·php
ZHOUPUYU2 小时前
PHP 8.0 高级技术实战:从新特性到性能优化
android·性能优化·php
不爱说话郭德纲2 小时前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app
唐青枫3 小时前
Yii2 Model 详解:属性、验证、场景与 ActiveRecord 实战
php
三8443 小时前
Fastjson 漏洞· 06 · 防御、审计与检测
安全·web安全·fastjson