网络安全--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 分钟前
Android ContentProvider的使用
android·contenprovider
不想迷路的小男孩3 分钟前
Android Studio 中Palette跟Component Tree面板消失怎么恢复正常
android·ide·android studio
餐桌上的王子4 分钟前
Android 构建可管理生命周期的应用(一)
android
菠萝加点糖8 分钟前
Android Camera2 + OpenGL离屏渲染示例
android·opengl·camera
用户20187928316718 分钟前
🌟 童话:四大Context徽章诞生记
android
yzpyzp27 分钟前
Android studio在点击运行按钮时执行过程中输出的compileDebugKotlin 这个任务是由gradle执行的吗
android·gradle·android studio
aningxiaoxixi37 分钟前
安卓之service
android
zorro_z1 小时前
PHP语法基础篇(九):正则表达式
php
TeleostNaCl1 小时前
Android 应用开发 | 一种限制拷贝速率解决因 IO 过高导致系统卡顿的方法
android·经验分享
用户2018792831672 小时前
📜 童话:FileProvider之魔法快递公司的秘密
android