これはパスのファイル拡張子を取得しますか? これは、$end が「jpg」であり、それ以外のものではないことを確認するファイル アップロード スクリプトの一部を形成します。私が以下に持っているものを考えると、それはバイパスできますか?
$temp = strlen($path);
$end = $path[$temp-3] . $path[$temp-2] . $path[$temp-1];
これはパスのファイル拡張子を取得しますか? これは、$end が「jpg」であり、それ以外のものではないことを確認するファイル アップロード スクリプトの一部を形成します。私が以下に持っているものを考えると、それはバイパスできますか?
$temp = strlen($path);
$end = $path[$temp-3] . $path[$temp-2] . $path[$temp-1];
見てください:http://php.net/manual/en/function.pathinfo.php
混合パス情報 (文字列 $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n"; # returns: /www/htdocs/inc
echo $path_parts['basename'], "\n"; # returns: lib.inc.php
echo $path_parts['extension'], "\n"; # returns: php
echo $path_parts['filename'], "\n"; # returns: lib.inc | since PHP 5.2.0
?>
または、次のようにフラグを設定して拡張子のみを取得することもできます。
$extension = pathinfo('/www/htdocs/inc/lib.inc.php', PATHINFO_EXTENSION);
echo $extension; # prints `php` to the screen.
有効な画像がアップロードされたことを確認したい場合は、改ざんされる可能性があるファイルの末尾に依存しないでください。PHP の画像関数を使用して、ファイルが実際に画像であることを確認できます。たとえば、次のようになります。
function is_image($path) {
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
これを試して、
$ext = pathinfo('abc.jpeg' ,PATHINFO_EXTENSION);