PHP:上传图像时看不到$ _FILES的内容

时间:2019-03-10 01:18:36

标签: php

环境是MAMP,PHP版本是7.1.19。 我们假设登录页面上的联系表格不使用框架等。

  • 因为代码很长,所以删除了与问题内容不符的部分

下面,在form.html中选择一个图像,将“提交”推到“确认屏幕”,然后在日志中的$ _FILES中显示图像数据,以将图像上传处理的代码添加到confirm.php中。

但是,即使您尝试使用error_log('confirm-files:'。Print_r($ _FILES,true),'0')在日志文件中显示$ _FILES的内容; Array()我看不到内容。顺便说一下,文件名显示在$ _POST中。

请告诉我们为什么看不到$ _ FILES的内容。

然后,将数据库另存为服务器上的tmp文件而不使用数据库,转换到thank.php之后,我们将添加要注册到客户管理系统的过程。 谢谢。

・联系方式

Label collapseButton = new Label();
collapseButton.textProperty().bind(
    Bindings.when(titledPane.expandedProperty())
        .then("\u25bc").otherwise("\u25b6"));

titledPane.setGraphic(collapseButton);
titledPane.setContentDisplay(ContentDisplay.RIGHT);

・ confirm.php

<form method="post" action="<?=$sfm_script?>" class="form" enctype="multipart/form-data">
  <div class="file">
     <label for="file1">Select files
         <input type="file" id="file1" name="file1" onchange="$('.file_name1').text($(this).val())" class="file_name1"></label><span class="file_name1">

  </div>
 <button type="submit">To confirmation screen</button>
 <input type="hidden" name="mailToNum" id="mailToNum" value="3">
 <input type="hidden" name="autoReply" id="autoReply" value="1"> 
 <input type="hidden" name="mode" id="mode" value="CONFIRM">
<?php if (array_key_exists('pram', $formvalue)):?>
 <input type="hidden" name="pram" id="pram" value="<?=$formvalue['pram']?>">
<?php else:?>
 <input type="hidden" name="pram" id="pram" value="">
<?php endif; ?>
</form>

・ $ _FILES日志

<?php header("Content-type: text/html; charset=utf-8") ?>
<?php

include_once('config.php');

if (!extension_loaded('mbstring')) {
    Err('mbstring');
}
$internalEnc = 'UTF-8';
mb_language('ja');
mb_internal_encoding($internalEnc);

// main
if (!isset($mailTo[0])) {
    Err('mailaddress');
}
$mode = (isset($_POST['mode'])) ? $_POST['mode'] : '';

error_log ('confirm-files:' . print_r($_FILES,true), '0');

switch ($mode) {
case 'SEND': 
    session_cache_limiter('nocache');
    session_start();

//Om

    include_once('thanks.html'); 
    break;

case 'CONFIRM': 
    if ($_SERVER['HTTP_REFERER'] != 'http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] && $refCheck) {
        Err('It can not be used from outside');
    }
    session_cache_limiter('nocache');
    session_start();
    unset($_SESSION['SFM']);

    $error = $email = '';
    foreach ($_POST as $key => $value) {
        if (is_array($value)) {
            $value = implode("\t", $value);
        }
        if (!$ill_slash) {
            $value = (!get_magic_quotes_gpc()) ? addslashes($value) : $value;
        }
        if (!$ill_char) {
            $value = mb_convert_encoding($value, $internalEnc, $baseEnc);
        }
        $value = mb_convert_kana($value, 'KV', $internalEnc);
        $name = preg_replace('/(.+)_i$/', "$1", $key);
        if (preg_match('/_i$/', $key) && $value == '') {
            $_SESSION['SFM'][$name] = '::INPUT ERROR::';
            $error = 1;
        } elseif ($name == 'email' && $value) {
            if (!preg_match("/^[\w\-\.\+]+\@[\w\-\.]+\.([a-z]+)$/", $value)) {
                $_SESSION['SFM']['email'] = '::EMAIL ERROR::';
                $error = $email = 1;
            } else {
                $_SESSION['SFM']['email'] = $email = $value;
            }
        } elseif ($name == 'emailcheck') {
            if ($email != 1 && $email != $value) {
                $_SESSION['SFM']['email'] = '::EMAIL CHECK ERROR::';
                $error = 1;
            }
        } elseif ($maxText && strlen($value) > $maxText) {
            $_SESSION['SFM'][$name] = '::MAXTEXT ERROR::';
            $error = 1;
        } else {
            $_SESSION['SFM'][$name] = $value;
        }
    }
    $_SESSION['SFM']['InputErr'] = $error;
    //$sfm_script = $script_name . ((SID) ? '?'.strip_tags(SID) : '');
    $sfm_script = "thanks.php";
    include_once('confirm.html');
    break;
default:
    session_cache_limiter('private_no_expire');
    session_start();
    unset($_SESSION['SFM']);
    //$sfm_script = $script_name;
    $sfm_script = "confirm.php";
    include_once('form.html');
}
exit;

function FORM_DATA_H($name) {
    $errArray = array(
        '::INPUT ERROR::' => '<span class="req">Required</span>',
        '::EMAIL ERROR::' => 'E-mail address is invalid',
        '::EMAIL CHECK ERROR::' => 'Mail address does not match',
        '::MAXTEXT ERROR::' => 'Too many characters (upper limit ' . number_format($GLOBALS['maxText']) . ')'
    );
    $value = (isset($_SESSION['SFM'][$name])) ? $_SESSION['SFM'][$name] : '';
    $value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value;
    $value = str_replace("\t", "\n", $value); 
    $value = nl2br(htmlspecialchars($value, ENT_QUOTES, 'UTF-8'));
    $value = (preg_match('/::.+::/', $value)) ? '<span class="ERR">' . $errArray[$value] . '</span>' : $value;
    $value = ($value != '') ? $value : '&nbsp;';
    return mb_convert_encoding($value, $GLOBALS['baseEnc'], $GLOBALS['internalEnc']);
}

?>

・我以后要添加的上传过程

[10-Mar-2019 09:15:55 Asia/Tokyo] files:Array
(
)

1 个答案:

答案 0 :(得分:0)

您的问题已得到很好的记录,如果我不愿意查找实例,则应将您的问题作为此处已被多次询问和回答的多次重复来关闭。您尚未设置表单编码,因此默认为URL编码。

应为enctype="multipart/form-data"