ホームページ > バックエンド開発 > PHPチュートリアル > PHPファイルアップロードの具体的な考え方と実装_PHPチュートリアル

PHPファイルアップロードの具体的な考え方と実装_PHPチュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-13 17:20:01
オリジナル
1051 人が閲覧しました

最近、私は PHP ファイル処理に非常に興味を持っているので、多くの Web サイトでファイル処理に関する多くの記事を読みました。しかし、多くの国内 Web サイトにある PHP ファイル処理に関する知識のほとんどは、私のものとあなたのものからコピーされたものです。 baidu.com や google.com で検索して見つかったものは重複しています。最近、海外のウェブサイトに記事を掲載しましたが、とても良い感じだったので、皆さんにも読んでいただくことをお勧めします。

まず、ファイルアップロードの操作プロセスと使用する知識ポイントを説明する必要があります:

ファイルをアップロードするには、HTML のフォームの type="file" タイプとその enctype 属性を使用する必要があります。これは私たち全員が使わなければならないものです。もちろん、PHP 関数ライブラリのうち、FILE 関数ライブラリ、文字列型関数ライブラリ、ディレクトリ関数ライブラリ、$_FILES[] を使用する必要があります。

おそらく、どのサイトでもファイルのアップロードに関して多くの制限がある場合があります。これらの制限には、ファイルの種類、ファイルのサイズ、拡張子、アップロード ディレクトリの存在、ディレクトリの書き込み可能性、可読性、名前の変更などが含まれます。アップロードされたファイルの説明と、ファイルをキャッシュから必要なディレクトリにコピーする方法について説明します。

もちろん、エラーの前処理を無視することはできません。さらに詳しく説明すると、ファイル操作のイベント ログの記録を有効にすることもできます。

以下では、プログラムを通じてこれらの関数を実装します。

------------------------------------- ----------- -------------------------------------- ----------- ------


1 つ目は、ファイル サイズ、ファイル拡張子の種類、MIMI タイプ、スイッチ変数を削除するかどうかを含むプリセット変数値です

$ MAX_SIZE = 2000000;
$FILE_MIMES = array(image/jpeg,image/jpg,image/gif , ,image/png,application/msword);

$FILE_EXTS = array(.zip,.jpg,.png,.gif );

$DELETABLE = true;

次のステップは、ブラウザアクセス変数とディレクトリアクセス変数を設定することです:

$site_name = $_SERVER[HTTP_HOST];
$url_d ir = "http://".$_SERVER [HTTP_HOST].dirname($_SERVER[PHP_SELF ]);
$url_this = "http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF];

$upload_dir = "files/";
$upload_url = $url_dir."/files/";
$message ="";


アップロード ディレクトリを作成し、それに応じて権限を変更します:

if (!is_dir("files")) {
if (!mkdir($upload_dir) )
die (「upload_files ディレクトリが存在しないため、作成に失敗しました」);
if (!chmod($upload_dir,0755))
die (「アクセス許可を 755 に変更できませんでした。」);
}



ユーザー要求の処理:

if ($_REQUEST[del] && $DELETABLE) {
$resource = fopen("log.txt","a");
fwrite($resource,date("Ymd h:i:s")."削除 - $_SERVER[REMOTE_ADDR]"." ");
fclose($resource);

if (strpos($_REQUEST[del],"/.")>0); /") === false) //ハッキングの可能性
else if (substr ($_REQUEST[del],0,6)=="files/") {
unlink($_REQUEST[del]);
print " <script>window.location.href=$url_this?message=正常に削除されました< /script>";<br> }<br>}<br>else if ($_FILES[userfile]) {<br> $resource = fopen("log.txt", "a");<br> fwrite($resource,date("Ymd h:i) :s")."UPLOAD - $_SERVER[REMOTE_ADDR]"<br> .$_FILES[userfile][name]." "<br> .$_FILES[userfile][type]." ");<br> fclose($resource);<br><br>$file_type = $_FILES[userfile][type]; <br> $file_name = $_FILES[userfile][name];<br> $file_ext = strto lower(substr($file_name,strrpos( $file_name,".")));<br><br> //ファイル サイズ チェック: <br><br><br> if ( $_FILES[userfile][size] > $MAX_SIZE) <br> $message = "ファイル サイズが 2MB を超えています。" ; <br> //ファイル タイプ/拡張子チェック<br> else if (!in_array($file_type, $file_type, $file_type, $file_type)アップロードされます。";<br> else<br> $message = do_upload($upload_dir, $upload_url);<br> <br> print "<script&gt ;window.location.href=$url_this?message=$message</script>";
}
else if (!$_FILES[userfile]);
else
$message = "無効なファイルが指定されました。";

Listアップロードしたファイル:

$handle=opendir($upload_dir);
$filelist = " ";
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($) file)) {
$filelist .= "" .$file."";
if ($DELETABLE)
$filelist .= " x";
$filelist .= " :i", filemtime($upload_dir.$file))
."
";
$filelist .="
";
}
}

function do_upload($upload_dir, $upload_url) {

$temp_name = $_FILES[userfile][tmp_name];
$file_name = $_FILES[userfile][name];
$file_name = str_replace("","",$file_name);
$file_name = str_replace("","",$file_name);
$file_path = $upload_dir.$file_name;

//ファイル名チェック
if ( $file_name =="") {
$message = "指定されたファイル名が無効です";
return $message;
}

$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path) ,0777))
$message = "権限を 777 に変更できませんでした。";
else
$message = ($result)?"$file_name は正常にアップロードされました。" :
「ファイルのアップロードに問題があります。」;
return $message;
}

?>






ファイルをアップロード










開発者
< ;a style="text-decoration:none" href="http://tech.citypost.ca">CityPost.ca



www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/532625.html技術記事 PHP ファイルの処理に関しては、しばらくの間関心があったため、最近多くのサイトで多くの文書を処理する文章が見られましたが、国内の多くのサイトで PHP ファイルの処理に関して知られています...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート