膃・20腴・•・<‚ゃƒ・‚≪ƒƒ・—・㏍ƒ若ƒ‰・・‡・†

・・・
POST ・<‚純ƒƒ・‰・・‚ˆ・‹・≪ƒƒ・—・㏍ƒ若ƒ‰
・・ƒ・ƒ若ƒ<ƒƒ・祉ƒ若‚吾・・・・/A >
・ャ‚Š・„・™・„・純・—腥卣/A >
茲‡・違ƒ•・<‚ゃƒ・・‚≪ƒƒ・—・㏍ƒ若ƒ‰
PUT ・<‚純ƒƒ・‰・・‚泣ƒ・若ƒˆ

POST ・<‚純ƒƒ・‰・・‚ˆ・‹・≪ƒƒ・—・㏍ƒ若ƒ‰

PHP ・・€・・・・FC-1867絲上・・–・・‚・‚嗶Netscape Navigator 3 篁ヤ・・ Microsoft・‹・‰・・ƒ‘・ƒ・・’・‚・・ŸMicrosoft Internet Explorer 3・障Ÿ・・ ・‘・ƒ・・<—・・・Œ篁ラ™・・‰ˆ・’・・帥障™)・‹・‰・•・<‚ゃƒ・・‚≪ƒƒ・—・㏍ƒ若ƒ‰・’ ・—・‘・‹・“・・Œ・с・障™・‚ ・“・・・・純с・€・†・㏍‚鴻ƒˆ・・ƒ・ゃƒŠ・・ƒ•・<‚ゃƒ・・検・鴻・‚≪ƒƒ・—・㏍ƒ若ƒ‰・Œ・・ƒ純с™・‚ PHP・・・荐惹・罕‹・Š・ˆ・潟ƒ•・<‚ゃƒ・“篏œ・∽•違‚’・・„・・€・≪ƒƒ・—・㏍ƒ若ƒ‰・’荐怨・™・‹ ・・ƒ若‚吟ƒ若・‚≪ƒƒ・—・㏍ƒ若ƒ‰緇Œ・・・・ƒ•・<‚ゃƒ・‚’篏睡”・—・・・・†・•篏œ・’絎Œ・・・ˆ九勝・™・‹ ・“・・Œ・・ƒ純с™・‚

・≫・・™・‹荐㊤・・・–≪™・‹羈・・: php.ini・・ file_uploads, upload_max_filesize, upload_tmp_dir post_max_size ・‡・cƒ・‚・ƒ†・cƒ– ・‚・‚・т・・•・„・‚

PHP・・etscape Composer・Š・ˆ・劚3C・・maya・・ƒ・‚ゃ‚≪ƒ潟ƒˆ・・‚ˆ・Š篏睡”・•・Œ・‹ PUT・<‚純ƒƒ・‰・・‚ˆ・‹・•・<‚ゃƒ・‚≪ƒƒ・—・㏍ƒ若ƒ‰・‚・泣ƒ・若ƒˆ・—・・„・‹・“・・・絵・ ・—・・・・•・„・‚荅括完・・€PUT・<‚純ƒƒ・‰・・‚泣ƒ・若ƒˆ ・’・‚・т・・•・„・‚

・•・<‚ゃƒ・‚≪ƒƒ・—・㏍ƒ若ƒ‰・脂≪・€罨<・‚ˆ・†・・‰劫ˆャ・ƒ•・・ƒ若ƒ・’篏œ・・™・‹・“・・ ・・‚ˆ・Š・篏œ・・™・‹・“・・Œ・с・障™・‚

箴‹ 20-1. ・•・<‚ゃƒ・‚≪ƒƒ・—・㏍ƒ若ƒ‰・・・ƒ•・・ƒ若ƒ

<form enctype="multipart/form-data" action="_URL_" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
_URL_ ・・HP・•・<‚ゃƒ・‚’・‡・™綽…荀・Œ・‚・Š・障™・‚hidden ・•・cƒ若ƒ・ƒ‰ MAX_FILE_SIZE・・€input ・•・cƒ若ƒ・ƒ‰ file ・・‰・・舟・綽…荀・Œ・‚・Š・障™・‚ ・“・・€ゃ・€・–緇—・・ƒ純・ƒ•・<‚ゃƒ・・œ€紊с‚泣‚ゃ‚冴‚’荀絎š・—・障™・‚・“・・€ゃ・ƒ・・ ・ˆ・違фŒ‡絎š・—・障™・‚

茘・‘Š

MAX_FILE_SIZE・・ƒ–・・‚・‚吟吾・‹у‘Š・・・・障›・“・‚・“・・œ€紊у€ゃ‚’ ・冴—・œ・・・・亜・˜・・“・・・・т拭・若—・・・„・‘・障›・“・‚・—・‹・—・ PHP・眼・œ€紊с‚泣‚ゃ‚冴・┃絎š・’罨冴・“・・・с・障›・“・‚ ・—・‹・—・・Œ・с‚‚MAX_FILE_SIZE・’・‡絎š・™・鴻・с™・‚・・œ・・‚‰・ 綏・ぇ・・ƒ•・<‚ゃƒ・‚’荵∫€・—・ˆ・†・・—・・€絎Ÿ・・・Œ・Œ紊с・™・・・ 荵∫€・с・・„・・„・†・“・・‚’・傑™‚・“緇…・cŸ・‚・・хŸャ‚‰・•・Œ・‹・・‚’ ・蚊’・‹・‹・‰・с™・‚

・•・<‚ゃƒ・・‚≪ƒƒ・—・㏍ƒ若ƒ‰・・š›・—・・・臂・•・Œ・‹紊‰・違・HP・・ƒ・若‚吾ƒсƒ喝Š・・ 荐㊤・・・‚ˆ・Š・違・‚Š・障™・‚ ・・ƒ若ƒˆ・違ƒ㏍ƒ若ƒ・・A HREF="reserved.variables.html#reserved.variables.files" >$_FILES ・・€PHP 4.1.0篁ラ™・・・・・—・障™・‚ $HTTP_POST_FILES・・€PHP 4.0.0篁ラ™・・・・・—・障™・‚ ・“・Œ・‰・・…・—・・・€・・・‚≪ƒƒ・—・㏍ƒ若ƒ‰・•・Œ・Ÿ・•・<‚ゃƒ・・ƒ…・宴Œ ・・障‚Œ・・„・障™・‚$_FILES・・戎・・Œ・・エ・•・Œ・・„・障™・‚ PHP・‡・cƒ・‚・ƒ†・cƒ– register_globals ・Œ on・・翫ˆ・・≫・・™・‹紊‰・医・‚絖˜・・—・障™・‚ register_globals ・・€PHP 4.2.0 篁ラ™・off・Œ・‡・•・・ƒ・ƒˆ・・・c・„・障™・‚

$_FILES ・・†…絎鴻・・・・‚ˆ・†・・・‚Š・障™・‚・“・“・с・€筝Š・・・・・‚鴻‚・ƒ・ƒ—・ˆ・т戎・・Œ・Ÿ・ˆ・†・・€ ・≪ƒƒ・—・㏍ƒ若ƒ‰・•・<‚ゃƒ・・・・・—・・SPAN CLASS="emphasis" >userfile・’篏睡”・™・‹ ・“・・‚’篁・・・—・・„・‹・“・・・絵・・—・・・・•・„・‚ 絎Ÿ・›・・・・‚“・・・・・™・‹・“・・‚‚・с・障™・‚

$_FILES['userfile']['name']

・・ƒ・‚ゃ‚≪ƒ潟ƒˆ・ž・激ƒ潟・…ƒ・・ƒ•・<‚ゃƒ・・‚

$_FILES['userfile']['type']

・•・<‚ゃƒ・・IME・‹・‚・Ÿ・・—・・–・・‚・‚吟Œ・“・・ƒ…・宴‚’・箴›・™・‹・翫ˆ・‚ 箴‹・ˆ・違€"image/gif"・・‚ˆ・†・・・‚Š・障™・‚

$_FILES['userfile']['size']

・≪ƒƒ・—・㏍ƒ若ƒ‰・•・Œ・Ÿ・•・<‚ゃƒ・・ƒ・ゃƒˆ・˜篏・・‚泣‚ゃ‚冴€‚

$_FILES['userfile']['tmp_name']

・≪ƒƒ・—・㏍ƒ若ƒ‰・•・Œ・Ÿ・•・<‚ゃƒ・Œ・泣ƒ若ƒ・寂・・т・絖˜・•・Œ・・„・‹・†・潟ƒ・・ ・・ƒ•・<‚ゃƒ・・・・‚

$_FILES['userfile']['error']

・“・・ƒ•・<‚ゃƒ・‚≪ƒƒ・—・㏍ƒ若ƒ‰・・–≪™・‹ ・・ƒ・ƒ若‚潟ƒ若ƒ‰ ['error']・・€PHP 4.2.0・ц申・・•・Œ・障—・Ÿ・‚

羈・„: 4.1.0・ˆ・Š・・・ƒ・若‚吾ƒсƒ潟・HP・с・€・“・・・・違・ $HTTP_POST_FILES・с€$_FILES・・ ・ˆ・†・・ ・・ƒ若ƒˆ・違ƒ㏍ƒ若ƒ・・/A > 紊‰・違с・‚・Š・障›・“・с—・Ÿ・‚PHP 3・・€ $HTTP_POST_FILES・’・泣ƒ・若ƒˆ・—・・„・障›・“・‚

php.ini・・register_globals・Œ on・・・c・„・‹・翫ˆ・菴遵Š・・・・違Œ・・”・・ƒ純・・‚Š・障™・‚ 箴‹・ˆ・違€$userfile_name・・€ $_FILES['userfile']['name']・・Œ・˜・с€ $userfile_type・・€ $_FILES['userfile']['type']・・Œ・˜・・„・cŸ・ˆ・†・・・‚Š・障™・‚ PHP 4.2.0篁ラ™・・€register_globals・・ƒ‡・•・・ƒ・ƒˆ・・ff・с‚・‹・“・・‚’ ・™・筝‹・•・„・‚・“・・ƒ‡・cƒ・‚・ƒ†・cƒ–・・・絖˜・—・・„・“・・Œ・・エ・•・Œ・障™・‚

php.ini ・・upload_tmp_dir・‡・cƒ・‚・ƒ†・cƒ–・・ 篁–・・贋‰€・’・‡絎š・—・・„・・Š・・•・<‚ゃƒ・・‚泣ƒ若ƒ・若・Š・‘・‹・‡・•・・ƒ・ƒˆ・・ƒ† ・潟ƒ・・ƒ・ƒ‡・cƒ・‚・ƒˆ・・・・絖˜・•・Œ・障™・‚・泣ƒ若ƒ・若・ƒ‡・•・・ƒ・ƒˆ・‡・cƒ・‚・ƒˆ ・・・€PHP ・’絎Ÿ茵Œ・™・‹・医・・・Š・„・・’医・紊‰・・TMPDIR・’荐・ 絎š・™・‹・“・・・‚ˆ・Š紊‰・眼™・‹・“・・Œ・с・障™・‚・—・‹・—・PHP ・鴻‚・ƒ・ƒ—・ˆ・・†… ・・‹・‰putenv() ・∽•違・‚ˆ・Š荐㊤・・—・・‚‚筝Š・‹・・„・・・ ・›・“・‚・“・・’医・紊‰・違・€・≪ƒƒ・—・㏍ƒ若ƒ‰・•・Œ・Ÿ・•・<‚ゃƒ・・・・・‡・†・’茵Œ・†・› ・・‚‚・Œ罕˜・・戎・・™・‹・“・・Œ・・ƒ純с™・‚

箴‹ 20-2. ・•・<‚ゃƒ・・‚≪ƒƒ・—・㏍ƒ若ƒ‰・’罎œ荐若™・‹

篁ヤ・・・・・・€4.0.2 ・ˆ・Š緇Œ・・ƒ・若‚吾ƒсƒ潟・PHP 4 ・・с™・‚ is_uploaded_file() ・Š・ˆ・刵A HREF="function.move-uploaded-file.html" >move_uploaded_file()・・–∽•違・‚・ƒ潟ƒˆ・・‚’ ・‚・т・・•・„・‚篁ヤ・・・ƒ•・・ƒ若ƒ・‹・‰・•・<‚ゃƒ・‚’・≪ƒƒ・—・㏍ƒ若ƒ‰・™・‹・—・㏍‚祉‚鴻・・・с™・‚

<?php
// 4.1.0・ˆ・Š・・・HP・с・FILES・・撮・・Š・âHTTP_POST_FILES・’篏睡”・™・‹綽…荀
// ・Œ・‚・Š・障™・‚4.0.3・ˆ・Š・・・HP・с・ove_uploaded_file・・撮・・Š・ùopy() ・・br />// is_uploaded_file()・’篏睡”・—・・・・•・„

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir. $_FILES['userfile']['name'];

print
"<pre>";
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    print
"File is valid, and was successfully uploaded. ";
    print
"Here's some more debugging info:\n";
    
print_r($_FILES);
} else {
    print
"・•・<‚ゃƒ・‚≪ƒƒ・—・㏍ƒ若ƒ‰・紙’ƒ・’・•・Œ・Ÿ・・ƒ醇€сŒ・‚・Š・障™・‚・‡・・ƒ・育–∫€fƒ…・俈\n";
    
print_r($_FILES);
}

?>

・≪ƒƒ・—・㏍ƒ若ƒ‰・•・Œ・Ÿ・•・<‚ゃƒ・‚’・—・‘・–・‹ PHP ・鴻‚・ƒ・ƒ—・ˆ・・€・≪ƒƒ・—・㏍ƒ・ ・‰・•・Œ・Ÿ・•・<‚ゃƒ・‚’・・„・・・・’・™・‹・鴻・‹・’羆冴‚・‹・Ÿ・・・・荀・・ƒ㏍‚吾ƒƒ・・ ・’・・・・茖…・™・‹綽…荀・Œ・‚・Š・障™・‚箴‹・ˆ・違€紊‰・・ $_FILES['userfile']['size']・’篏睡”・—・・€絨・•・™・・ ・Ÿ・Š・紊с・™・・Ÿ・Š・™・‹・•・<‚ゃƒ・‚’・・・‚‹・“・・Œ・с・障™・‚・‡絎š・—・Ÿ・‹篁・ 紊–・・ƒ•・<‚ゃƒ・‚’・・・・・‚‹・Ÿ・・・・・・ $_FILES['userfile']['type']・’・・„・‹・“・・Œ・с・・ ・™・‚ PHP 4.2.0篁ラ™・ $_FILES['userfile']['error'] ・’篏睡”・™・‹・“・・Œ・с・ ・・ƒ・ƒ若‚潟ƒ若ƒ‰ ・・Ÿ冴ャ・・㏍‚吾ƒƒ・・‚’罕‹・・™・‹・“・・Œ・с・障™・‚ 篏•・‰・‹・・–号・・・‚ˆ・Š・・†・潟ƒ・・ƒ・ƒ‡・cƒ・‚・ƒˆ・・‹・‰・•・<‚ゃƒ・‚’・Š・ゃ— ・Ÿ・Š・篁–・・贋‰€・・Щ・•・—・Ÿ・Š・™・‹綽…荀・Œ・‚・Š・障™・‚

腱糸‹•・障Ÿ・・・・・・・眼Œ茵Œ・・Œ・・„・・„・翫ˆ・・・‚・‚・‚鴻ƒˆ・・・篋†・‚・・・・ ・•・<‚ゃƒ・・ƒ†・潟ƒ・・ƒ・ƒ‡・cƒ・‚・ƒˆ・・‹・‰・Š・ゃ•・Œ・障™・‚