ThinkPHP5.0 数据库的备份、下载、还原、删除

Thinkphp 6.0响应输出和重定向 Thinkphp 6.0响应操作,响应输出和重定向。 阅读详情

参考文档:
https://blog.youkuaiyun.com/qq_42455095/article/details/84313754#commentBox
https://blog.youkuaiyun.com/qq_42249896/article/details/85238523
https://blog.youkuaiyun.com/cplvfx/article/details/86494487
自己整理了一个文档~~~
效果图:
在这里插入图片描述
一、下载类文件
https://github.com/joytom/db_backup
按照下图存放类文件
在这里插入图片描述
我对Baksql.php文件进行了一点改动,代码如下:
主要修改的是get_dbdata方法,我也做了标记

<?php
/**
 * 备份数据库的扩展类
*/
namespace org;

class Baksql {
   
   
    private $config=[];
    private $handler;
    private $tables = array();//需要备份的表
    private $begin; //开始时间
    private $error;//错误信息

    public function __construct($config) {
   
   
        /////////////记住创建这个存放备份文件目录,不然会报错////////////////////
        $config['path']=ROOT_PATH . 'public' . DS .'static'. DS .'data/'; //默认目录
        $config["sqlbakname"]=date("YmdHis",time()).".sql";//默认保存文件
        $this->config = $config;
        
        $this->begin = microtime(true);
        header("Content-type: text/html;charset=utf-8");
        $this->connect();
    }
    //首次进行pdo连接
    private function connect() {
   
   
        try{
   
   
           $this->handler =new \PDO("{$this->config['type']}:host={$this->config['hostname']};port={$this->config['hostport']};dbname={$this->config['database']};",
                $this->config['username'],
                $this->config['password'], 
                array(
                    \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES {$this->config['charset']};",
                    \PDO::ATTR_ERRMODE =>  \PDO::ERRMODE_EXCEPTION, 
                    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC
                )); 
        }catch (PDOException $e) {
   
   
            die ("Error!: " . $e->getMessage() . "<br/>");
        }
        
    }
     /**
     * 查询
     * @param string $sql
     * @return mixed
     */
    private function query($sql = '')
    {
   
   
        $stmt = $this->handler->query($sql);
        $stmt->setFetchMode(\PDO::FETCH_NUM);
        $list = $stmt->fetchAll();
        return $list;
    }
     /**
     * 获取全部表
     * @param string $dbName
     * @return array
     */
    private function get_dbname($dbName = '*') {
   
   
         $sql = 'SHOW TABLES';
        $list = $this->query($sql);
        $tables = array();
        foreach ($list as $value)
        {
   
      
            $tables[] = $value[0];
        }
        return $tables;        
    }
    /**
     * 获取表定义语句
     * @param string $table
     * @return mixed
     */
    private function get_dbhead($table = '')
    {
   
   
        $sql = "SHOW CREATE TABLE `{$table}`";
        $ddl = $this->query($sql)[0][1] . ';';
        return $ddl;
    }
    /**
     * 获取表数据
     * @param string $table
     * @return mixed
     */
    private function get_dbdata($table = '')
    {
   
   
        $sql = "SHOW COLUMNS FROM `{$table}`";
        $list = $this->query($sql);
        //字段
        $columns = '';
        //需要返回的SQL
        $query = '';
        foreach ($list as $value)
        {
   
   
            $columns .= "`{$value[0]}`,";
        }
        $columns = substr($columns, 0, -1);
        $data = $this->query("SELECT * FROM `{$table}`");
        foreach ($data as $value)
        {
   
   
            $dataSql = '';
      /////////我的数据库中有 上传图片的路径带有 \特殊字符 备份时消失了////////////////
      /////////数据库时候路径中的反斜杠会丢失,所以导出的时候要再给他加一个反斜杠///////
            $value=array_map('addslashes', $value);//给预定义字符加反斜杠
            //原来的代码
//            foreach ($value as $v)
//            {
   
   
//                $dataSql .= "'{$v}',";
//            }

           
	/////////1.程序生成的代码,字段没有字符集;主要出现在varchar类型////
    /////////2.程序生成的代码,int字段的数据被加单引号''//////////////
             //修改
     		/**
             * 2019-07-25 xiaoxia  修改后
             * */
            //cp循环次数
            $cp_loop_time=0;
            foreach ($value as $v)
            {
   
   
                if(strpos($list[$cp_loop_time][1],'int') !== false || strpos($list[$cp_loop_time][1],'double') !== false )
                {
   
   
                    if($v==null)
                    {
   
   
                        $dataSql .= "NULL,";
                    }
                    else{
   
   
                        $dataSql .
ThinkPHP5网站入侵应急响应:WebShell检测、清除与安全加固实战 WebShell是Web安全领域常见的后门程序,其原理是通过文件上传、远程代码执行等漏洞,将恶意脚本植入服务器,使攻击者能够远程执行任意命令。这种技术的危害在于能完全控制服务器,窃取数据、植入后门或发起进一步攻击。在工程实践中,防范WebShell需要从漏洞修复、入侵检测和应急响应三个层面构建防御体系。本文以一次真实的ThinkPHP5网站入侵事件为例,详细拆解了从发现异常请求、定位WebShell文件,到全面清除后门、修复文件上传漏洞和远程代码执行漏洞的完整操作流程。通过结合日志分析、特征扫描和工具检测, 阅读详情

相关推荐

ThinkPHP支付系统商户自助进件功能与代码加密实战

在Web应用开发中,数据安全与业务流程自动化是构建可靠商业系统的基石。其核心原理在于通过严谨的代码逻辑与加密技术,确保敏感信息在传输、存储与处理过程中的机密性与完整性。这对于提升系统抗攻击能力、保护商业数据具有至关重要的技术价值,尤其在支付、电商等涉及资金与用户隐私的应用场景中。本文将聚焦于支付系统的关键模块——商户自助进件功能,深入剖析其业务流程、数据库设计及前后端交互的安全实践。针对广泛使用的ThinkPHP 3.2.3框架,文章提供了完整的控制器与模型代码实现,并重点探讨了如何利用**ionCube*

weixin_34356555的博客 450

哥斯拉4.0 Webshell流量解密与攻击链深度剖析实战指南

Webshell作为常见的Web安全威胁,其核心原理是通过在服务器上植入恶意脚本,为攻击者提供隐蔽的远程控制通道。在攻防对抗中,理解其通信机制是检测与响应的关键。现代高级Webshell普遍采用动态密钥协商与多层加密混淆技术,以规避传统基于特征码的检测。这种技术演进显著提升了攻击的隐蔽性和对抗性,使其在红蓝对抗和渗透测试中成为焦点。本文以广泛使用的哥斯拉4.0为例,深入解析其动态密钥协商、AES/DES加密及Base64编码混淆等核心流量特征,并详细演示如何通过Python脚本模拟密钥派生、解密还原攻击指令

dggnqzt6462的博客 383

基于thinkphp的mysql数据库的备份与还原类(好用)

基于thinkphp的mysql数据库的备份与还原类,想在你thinkphp开发的项目中加入mysql数据库的备份与还原功能的话,这是一个不错的选择

Thinkphp数据库备份和还原

Thinkphp数据库备份和还原

thinkphp5.1 系统数据备份、还原

thinkphp5.1 备份系统数据库及还原数据库 支持多数据库链接

eDP、DP与HDMI——现代显示接口的核心解析

eDP、DP和HDMI各有千秋:eDP以嵌入式设备的低功耗见长,DP凭借开放生态和高带宽成为专业领域首选,而HDMI则依靠庞大的消费电子生态稳居家庭市场。未来,随着Type-C接口的普及和超高清内容的爆发,三者的技术边界可能进一步融合,但各自的核心优势仍将长期共存。对于用户而言,选择接口需基于设备需求——游戏玩家青睐HDMI的VRR,设计师依赖DP的多屏扩展,而轻薄本则离不开eDP的紧凑设计。

麟的博客 8415

嵌入式开发必备:aarch64-linux-gnu-gcc交叉编译工具链保姆级安装指南(含常见错误解决)

本文详细介绍了aarch64-linux-gnu-gcc交叉编译工具链的安装与配置方法,涵盖从系统软件源安装到Linaro二进制包部署的全流程。针对嵌入式开发中常见的依赖错误、版本冲突等问题提供实用解决方案,并分享性能优化技巧与项目集成经验,帮助开发者高效完成ARM64设备的跨平台开发。

yoga7的博客 1030

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

一名全栈小白的博客 1万+

C#上位机与OneNET云平台数据交互实战——基于HTTP与JSON解析

本文详细介绍了使用C#开发上位机软件与OneNET物联网云平台进行数据交互的实战方法。通过构建HTTP请求、解析JSON数据,实现设备数据的实时获取、界面展示与本地存储,为工业监控与数据采集提供了一套完整高效的C#解决方案。

kkk56的博客 219

SDK报错(1)undefined reference to `f_mount‘

按文中说法是ff.c文件中用了一个if语句来判断是否启用ff.h头文件,但是却没有地方进行宏定义来满足这个if条件。利用SDK读取sd卡时,添加了xilffs库,而且包含了ff.h头文件,还是对fat库的函数报错。网上有的说在ARM v7 gcc linker中添加xilffs的方法可以解决,但我试了没有用。如下图,我们可以在ff.c中自己添加一个宏定义来实现这个条件。最后在赛灵思论坛找到了一个解决方法,原文连接如下。这时候保存编译之后,报错就消失了。ff.c 文件在bsp工程下。

EfunStudy的博客 1481

基于云平台的ATS系统微服务架构方案研究

在当前智慧地铁的升级转型过程中,城市轨道交通ATS系统面临着稳定性差、运维方 式繁琐和故障应急处理效率低等问题。为此,提出一种基于云平台的ATS系统微服务架构方案; 研究了ATS系统在云平台上的微服务总体架构、ATS应用的微服务划分和设计、容器部署方式 及通信交互模式,可实现系统松耦合和易扩展,达到节约计算资源、提高系统稳定性和运营效 率的目的

mi_lan1的博客 966

从零构建智慧农业监测终端:STM32数据采集与LoRa组网实战

本文详细介绍了如何从零构建智慧农业监测终端,涵盖STM32数据采集与LoRa组网实战。通过DHT22温湿度传感器和YL-69土壤湿度传感器实现精准环境监测,结合LoRa无线传输技术解决偏远农田信号问题。文章还分享了硬件选型、电路设计、低功耗优化及Flutter跨平台应用开发等关键技巧,助力农业智能化升级。

weixin_29172963的博客 357

硬件工程师笔试面试高频考点汇总——(2025版)

《硬件工程师笔试面试知识汇总》一文系统梳理了硬件领域的核心知识体系,涵盖电子器件、模拟电路、数字电路等模块。文章详细解析了电阻、电容、电感等基础元件的选型与应用,深入探讨了三极管、MOS管等半导体器件的工作原理,并对比分析了DCDC与LDO等电源方案。在电路设计方面,提供了滤波器、放大器等实用电路的设计方法与仿真案例,同时包含UART、I2C等通信协议的实现要点。文章还整合了戴维宁定理等电路分析理论,并附有美团、联想等名企真题解析。通过器件特性、电路设计、企业真题三维度内容,为硬件工程师构建了完整的知识框架

XU157303764的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 阿里云服务器 nginx配置http和https都能访问
下一篇: tp5 上传图片到阿里云OSS
xyl_hq
博客等级 码龄8年 14粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值