PHP 转义用户输入的文件名

2023-12-20

我有一个用户可以上传文件的表单,我想将该文件命名为[id]_[lastname]_[firstname].pdf。该名称是由用户输入的,我担心他们输入的内容中带有斜杠。否则,类似的事情$path = $dir.$filename可能会导致$path = 'uploads/2_smith_john/hahaimajerk.pdf'如果名字是john/hahaimajerk.

我真的不想强迫用户将他们的名字限制为任何内容;我不介意在文件名中稍微改变一下他们的名字,只要我能说出原来的名字。我需要转义哪些字符,或者有其他方法可以做到这一点?或者...我只是使用mysql_real_escape_string?


我通常为此使用正则表达式。我不想删除某些特定字符(如斜杠、点等),而是只允许某些字符(如字母数字)

例如,这将用下划线替换任何非字母、数字、破折号或下划线的字符:

$escaped = preg_replace('/[^A-Za-z0-9_\-]/', '_', $raw);

破折号之前的反斜杠用于转义正则表达式中的破折号,因为破折号通常用于指定字符范围(例如 A-Z)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 转义用户输入的文件名 的相关文章

  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • jQuery ajax 调用包含重音字符的 url 将错误的 Uri 从 IE 发送到服务器

    我在使用 IE 发送包含重音字符的 url 时遇到问题 这是一个简单的函数 function runjQueryTest var url test Beyonc get url function 在服务器 PHP 上我记录了请求uri的值
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • 您的要求无法解析为 laravel 的一组可安装软件包

    我使用 5 7v Laravel 和 7 2 1v PHP 和 Composer 最新版本 但是当我想创建新项目时出现这些错误 Your requirements could not be resolved to an installabl
  • 如何在 GitHub Action 中使用不同版本的 PHP 进行测试

    我有一些 PHP 代码 其中包含使用以下命令运行的测试PHPUnit并想对其进行测试GitHub Actions 我在他们的文档中找不到测试 PHP 包的方法 我想使用不同版本的 PHP 进行测试 但他们只有最新的版本7 3安装 您可以添加
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • 使用值填充的 Symfony2 自定义字段类型

    这是先前问题的后续问题Symfony2 自定义表单类型或扩展 https stackoverflow com questions 24079288 symfony2 custom form type or extension 我正在尝试为订
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • 是否可以用 PHP 编写电子邮件解析器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 通过互联网IP地址从一台计算机访问xampp到另一台计算机

    我试图从另一台计算机访问我的 xampp 它显示为禁止错误 然后我在 google 上搜索答案 因为他们告诉在 apache 文件夹中的 httpd conf 文件中更改一些设置 如下所示 Order Deny Allow Deny fro
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht

随机推荐

  • 为什么我不能对通用 IEnumerable 对象调用 ToArray? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 public static T ToArray
  • 如何在部分视图中获取与父操作关联的 RouteData?

    在 PartialView 的操作中 我想知道与父操作关联的 RouteData 该部分视图是我的母版页模板的一部分 我希望它知道作为页面渲染的一部分调用的控制器和操作 在我的 PartialView 操作中 我检查RouteData Va
  • Oracle 11g - 插入多行的最有效方法

    我有一个应用程序在 WAN 上运行缓慢 我们认为原因是对表进行多次插入 我目前正在研究同时插入多行的更有效方法 我找到了这个方法 INSERT ALL INTO MULTI INSERT VAL 1 VAL 2 VALUES 100 20
  • 从 Windows 服务执行 Process.Start 时访问被拒绝

    我正在尝试以另一个用户的身份从服务运行一个进程 Process Start applicationPath params account SecureStringPassword 服务正在 本地系统 帐户下运行 The account参数是
  • SharedArrayBuffer 未定义

    我正在使用一个名为react canvas 从几天前开始 一直输出一条错误消息 p 标签应在网络浏览器 包括 Chrome 中显示画布的区域中 我在用nextjs 我附上package json below SharedArrayBuffe
  • 用于 Android 的 Google Place API 来查找城市

    我看过教程 tutorial https developers google com academy apis maps places autocomplete android 在 android i 中使用自动完成文本视图查找城市 我已经
  • 从requirements.txt安装PyTorch

    火炬文档说使用 pip install torch 1 4 0 cpu torchvision 0 5 0 cpu f https download pytorch org whl torch stable html 安装最新版本的 PyT
  • 流星会话替换?

    在最新的 Meteor 版本 版本 0 5 8 中 Session已从服务器端代码中删除 以前我用过Session储藏客户特定的服务器的变量 该功能的替代品是什么 案例示例 User One打开浏览器 User Two打开浏览器 一个调用服
  • 如何在odoo中弹出成功消息?

    我通过单击按钮发送邀请 在单击按钮并成功发送邀请后 会弹出邀请发送成功的消息 但问题是弹出消息的主标题是Odoo Server Error 那是因为我正在使用 raise osv except osv Success Invitation
  • SCNScene 和 SceneKit 编辑器的子类化

    我有带有相机设置的 SCNScene 子类 我想在所有子类中使用它 let scene01 TheSubclassScene let scene02 TheSubclassScene named art scnassets testScen
  • 点击交换课程

    我有一个包含 6 个项目的列表 这些项目位于全局 div navigationaence 中 现在我可以在单击时添加一个类 但现在它们会加起来 这意味着一旦我的六个项目被单击 它们最终都会成为当前代理类 我希望能够删除向单击的项目添加一个类
  • 在 Typescript 中使用 async/await 时未定义 __awaiter

    我在 Typescript 中有以下代码片段 nsp on connection async function socket await this emitInitialPackage nsp currentLine currentCell
  • 当 url 导致临时重定向 (http 302) 时,什么会被索引?

    我正在努力使我们的 很大程度上基于 AJAX 的 网站对搜索引擎更加友好 我们有一个系统 在设置会话变量以更改主页的行为后 某些网址会重定向到主页 这是使用 Controller Redirect 方法创建 ActionResult 来实现
  • 通过 Gremlin 计算大图中的节点/边数?

    通过 Gremlin 计算大图中的节点 边数的最简单且最有效的方法是什么 我发现最好的方法是使用 V 迭代器 gremlin gt g V gather it size 然而 对于大图来说 这不是一个可行的选择V 的文档 http grem
  • numpy 中的加权协方差矩阵

    我想计算协方差C of n的测量p数量 其中每个单独的数量测量都有自己的权重 也就是我的权重数组W与我的数量数组具有相同的形状Q n by p 当地人np cov 函数仅支持赋予各个测量值的权重 即长度向量n 我可以初始化一个p by p矩
  • EF core、Any 无法翻译,将在本地评估

    我有一个程序可以返回我需要的实体 ID 我决定创建此过程 因为应返回给最终用户的实体由相关实体过滤 但 EF Core 不支持相关实体过滤 然后我想使用这个 id 来获取我需要的实体及其相关实体 我正在使用Any operator In m
  • Cleave.js 电话 CA

    我正在尝试使用格式化电话号码字段Cleave js https nosir github io cleave js 它不起作用 但我似乎不明白为什么 我是这样开始的 import Cleave from cleave js var clea
  • 如何在android中的string.xml中添加多段落的长文本

    当我在之间添加许多段落时
  • 组播中的环回

    这个问题是关于在同一主机内发送和接收多播 同时将其发送到其他主机 即使经过几个小时的谷歌搜索 我仍然无法弄清楚多播数据报是如何在同一主机内路由的 下面是问题的详细描述 Linux 盒子 A 通过电缆连接到交换机 路由器 我们将交换机 路由器
  • PHP 转义用户输入的文件名

    我有一个用户可以上传文件的表单 我想将该文件命名为 id lastname firstname pdf 该名称是由用户输入的 我担心他们输入的内容中带有斜杠 否则 类似的事情 path dir filename可能会导致 path uplo