gpt4 book ai didi

php - 文件上传的严格标准错误

转载 作者:行者123 更新时间:2023-12-02 01:35:27 25 4
gpt4 key购买 nike

我写了一个PHP脚本来上传文件。但是当我按下提交按钮时,它会给出错误消息:

Strict Standards: Only variables should be passed by reference in H:\xampp\htdocs\phpTest\upload_file.php on line 4.

第 4 行是 $extension = end(explode(".", $_FILES["file"]["name"]));

上传文件.php:

<?php

$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{

$target_Path = "images/";
$target_Path = $target_Path.basename( $_FILES['file']['name'] );
move_uploaded_file( $_FILES['file']['tmp_name'], $target_Path );


echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
echo $target_Path;
}
}
else
{
echo "Invalid file";
}
?>

最佳答案

您正在尝试对仅存在于该函数调用上下文中的数组执行end()。一旦该行代码完成,该数组将不复存在。试试这个:

$bits = explode(".", $_FILES["file"]["name"])
$extension = end($bits);

话虽这么说,这是提取文件扩展名的一种糟糕方法,而且也非常不安全。 $_FILES 数组中提供的文件名是远程客户端给出的文件名。伪造该文件名非常简单,允许用户上传“nastyvirus.exe”,但发送“cutekittens.jpg”作为文件名。

永远不要信任用户端数据,尤其是文件上传数据。通过 fileinfo 使用服务器端 MIME 类型确定

关于php - 文件上传的严格标准错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com