0

ここで同様の投稿を見てきましたが、解決策を見つけることができませんでした。Strict Standards: Only variables should be passed by referenceエラーがstrtolower($file['name']))),行に表示されます。解決策を探して何時間も試しましたが、修正方法がわかりませんでした。私が間違っているところを強調してもらえますか?

注:以下の@Kolinkの提案に従って編集されたコード:

<?php
require_once 'upload_config.php';

$mydirectory = myUploadDir();

$uploaded_file_counter = 0;
$UploadLimit = $_POST['counter'];

for ($i = 0; $i <= $UploadLimit; $i++) {
    $file_tag = 'filename' . $i;
    $filename = $_FILES[$file_tag]['name'];

    if ($filename != null) {
        $rand = time();
        $str = "$rand$filename";

        // set folder name in here.
        $filedir = myUploadDir();

        //change the string format.
        $string = $filedir . $str;

        $patterns[0] = "/ /";
        $patterns[1] = "/ /";
        $patterns[1] = "/ /";

        $replacements[1] = "_";

        $dirname = strtolower(preg_replace($patterns, $replacements, $string));
        //end of changing string format

        //checking the permitted file types
        if ($check_file_extentions) {
            $allowedExtensions = allowedfiles();

            foreach ($_FILES as $file) {
                if ($file['tmp_name'] > '') {
                    /*if (!in_array(end(explode(".", strtolower($file['name']))), $allowedExtensions)) */
                    if (!in_array(array_reverse(explode(".", strtolower($file['name'])))[0], $allowedExtensions)) {
                        $fileUploadPermission = 0;
                    } else {
                        $fileUploadPermission = 1;
                    }
                }
            }
        } else {
            $fileUploadPermission = 1;
        }

        //end of checking the permitted file types
        if ($fileUploadPermission) {
            if (move_uploaded_file($_FILES[$file_tag]['tmp_name'], $dirname)) {
                echo "<p>"; ?>
                <div><?php echo "<img style='height:100px;width:200px' src='$dirname'>"; ?></div> <?php
                echo "</p>";

                $uploaded_file_counter += 1;
            }
        }
    }
}

if ($uploaded_file_counter == 0) {
    echo "<br /> <b style='font-weight:bold;color:red'>Opss! Please select an image file<b>";
} else {
    echo "<br /> <b>You request " . $i . " image files to upload and " . $uploaded_file_counter . " files uploaded sucessfully</b>";
}
?>
4

1 に答える 1

2

end内部ポインターを移動して元の配列を変更するため、参照によって引数を取ります。

PHP 5.4 を使用しているように見えるので、代わりにこれを実行して最後のものを取得できます。

if( !in_array(array_reverse(explode(".",strtolower($file['name'])))[0],$allowedExtensions))

とはいえ、読みやすくするために、いくつかのステップでそれを行う方がおそらく良いでしょう:

$parts = explode(".",strtolower($file['name']));
$extension = $parts[count($parts)-1];
if( !in_array($extension,$allowedExtensions)) {
于 2013-08-25T15:35:19.747 に答える