PHP | is_uploaded_file 函数

Lasted 2021-01-18 21:34:06

is_uploaded_file 函数判断文件是否是通过 HTTP POST 上传的。

如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 true。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

函数定义

is_uploaded_file ( string $filename ) : bool
// 源文件位于:ext/standard/basic_functions.c
# 函数定义

PHP_FUNCTION(is_uploaded_file)
{
  ...
  if (!SG(rfc1867_uploaded_files)) {
    RETURN_FALSE;
  }

  if (zend_hash_str_exists(SG(rfc1867_uploaded_files), path, path_len)) {
    RETURN_TRUE;
  } else {
    RETURN_FALSE;
  }
}

参数

  • checkfilename - 文件名。

返回值

  • checkbool - 检测成功返回 true,否则返回 false。

示例1: - 使用 is_uploaded_file() 判断是否上传的文件。

<?php
/**
 * PHP is_uploaded_file() 判断是否上传的文件。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 判断是否上传的文件
if(is_uploaded_file($_FILES['file']['tmp_name'])){
  echo 'Uploaded';
}
Uploaded