php explode() bug(php 图片上传有个小BUG,求大神解答以下是我的一些代码)

2026-09-21 07:15:01 0

php explode() bug(php 图片上传有个小BUG,求大神解答以下是我的一些代码)

大家好,如果您还对php explode() bug不太了解,没有关系,今天就由本站为大家分享php explode() bug的知识,包括php 图片上传有个小BUG,求大神解答以下是我的一些代码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

php 图片上传有个小BUG,求大神解答以下是我的一些代码

您好,这个是 PHP 的一个 BUG(毕竟是外国人做的,中文支持不太好)。

PHP 中,上传中文文件基本上都会出错,所以只要在移动文件时,将文件重命名就可以了。

(如果需要原文件名,只需要将原文件名和重命名后的文件名保存在数据库中就可以了)

代码如下(您的代码有一些漏洞与不规范之处,这里已更正):

// 检测文件MIME类型,如果不是图片则阻止本次上传
// 不要相信$_FILES,这是可以伪造的
// 如果 PHP 》= 5.3.0,则使用finfo函数来获取文件类型
// 因为 PHP 》= 5.3.0 放弃了 mime_content_type() 函数
if (version_compare(PHP_VERSION, ’5.3.0’, ’》=’)) {
    $f     = finfo(FILEINFO_MIME_TYPE);
    $ftype = explode(’/’, finfo_file($f, $_FILES));
    finfo_close($f);
    $f     = NULL;
    if ($ftype !== ’image’) {
        @unlink($_FILES);
        die(’文件上传失败!《br /》请重新上传。《br /》《a href="pfabu.html"》返回《/a》’);
    }
    $ftype = NULL;
}
else {
    $ftype = explode(’/’, mime_content_type($_FILES));
    if ($ftype !== ’image’) {
        @unlink($_FILES);
        die(’文件上传失败!《br /》请重新上传。《br /》《a href="pfabu.html"》返回《/a》’);
    }
    $ftype = NULL;
}
$link  = mysql_connect(’localhost’,’root’,’123456’);
mysql_query(’set names \’UTF8\’’);
mysql_select_db(’zhenyu’, $link);
// 为了防止SQL注入,对数据进行转义
$pkind = addslashes($_POST);
$pname = addslashes($_POST);
$pshow = addslashes($_POST);
$filename_upload = $_FILES;
// Base64 编码后的字符只含有 a-z A-Z 0-9 以及+,/,=
$filename   = base64_encode($filename_upload);
// Base64 编码中有一些非文件名可用的字符,把它们替换掉
$filename   = strtr($filename, array(
        ’+’ =》 ’.’,
        ’/’ =》 ’_’,
        ’=’ =》 ’-’
    )
);
// 上传后的文件保存在product文件夹
$file_move  = ’product/’ . $filename;
// 如果文件已存在,则在文件名后加上-和一个随机数
// 当然,这一部分也可以您自己更改,不会影响结果
if(file_exists($file_move)) {
    $rand             = ’-’ . strval(rand(0, 9999));
    $file_move       .= $rand;
    $filename_upload .= $rand;
    // 因为 $rand 被其它变量引用,不能直接注销
    // 所以将其赋值为 NULL,也可达到同样的释放内存的效果
    $rand = NULL;
}
// 判断文件是否是通过 HTTP POST 上传的
// 这可以用来确保恶意用户无法欺骗程序去访问本不该访问的文件,例如/etc/passwd
if (!is_uploaded($_FILES)) {
    @unlink($_FILES);
    die(’文件上传失败!《br /》请重新上传。《br /》《a href="pfabu.html"》返回《/a》’);
}
// 如果文件移动失败,则显示错误信息
// 这样就不会导致数据库存储正常,但文件上传失败的情况了
elseif (!move_uploaded_file($_FILES, $file_move)) {
    @unlink($_FILES);
    die(’文件上传失败!《br /》请重新上传。《br /》《a href="pfabu.html"》返回《/a》’);
}
// 这里将重命名后的文件名与原文件名储存在同一个字段中,用竖线(|)隔开
// 读取时只需要用 explode() 分开就可以了
if($mysql = mysql_query("INSERT INTO product(pkind,pname,ppicture,pshow) VALUES(’{$pkind}’,’{$pname}’,’{$file_move}|{$_FILES}’,’{$pshow}’)")) {
       // 显示文件上传信息
       echo ’Upload: ’, $filename_upload, ’《br /》’;    
       echo ’Size: ’, strval($_FILES / 1024.0), ’ KB《br /》’;
       echo ’Stored in: ’, $file_move, ’《br /》’;
       echo ’《a href="pfabu.html"》返回《/a》’;
       echo ’《script》alert("success");《/script》’;
}
// 如果存入数据库时失败
// 则显示错误信息
else {
    @unlink($_FILES);
    die(’文件上传失败!《br /》请重新上传。《br /》《a href="pfabu.html"》返回《/a》’);
}

这样就可以了。

由于没有测试,代码难免会出现一些错误,请随意指出,谢谢!

另外,您还应该考虑到不同用户上传同一个文件名的文件的情况,最好是为每个用户单独分配一个文件夹。

而且,当一个文件夹下的文件过多(》300)时,会导致读写速度变慢,这一点要注意。

解决:

当一个用户的文件夹下文件有300个时,用户再上传文件,就将新的文件保存在另一个文件夹中(如:用户名加上这个用户已有的文件夹数量)。

如果还有后续问题,可以联系我的邮箱:

blutrex@gmail.com

谢谢!

PHP explode为什么失败

你的$_FILES这个文件肯定打开失败了,禅慎启原因诸如文件域孝塌名字用错啦、form表单的enctype没有设置成"multipart/form-data"啦等等。

关于PHP fgets和explode

经我测试确实有错!
我把下面的函数改了一下你看看,你写的有源败一点错误!当函数中遇到return时.此函数就跳出不再执行了!相当于你写了个exit;所以你如果文本中有两个以上的用户名,第二雹租颤个用型腔户名永远检测不到.
改过后测试可用
function checkPasswd($passwd,$user){
$flag=false;
if(!$fh = fopen("passwd.txt", "r")) return false;
while(!feof($fh)){
$line = trim(fgets($fh));
//your code goes below this line
$x = explode(":",$line);
if($user == $x)
{
$flag=true;
break;
}
else
{
$flag=false;
}
}
fclose($fh);
return $flag;
}

关于本次php explode() bug和php 图片上传有个小BUG,求大神解答以下是我的一些代码的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

php explode() bug(php 图片上传有个小BUG,求大神解答以下是我的一些代码)

本文编辑:admin

更多文章:


coherent词根词缀(英语单词词根专题:co com con)

coherent词根词缀(英语单词词根专题:co com con)

今天给各位分享英语单词词根专题:co com con的知识,其中也会对英语单词词根专题:co com con进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录英语单词词根专题:co com con那些永远记不住的

2025年12月7日 07:15

编程一般用什么电脑(学习编程用什么配置的笔记本电脑)

编程一般用什么电脑(学习编程用什么配置的笔记本电脑)

各位老铁们好,相信很多人对编程一般用什么电脑都不是特别的了解,因此呢,今天就来为大家分享下关于编程一般用什么电脑以及学习编程用什么配置的笔记本电脑的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录学习编程用什么配置

2025年6月5日 01:30

浮点型变量float(C语言中float是什么意思)

浮点型变量float(C语言中float是什么意思)

“浮点型变量float”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看浮点型变量float(C语言中float是什么意思)!本文目录C语言中float是什么意思float数据类型浮点型变量可以输出到小数点后两位吗什么是浮点型

2025年11月10日 16:00

java多线程有并行吗(java线程可以在运行在多个cpu核上吗)

java多线程有并行吗(java线程可以在运行在多个cpu核上吗)

各位老铁们好,相信很多人对java多线程有并行吗都不是特别的了解,因此呢,今天就来为大家分享下关于java多线程有并行吗以及java线程可以在运行在多个cpu核上吗的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录

2026年4月10日 03:45

guava英语什么意思(番石榴的英文名称是什么)

guava英语什么意思(番石榴的英文名称是什么)

大家好,如果您还对guava英语什么意思不太了解,没有关系,今天就由本站为大家分享guava英语什么意思的知识,包括番石榴的英文名称是什么的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录番石榴的英文名称是什么关于瓜

2026年8月25日 02:30

protected与private的区别(VC++中的public,private,protected的区别,说得通俗点)

protected与private的区别(VC++中的public,private,protected的区别,说得通俗点)

本篇文章给大家谈谈protected与private的区别,以及VC++中的public,private,protected的区别,说得通俗点对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录VC++中的public,priva

2026年8月25日 22:45

随手记账软件下载(个人生活记账软件哪个好)

随手记账软件下载(个人生活记账软件哪个好)

其实随手记账软件下载的问题并不复杂,但是又很多的朋友都不太了解个人生活记账软件哪个好,因此呢,今天小编就来为大家分享随手记账软件下载的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录个人生活记账软件哪个好随手记手机

2026年5月6日 21:15

declaration是什么意思英语(declaration和statement有什么区别)

declaration是什么意思英语(declaration和statement有什么区别)

本篇文章给大家谈谈declaration是什么意思英语,以及declaration和statement有什么区别对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了

2025年10月8日 14:00

matlab将x值代入方程求y值(matlab已知直线和x值,如何求y值)

matlab将x值代入方程求y值(matlab已知直线和x值,如何求y值)

本篇文章给大家谈谈matlab将x值代入方程求y值,以及matlab已知直线和x值,如何求y值对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目

2026年6月28日 23:15

the executive是什么意思(executives和leaders的区别)

the executive是什么意思(executives和leaders的区别)

这篇文章给大家聊聊关于the executive是什么意思,以及executives和leaders的区别对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录executives和leaders的区别executive什么意思这是

2026年2月3日 06:15

站长工具箱源码(如何进入站长工具箱)

站长工具箱源码(如何进入站长工具箱)

各位老铁们好,相信很多人对站长工具箱源码都不是特别的了解,因此呢,今天就来为大家分享下关于站长工具箱源码以及如何进入站长工具箱的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录如何进入站长工具箱寻求一个最新的站长工

2025年9月16日 02:00

商城网站建设多少钱(做一个网上商城网站要多少钱)

商城网站建设多少钱(做一个网上商城网站要多少钱)

大家好,今天小编来为大家解答以下的问题,关于商城网站建设多少钱,做一个网上商城网站要多少钱这个很多人还不知道,现在让我们一起来看看吧!本文目录做一个网上商城网站要多少钱建一个大型商城网站要多少钱建一个电子商务网站多少钱电商网站的建设需要多少

2025年5月30日 19:00

c语言编写100行代码推荐(c语言,100行的程序)

c语言编写100行代码推荐(c语言,100行的程序)

大家好,今天小编来为大家解答以下的问题,关于c语言编写100行代码推荐,c语言,100行的程序这个很多人还不知道,现在让我们一起来看看吧!本文目录c语言,100行的程序一个C语言程序,题目自己定,要求写100行,还要一个word分析,我是大

2026年5月27日 11:30

php图片显示不出来(图片前面有img.phpurl=导致图片不显示)

php图片显示不出来(图片前面有img.phpurl=导致图片不显示)

这篇文章给大家聊聊关于php图片显示不出来,以及图片前面有img.phpurl=导致图片不显示对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录图片前面有img.phpurl=导致图片不显示php抓取网页. 图片显示不出来PHP

2025年11月24日 16:15

最近在线直播免费观看回放漫画网页(51漫画官方在线阅读页面免费漫画入口页面)

最近在线直播免费观看回放漫画网页(51漫画官方在线阅读页面免费漫画入口页面)

大家好,关于最近在线直播免费观看回放漫画网页很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于51漫画官方在线阅读页面免费漫画入口页面的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,

2025年10月19日 06:45

subplot括号里的数字(EXCEL里面SUBTOTAL(9,O5:O138)括号里面的“9”代表什么)

subplot括号里的数字(EXCEL里面SUBTOTAL(9,O5:O138)括号里面的“9”代表什么)

“subplot括号里的数字”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看subplot括号里的数字(EXCEL里面SUBTOTAL(9,O5:O138)括号里面的“9”代表什么)!本文目录EXCEL里面SUBTOTAL(

2025年11月16日 23:45

持续集成系统搭建(iOS持续集成(Jenkins+xcode插件))

持续集成系统搭建(iOS持续集成(Jenkins+xcode插件))

“持续集成系统搭建”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看持续集成系统搭建(iOS持续集成(Jenkins+xcode插件))!本文目录iOS持续集成(Jenkins+xcode插件)手把手搭建jenkins + d

2025年6月23日 16:45

java毕业论文参考文献(做毕业设计,求java类近几年的参考文献)

java毕业论文参考文献(做毕业设计,求java类近几年的参考文献)

大家好,今天小编来为大家解答以下的问题,关于java毕业论文参考文献,做毕业设计,求java类近几年的参考文献这个很多人还不知道,现在让我们一起来看看吧!本文目录做毕业设计,求java类近几年的参考文献急求JAVA web管理系统毕业设计近

2025年12月9日 19:30

jsp文件用什么打开手机(安卓手机如何打开.jsp文件)

jsp文件用什么打开手机(安卓手机如何打开.jsp文件)

大家好,如果您还对jsp文件用什么打开手机不太了解,没有关系,今天就由本站为大家分享jsp文件用什么打开手机的知识,包括安卓手机如何打开.jsp文件的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录安卓手机如何打开.

2025年8月30日 02:15

matlab下载与安装教程(matlab2018b破解版安装教程)

matlab下载与安装教程(matlab2018b破解版安装教程)

今天给各位分享matlab2018b破解版安装教程的知识,其中也会对matlab2018b破解版安装教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录matlab2018b破解版安装教程Matlab安装步骤m

2025年9月26日 23:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索