【问题标题】:PHP Replace function not working with Internet explorer 8PHP 替换功能不适用于 Internet Explorer 8
【发布时间】:2011-12-09 12:54:08
【问题描述】:

我的网站有一点问题,它是一个免费的分类广告网站,人们可以将照片上传到他们的广告等中。

问题:我的上传脚本在我所有的电脑上都能完美运行,但是当我签入我的 Error_Log 时,它显示很多人无法上传他们的图片(它确实上传到临时文件夹,但是当我使用重命名功能时将它复制到广告文件夹中它不起作用并说:没有这样的文件等等等等。所以我找到了一个有上传问题的人,并意识到 Internet Explorer 是问题所在。

我的版本是:

Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0)

这似乎工作正常,他正在使用的版本是:

Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.0;WOW64;Trident/4.0;SLCC1;.NET CLR 2.0.50727;Media Center PC 5.0;.NET CLR 3.5.30729;.NET CLR 3。

这不起作用。

为什么我的函数在 Internet Explorer 9.0、Firefox 和 Chrome 中有效,但在 IE 8 中无效?

编辑 (这是将文件从用户的临时文件夹传输到广告文件夹的代码:)

mkdir("./users/".$this->Username."/".$Id, 0755);
mkdir("./users/".$this->Username."/".$Id.'/thumbnail', 0755);
$Files_List = explode("@",$_POST['Files_Names']);
for($i = 0;$i < count($Files_List);++$i)
{
    if($Files_List[$i] != "")
    {
        rename('./users/'.$this->Username.'/temp/'.$Files_List[$i], './users/'.
        $this->Username.'/'.$Id.'/'.$Files_List[$i]);
        rename('./users/'.$this->Username.'/temp/thumbnail/'.$Files_List[$i], './users/'.
        $this->Username.'/'.$Id.'/thumbnail/'.$Files_List[$i]);
    }
}
$dir = './users/'.$this->Username.'/temp/';
foreach(glob($dir.'*.*') as $v)
    unlink($v);
$dir = './users/'.$this->Username.'/temp/thumbnail/';
foreach(glob($dir.'*.*') as $v)
    unlink($v);

echo '<script>window.location = "./message.php?Message=Publier";</script>';
exit(0);


Error message:


[17-Oct-2011 12:31:17] PHP Warning: rename>(./users/francois/temp/thumbnail/2590cd9217.jpg ,./users/francois/186/thumbnail/2590cd9217.jpg ) [href='function.rename'>function.rename]: No such file or directory>in /home/kesimard/public_html/Montreal/publier.php on line 70

Line 70 = rename('./users/'.$this->Username.'/temp/thumbnail/'.$Files_List[$i], './users/'. $this->Username.'/'.$Id.'/thumbnail/'.$Files_List[$i]);

【问题讨论】:

  • 该文件确实上传到临时文件夹中,因为在发布广告之前我可以在页面上看到缩略图。所以问题是重命名功能
  • 您为什么要删除其他相同的问题? (here, for those who can see it
  • 这不是 IE 或 Firefox 问题。问题在于服务器上的目录结构/权限
  • 不确定这是否只是复制/粘贴错误,但错误消息中的文件名后面有一个空格。您是否尝试修剪文件名? rtrim($Files_List[$i])
  • 使用 rename() 处理上传的文件是错误的方法。你想要的是move_uploaded_file(),它有额外的健全性/安全性检查来解决PHP上传文件处理的一些安全问题。

标签: php html replace


【解决方案1】:

听起来更像是文件系统问题而不是浏览器问题。在rename() 函数之前,尝试添加:

if (!file_exists('./users/' . $this->Username . '/' . $Id)) {
  mkdir('./users/' . $this->Username . '/' . $Id);
}
if (!file_exists('./users/' . $this->Username . '/' . $Id . '/thumbnail')) {
  mkdir('./users/' . $this->Username . '/' . $Id . '/thumbnail');
}

【讨论】:

  • 我确实调用了 mkdir 函数(请看上面的帖子,我编辑了它,抱歉忘了放那行)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多