【发布时间】:2013-10-15 17:34:42
【问题描述】:
我使用此 PHP 代码将音频 (mp3) 文件从 Flash AS3 上传到服务器。它在从 html 表单上传文件时有效,但在从 AS3 端上传文件时无效。当我删除 *$_FILES['Filedata']['type']=='audio/mpeg'* 条件时,它也适用于 AS3。不知道是什么问题。
<?php
if($_FILES['Filedata']['size'] < 500000 && $_FILES['Filedata']['type']=='audio/mpeg'){
$uploads_dir = './upload/';
if( $_FILES['Filedata']['error'] == 0 ){
if( move_uploaded_file( $_FILES['Filedata']['tmp_name'],
$uploads_dir.$_FILES['Filedata']['name'] ) ){
echo 'ok';
exit();
}
}
echo 'error';
exit();
}else
exit();
?>
【问题讨论】:
-
在
if语句上方添加echo $_FILES['Filedata']['type'];和echo $_FILES['Filedata']['size'];并查看它的输出。 -
第二个
echo声明呢? -
61380 。问题是文件类型。为什么从html上传文件时它可以正常工作,但从AS3上传时它不起作用。
-
你应该去掉这个检查,它是不可信的,因为输入
$_FILES数组是由客户端发送的。攻击者可以轻松发送audio/mpeg类型的恶意php 文件并接管您的服务器。您必须在服务器端检查上传的文件,并确保它们以不可执行的形式存储。 -
@dev-null-dweller。感谢您的帮助和建议。
标签: php actionscript-3 flash