网站开发涉及到的技术内容介绍——后端PHP(2)

news2024/11/15 11:12:27

网站开发涉及到的技术内容介绍——后端PHP(1)icon-default.png?t=N7T8https://blog.csdn.net/xiaochenXIHUA/article/details/141000752?spm=1001.2014.3001.5501

一、PHP的常用函数

1.1、PHP文件夹的常用函数

PHP的目录常用函数
序号 目录常用函数 说明
1 $_SERVER['DOCUMENT_ROOT'] 获取到PHP项目的根目录
2 dirname(__FILE__) 获取到当前php文件所在的目录
3 is_dir(文件路径或文件路径和名称) 判断当前内容是否为文件夹目录
4 scandir(目录路径) 列出当前指定目录下的文件和目录
5 filetype(文件路径或文件路径和名称) 返回文件的数据类型,文件返回[file],目录返回[dir]
6 opendir(文件路径) 打开文件夹,返回该文件夹资源
7 readdir(目录资源) 每次只读取指定目录资源下的一个内容
8 closedir(目录资源) 关闭已经打开的目录资源

实现一个简易的目录内容浏览功能,如下所示:

1、新建一个名为【commonfunc.php】的文件,内容如下:

<html>

<head>
    <meta charset="UTF-8">
    <title>测试PHP常用的函数</title>
</head>

<body>
<?php

//指定PHP页面的内容类型和编码格式
header("Content-Type:text/html; charset=utf-8");

//获取到根目录
$rootPath=$_SERVER['DOCUMENT_ROOT'];
echo "项目根目录为【$rootPath 】 <br>";

//目录操作
$curfilepathname=__FILE__;
echo "当前程序所在的路径和名称为:$curfilepathname <br>";
//判断当前内容是否为路径
echo "【$curfilepathname 】是否为路径: ".is_dir($curfilepathname)."<br><br>";

$curfilepath=dirname(__FILE__);
echo "当前程序所在的路径为:$curfilepath <br>";
//判断当前内容是否为路径
echo "【$curfilepath 】是否为路径: ".is_dir($curfilepath)."<br><br>";

$curdirallfiles=scandir($curfilepath);
echo "当前程序所在目录【$curfilepath 】下的所有文件为:<br>";
showdir($curdirallfiles,$curfilepath);
echo "<br><br>";

//指定的目录
$testPath='E:\AllSoftware\phpStudy\PHPTutorial\WWW\php\test';

if (is_dir($testPath)){
    echo "[$testPath] 目录下的内容为:<br>";
    //打开指定的目录
    if($curOpenDir=opendir($testPath)) {
        //readdir方法每次只读取一个内容
        while (($file=readdir($curOpenDir))!==false) {
            //获取到完整的文件路径和文件名称
            $fullPathFile=$testPath."\\".$file;
            //获取到文件的类型
            $fileType=filetype($fullPathFile);
            if($fileType== "file"){
                echo "文件类型是[$fileType],[$file]是文件,文件完整路径和名称是[$fullPathFile]<br>";
            }
            else{
                echo "文件类型是[$fileType],[$file]是目录,文件完整路径和名称是[$fullPathFile]<br>";
            }

        }
        //关闭指定的目录
        closedir($curOpenDir);
    }
}

echo "<br><br>";


function showdir(array $curdirallfiles,$curpath)
{
    foreach($curdirallfiles as $key => $value){
        //过滤.和..作为返回上一级的操作
        if ($value=='.'||$value=='..'){
            echo "<a href='./showdirfiles.php?fullpathname=$curpath'>$value</a> <br>";
            continue;
        }
        
        $value=iconv('gbk','utf-8',$value);
        $fullPath=$curpath."\\".$value;
        if(is_dir($fullPath)){
            $fullpath2=$fullPath.'\\'.$value;
            //显示目录图标和目录名称(且目录可以点击查看其包含的文件和文件夹内容)
             echo "<img src='../images/目录.png' width='20px' height='20px'/> <a href='./showdirfiles.php?fullpathname=$fullpath2'> $value</a> <br>";
        }
        else{
            //显示文件图标和文件名称
             echo "<img src='../images/文件.png' width='20px' height='20px'/> $value <br>";
        }

    }
}

?>

</body>

</html>

2、再新建一个名为【showdirfiles.php】的文件,且内容如下:

<?php
header("Content-Type:text/html;charset=UTF-8");

$fullpathname =$_GET['fullpathname'];

$curpath=dirname($fullpathname);
$curdirallfiles=scandir($curpath);
showdir($curdirallfiles,$curpath);


function showdir(array $curDirAllFiles,$curPath)
{
    foreach($curDirAllFiles as $key => $value){
        //过滤.和..作为返回上一级的操作
        if ($value=='.'||$value=='..'){
            echo "<a href='./showdirfiles.php?fullpathname=$curPath'>$value</a> <br>";
            continue;
        }

        $value=iconv('gbk','utf-8',$value);
        $fullPath=$curPath."/".$value;
        // $value=iconv('gbk','utf-8',$value);
        if(is_dir($fullPath)){
            $fullpath2=$fullPath.'/'.$value;
            //显示目录图标和目录名称(且目录可以点击查看其包含的文件和文件夹内容)
            echo "<img src='../images/目录.png' width='20px' height='20px'/> <a href='./showdirfiles.php?fullpathname=$fullpath2'> $value</a> <br>";
        }
        else{
            //显示文件图标和文件名称(且可以对文件进行删除、移动、复制操作)
            echo "<img src='../images/文件.png' width='20px' height='20px'/> $value <br>";
        }

    }
}

?>

1.2、PHP文件的常用函数

PHP文件的操作
序号 文件操作方法 说明
1 fopen(文件路径和名称,模式) 以指定模式打开文件,且返回对应的文件资源
2 fwrite(打开的文件资源,需写入数据) 将数据写入到文件中,且返回写入的数据长度
3 fread(打开的文件资源,需读取的数据长度) 读取指定长度的文件内容
4 fgets(打开的文件资源) 调用一次该方法读取文件的一行内容
5 readfile(文件路径和名称) 读取文件并自动打印展示
6 file_put_contents(文件路径和名称,需保存数据) 将内容保存到文件中(覆盖写入,先清空文件在写入),如果文件不存在则创建该文件;返回结果是保存内容的长度
7 file_get_contents(本地文件路径和名称或者远程的URL地址) 将整个文件的内容读取到一个字符串中
文件打开(fopen)模式说明
序号 模式内容 说明
1 w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
2 w+ 读写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
3 r 只读方式打开,将文件指针指向文件头
4 r+ 读写方式打开,将文件指针指向文件头
5 a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建 【追加文件内容】
6 a+ 读写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建 
7 x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则文件打开 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 
8 x+ 创建并以读写入方式打开,将文件指针指向文件头。如果文件已存在,则文件打开 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 
PHP的临时文件
前面我们将内容写入到文件保存到磁盘的都是永久文件;而创建临时文件对我们开发也有用处(即:建临时文件,用完后会自动删除,我们不需要去维护这个文件的删除状态)。
<?php
header("Content-Type:text/html;charset=UTF-8");

//临时文件(windows系统的临时文件存储在【C:\Users\用户名\AppData\Local\Temp目录中】带有php内容的就是)
//1、创建一个临时文件
$tmpfile=tmpfile();
//2、向临时文件写入内容
$writeInfoToTmpfile=fwrite($tmpfile,"测试写入临时文件的信息1");
echo "临时文件写入内容1结果:$writeInfoToTmpfile <br>";
$writeInfoToTmpfile2=fwrite($tmpfile,"第二次写入测试临时文件信息2");
echo "临时文件写入内容2结果:$writeInfoToTmpfile2 <br>";
// //休眠15秒,方便我们去【C:\Users\用户名\AppData\Local\Temp目录中】查看文件内容
// sleep(15);
// //读取临时文件方式一
// fseek($tmpfile,0);
// rewind($tmpfile);
// //指定读取1K的文件内容
// $readTmpfileInfo=fread($tmpfile,1024);
// //关闭临时文件(文件一关闭就会被删除)
// fclose($tmpfile);

//读取临时文件方式二
$tmpfile_path = stream_get_meta_data($tmpfile)['uri'];
$readTmpfileInfo=file_get_contents($tmpfile_path);
echo "读取到的临时文件信息为: $readTmpfileInfo <br>";

?>
PHP文件的重命名、移动、复制和删除
序号 文件的操作 说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ -- 负载均衡式在线OJ (一)

一、项目宏观结构 1.项目功能 本项目的功能为一个在线的OJ&#xff0c;实现类似leetcode的题目列表、在线提交、编译、运行等功能。 2.项目结构 该项目一共三个模块&#xff1a; comm : 公共模块compile_server : 编译与运行模块oj_server : 获取题目列表&#xff0c;查看题…

Spring Boot项目缺少配置文件的解决方法:IDEA

本文介绍在IntelliJ IDEA软件中&#xff0c;为Spring Boot项目添加配置文件的操作方法。 最近&#xff0c;在IntelliJ IDEA软件中新创建了一个Spring Boot项目&#xff0c;是通过如下图所示的方法直接新建的。 但是&#xff0c;随后发现这样创建的Spring Boot项目没有配置文件。…

Threejs实现鼠标控制相机+键盘控制模型+点击指定点控制模型移动

1.前言 Threejs实现鼠标控制相机功能,键盘控制模型功能,点击指定点控制模型移动功能 键盘使用WASD控制模型移动效果图: 鼠标移动可控制相机的位置控制模型移动到指定点效果图: 2.功能拆分 根据以上效果图,可以得到以下三个主要实现的功能 鼠标移动可以使相机跟随通过键…

leetcode-121-买卖股票的最佳时机

原理&#xff1a; 核心原理&#xff1a; 如果我们真的在买卖股票&#xff0c;我们肯定会想&#xff1a;如果我是在历史最低点买入就好了&#xff01;该历史最低点是指卖出当天之前的历史最低点而不是全局最低点。 实现步骤&#xff1a; 1、初始化变量preprices[0]表示历史股…

20240809 每日AI必读资讯

乒乓球AI机器人赢了人类&#xff01;正反手灵活转换&#xff0c;擦网球高球都能接 - 谷歌发布首个达到人类竞技水平的机器人Agent&#xff0c;挑战乒乓球赛场。 - 机器人通过学习大量乒乓球状态数据&#xff0c;掌握了正手上旋球、反手瞄准等技能&#xff0c;展现出高速运动…

CTFHUB | web进阶 | PHP | Bypass disable_function | bypass iconv 2

开启题目 查看源码&#xff0c;发现可以蚁剑连接 进入之后无发现&#xff0c;使用插件 iconv 上传脚本 进入之后发现多了一个 .antproxy.php&#xff0c;复制文件名重新拼接连接 进入终端&#xff0c;查看根目录之后发现了有两个 flag 文件&#xff0c;之后发现了本题的 flag

STM32CUBEMX+PWM多一个尖峰的问题

问题描述&#xff1a;使用TIM2的通道3产生PWM波形&#xff0c;产生n个数量的波形后&#xff0c;在停止的时候会有一个尖峰。 怀疑是自动重载值临界的时候有问题&#xff0c;对重载值多减一个值&#xff0c;但还是有这个问题。 解决&#xff1a;电路是默认低电平&#xff0c;我…

skynet 连接redis

文章目录 概述main.luaagent.luaredis.lua 小结 概述 之前写过skynet 入门篇&#xff0c;还有skynet实操篇&#xff1b;这2篇&#xff0c;主要写了skynet如何使用&#xff0c;还有些skynet的调用流程之类。 其实&#xff0c;看过skynet的demo之后&#xff0c;发现skynet中没有…

L1-书生·浦语大模型全链路开源体系介绍

视频观看地址&#xff1a;书生浦语大模型全链路开源开放体系_哔哩哔哩_bilibili 本视频介绍了书生葡语大模型的开源开放体系&#xff0c;包括技术发展、性能提升、模型架构、开源生态等。 要点: - &#x1f31f; 开源开放体系涵盖数据收集、标注、训练、微调、评测、部署等全…

Ubuntu 系统的部署和基础操作(使用)

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言 Ubuntu 是一款基于 Debian 的开源 Linux 操作系统&#xff0c;以其易用性和强大的社区支持而广受欢迎。对于许多初次接触 Linux 的用户来说&#xff0c;Ubuntu 是理想的入门选择。本文将介绍 Ubuntu 系统的基本操作和使用…

cordova打包后请求不到接口(接口请求失败)

原因&#xff1a;CORS跨域问题导致 解决方法&#xff1a; 将根目录下的config.xml打开&#xff0c;添加 preference 即可

10分钟学会docker安装与使用

文章目录 1、docker简介2、docker的基本组成3、docker的安装与配置4、docker的常用命令 1、docker简介 什么是容器&#xff1f; 它是一种虚拟化的方案&#xff0c;是操作系统级别的虚拟化&#xff0c;只能运行相同或相似内核的操作系统&#xff0c;依赖于Linux内核特性&#x…

Qt实现圆形窗口

重新实现paintEvent()函数。 效果如下&#xff1a; 效果为蓝色区域&#xff0c;背景是vs接面&#xff0c;代码直接复制可用&#xff0c;留给有需要的人。 #ifndef CircleWidget_h__ #define CircleWidget_h__#include <QWidget>class CCircleWidget : public QWidget {Q…

MySQL安装以及配置

目录 1. MySQL安装包下载 2. 安装 3. 配置 4. 使用MySQL 5. 配置环境变量 1. MySQL安装包下载 1.1 迅雷下载 分享文件&#xff1a;MySQL安装包.zip 链接&#xff1a;https://pan.xunlei.com/s/VO3llUOt6rFFWl9TdrTrJI-cA1?pwdxere# 1.2 官网下载 MySQL :: Download MyS…

如何从戴尔笔记本电脑硬盘恢复数据

“如何从坏掉的戴尔笔记本电脑硬盘中恢复数据&#xff1f;我无法访问硬盘&#xff0c;但我确实需要从硬盘中检索数据。我有很多重要文件被困在那里。” 人们学习如何从戴尔笔记本电脑硬盘恢复数据的原因有很多&#xff0c;例如有意或无意删除、硬盘格式化、安全警告隔离受病毒…

springboot社区旧物回收系统-计算机毕业设计源码94813

目 录 摘要 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 社区旧物回收系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 社…

适合出行的蓝牙耳机推荐有吗?盘点4款开放式耳机排行版前十名

如果说出行想要佩戴耳机&#xff0c;但是又不知道选什么样的耳机&#xff0c;那其实你可以看看我的建议。因为我自己其实是个比较爱玩爱出去乱逛且选择恐惧症的耳机重度患者&#xff0c;所以就平时经常会跑去公园散步戴耳机听歌&#xff0c;或者是自己去野炊之类的&#xff1b;…

二叉树的遍历与根据遍历序列求二叉树

二叉树的遍历&#xff1a; 1、先序遍历&#xff1a;DLR 2、中序遍历: LDR 3、后序遍历: LRD (L表示遍历左子树&#xff0c;D表示遍历根结点&#xff0c;R表示遍历右子树&#xff09; 以下图举例说明&#xff1a; 以先序遍历为例&#xff1a; 1、因为先序遍历的规则为D…

直击Vue2/3watch的底层逻辑,字符串长度对侦听效率的影响

目录 直击Vue2/3watch的底层逻辑&#xff0c;字符串长度对侦听效率的影响 一、Vue 2的底层原理 二、Vue 3的底层原理 三、基础类型性能消耗 四、数据变化比较原理 1、Vue 2 中的引用类型比较 2、Vue 3 中的引用类型比较 3、字符串比较&#xff08;基础类型比较&#xf…

数据结构(学习)2024.8.6(顺序表)

今天开始学习数据结构的相关知识&#xff0c;大概分为了解数据结构、算法&#xff1b;学习线性表&#xff1a;顺序表、链表、栈、队列的相关知识和树&#xff1a;二叉树、遍历、创建&#xff0c;查询方法、排序方式等。 目录 一、数据结构 数据 逻辑结构 1.线性结构 2.树…