2017-04-17 55 views
1

嗨,我想上传文件,并设置限制1 MB。 当文件大小大于1 MB文件不移动文件夹中,但它在MySQL数据库中更新。PHP文件大小上传条件不起作用

<?php 
$fileName = $_FILES['myfile']['name']; 
$fileNameTmp = $_FILES['myfile']['tmp_name']; 
$fileSize = $_FILES["myfile"]["size"]; 
$fileExtension = explode('.',$fileName); 
$fileExtension = strtolower(end($fileExtension)); 
$maxsize = 1000000; 
$fileUniqueName = uniqid().'.'.$fileExtension; 
$store = 'uploads/'.$fileUniqueName; 

if($fileSize>$maxsize) 
{ 
echo 'size exceed'; 
} 
else 
{ 

    move_uploaded_file($fileNameTmp,$store); 
    $query = mysql_query("update users set image = '$fileUniqueName' where id = '$_SESSION[id]'"); 
} 
?> 

预期的结果:如果大小超过1 MB的文件名不应该在更新数据库。

+3

停止使用'mysql_ *'函数。自v5.5(2013年6月)开始,它们已被弃用,并从v7.0(2015年12月)开始删除。请使用[** mysqli _ ***](https://secure.php.net/manual/en/book.mysqli.php)或[** PDO **](https://secure.php.net /manual/en/book.pdo.php)与[**准备语句**](https://secure.php.net/manual/en/pdo.prepare.php)和[**绑定参数** ](https://secure.php.net/manual/en/pdostatement.bindparam.php)。 –

+2

您的代码可能容易受到[** SQL注入攻击**](https://en.wikipedia.org/wiki/SQL_injection)的影响。你应该使用[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https://secure.php.net/ manual/en/pdo.prepared-statements.php)准备带有绑定参数的语句,如[**这篇文章**]所述(https://stackoverflow.com/questions/60174/how-can-i-prevent-sql步喷射功能于PHP)。 –

+1

'var_dump($ maxsize,$ fileSize);'并检查这些值是否符合您的期望。 – Qirel

回答

1

我猜这个文件没有上传,你得到$fileSize等于0,绕过你的if条件。
将其更改为if($fileSize > $maxsize || $fileSize == 0)以捕获错误。

+0

是文件大小为0 –

+0

这就是为什么你的条件被绕过。将其更改为 'if($ fileSize> $ maxsize || $ fileSize == 0)' – gaganshera

+0

感谢好友。解决。 –