• 締切済み

php フォームで画像アップ

phpにてフォームで画像をUPできる機能を持たせたいのですが、うまくできあがりません。 ファイルもUPされませんがその前の、 $_FILES ***; が機能していないようなのです。 (たとえば$img1をprintしても空となる) http://masago.kir.jp/php20030814.php http://masago.kir.jp/phpsc.php?s=php20030814s.php を参考に $img1 = $_FILES ['aaa']; $img1tmp = $_FILES ['aaa']['tmp_name']; $img1name = $_FILES ['aaa']['name']; $img1size = $_FILES ['aaa']['size']; $img1type = $_FILES ['aaa']['type']; とし、 <input type="file" name="aaa" ENCTYPE="multipart/form-data"> としています。 またレンタルサーバをもちいているのですが、 htaccessの中身は、 <IfModule mod_php4.c> php_value register_globals 1 ・ ・(省略) ・ php_value file_uploads 1 php_value upload_tmp_dir /○○/ </IfModule> としています。 よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

質問とは直接関係なくてすいませんが.htaccessの内容がおかしいので今後のために。 .htaccessで設定を変更するにはphp_valueとphp_flagがあります。 0か1(onかoffでも可)で設定するものはphp_flagで設定します。 php_value register_globals 1は間違いでphp_flag register_globals 1としなくてはいけません。 それとfile_uploadsとupload_tmp_dirはphp.iniかApacheのhttpd.confでしか設定できない項目なので.htaccessに記述しても変更できません。 .htaccessでの変更はphpinfo()を表示させて必要な項目のみを行うようにした方がいいと思いますよ。

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

ENCTYPE="multipart/form-data" これはformタグにつけるものだったかと・・

cluewm
質問者

補足

そうでしたね・・・ ありがとうございます

関連するQ&A

  • 画像アップ

    php初心者です 簡単な画像アップロードを付けたいと思っています それでアップだけはなんとかできたのですが、もう少し機能を付けたいです 付けたい機能は 1.拡張子を調べて限定したい。gif、jpg、pngの三つを許可したい 2.画像の横と縦の幅が指定した幅より大きければ、指定した幅まで縦横比維持で縮小 100*100 3.もう一つのディレクトリに、小さいサムネイルを作りたい。大きさは32*32です 4.拡張子はそのままにして画像の名前をリネームしたいです よろしくお願いします(_ _ <?php $img_name = $_FILES["upfile"]["name"]; $img_size = $_FILES["upfile"]["size"]; $img_type = $_FILES["upfile"]["type"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 50000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type"; if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0604); print $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { print "ファイルをアップロードできません。"; } } else { print "ファイルが選択されていません。"; } }else{ $size_error = "サイズが大きすぎます"; } } ?> <html> <head> <title>画像アップロード</title> </head> <body> <form name="form" action="" method="POST" ENCTYPE="MULTIPART/FORM-DATA"> <input name="upfile" type="file" size="40"> <input name="up" type="submit" value="アップロード"><hr> </form> <?php print($size_error); ?><?php print($img_message); ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHPで画像をアップロード&保存したいのですが..

    初心者です. ブラウザから画像をアップロードし保存できるようにしたく, サンプルを基に以下のようなソースを書いてみたのですが, 画像の保存ができません. もし直さなければいけないところがわかる人がいらっしゃいましたら ぜひ教えてください. よろしくお願いいたします. <?php $img_name = $_FILES["img_path"]["name"]; $img_size = $_FILES["img_path"]["size"]; $img_type = $_FILES["img_path"]["type"]; $img_tmp = $_FILES["img_path"]["tmp_name"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 30000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>"; }else{ $size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。"; } } $FilePath = "./img/".src.".".GetExt($img_name); move_uploaded_file($img_temp,$FilePath); //GetExt function GetExt($FilePath){ $f = strrev($FilePath); $ext = substr($f, 0, strpos($f,".")); return strrev($ext); } ?>

    • 締切済み
    • PHP
  • PHPとMySQLを使い、画像データベースを構築しています。

    PHPとMySQLを使い、画像データベースを構築しています。 以下までできたのですが、SQL syntaxエラーが発生してしまい、UP出来ませんでした。 画像を指定しない場合は、成功します。 <form method="post" action="addinfo.php" enctype="multipart/form-data"> Place Name(*)<br> <input type="text" size="50" maxlength="100" name="place_name"><br> Address(*)<br> <input type="text" size="50" maxlength="100" name="address"><br> Pictures<br> <input type="file" size="50" name="picture1"><br> <input type="file" size="50" name="picture2"><br> <input type="file" size="50" name="picture3"><br> <input type="reset" value="Reset" name ="reset"> <input type="submit" value="Submit" name="submit"> </form> <?php if ($_POST["submit"] != "") { // Connecting DB require 'lib.php'; //img1 if ($_FILES["picture1"]["tmp_name"] != NULL) { $fp = fopen($_FILES["picture1"]["tmp_name"], "rb"); if (!$fp) { print("Cannot open the uploaded file <BR>\n"); exit; } $img1 = fread($fp, filesize($_FILES["picture1"]["tmp_name"])); fclose($fp); } ----------------------------------------------------------- img2, img3についての処理もimg1と同じなので、文字数の関係で省略します ----------------------------------------------------------- // Insert Query $sql = "INSERT INTO places (place_name, address, `picture1`, `picture2`, `picture3`) VALUES('{$_POST["place_name"]}','{$_POST["address"]}', '{$img1}', '{$img2}', '{$img3}') "; $result = mysql_query($sql); if (!$result) { print("QUERRY ERROR<BR>\n"); print(mysql_errno() . ": " . mysql_error() . "<BR>\n"); exit; } echo "UPLOAD SUCCESSFULL "; ご教授お願いいたします

    • ベストアンサー
    • MySQL
  • PHP 画像アップロード 重複防止

    画像、ファイルをアップロードできるフォームを作成しています。 ---------------------- フォーム <FORM NAME="objform" action="yes.php" METHOD="POST" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000"> <INPUT TYPE="file" NAME="img1" SIZE="40"><BR> <INPUT TYPE="submit" NAME="submit" VALUE="アップロードする!!"> </FORM> ーーーーーーーーーーーーーーーーーーーー yes.phpの中身 $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename); -------------------------- これでphoto のフォルダに格納されるようにしているのですが、 もし、同じファイル名でアップされた場合上書きされてしまいます。 IDをつけるか、もしくはその他の方法でファイル名が重複されないような設定にするにはどうすればよいでしょうか。 現在PHP勉強中です。 初歩的なことかもしれませんが、 よくわからないのでアドバイスを頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 画像のupができません。

    お世話になっております。 PHPでCMSを組んでいるのですが、画像のUPロードがうまくいきません。 DBにはファイル名が登録されるのですが、画像ファイルが指定フォルダに入りません。 詳しい方、ご教授願います。 抜粋部分です。 Functionファイル内 function image($image, $folder, $options=array()){ if($image){ $option=getOptions($options); $img='<img src="'.$folder.$image.'"'.$option.'/>'; return $img; }else{ return "&nbsp;"; } } function uploadFile($data, $confirm=false, $options=array()){ if($confirm){ $file=hidden($data["name"],$data["value"]); }else{ $option=getOptions($options); $file='<input type="file" name="'.$data["name"].'"'.$option.'/>'; } return $file; } ソースコード部分 foreach ($imageList as $key => $title) { if(!empty($_FILES[$key]["tmp_name"])){ if($err == UPLOAD_ERR_OK){ if(isAllowedExtension($_FILES[$key]["name"],$allowedExtensions)) { if(isset($id)){ if($oldData[$key]!=$_FILES[$key]["name"] && file_exists(DIR_IMAGES.$_FILES[$key]["name"])){ $error=$_FILES[$key]["name"]."ファイルが存在します"; }else{ $new_img[$key]=$_FILES[$key]["name"]; move_uploaded_file($_FILES[$key]["tmp_name"],DIR_IMAGES."tmp.".$_FILES[$key]["name"]); } }else{ if(file_exists(DIR_IMAGES.$_FILES[$key]["name"])){ $error=$_FILES[$key]["name"]."ファイルが存在します"; }else{ $new_img[$key]=$_FILES[$key]["name"]; move_uploaded_file($_FILES[$key]["tmp_name"],DIR_IMAGES."tmp.".$_FILES[$key]["name"]); } } }else{ $error=$title.":画像ファイルを選択して下さい"; } }else{ $error=$title.":アップロードエラー。<br />"; } } } 登録部分 <td>&nbsp;<?php if(!$mode){?> <?php $file_data=array('name'=>"image_search", 'value'=>$new_img["image_search"]); echo uploadFile($file_data,$mode,array("size"=>'37'));?> <?php } //確認画面で新しい画像かどうか判断 if($new_img["image_search"]){ $image_search=$new_img["image_search"]; $rest = substr($image_search, 0, 4); if($rest=="tmp."){ $image_search=substr($image_search, 4, strlen($image_search)); } $image_file="tmp.".$image_search; echo hidden("new_img[image_search]", $image_search); }elseif($data['image_search']){ $image_search=$data["image_search"]; $image_file=$data["image_search"]; } echo hidden("data[image_search]", $image_search); if($image_search){ if(!$mode){?> <div class='clear'></div> <div class='title1 left'></div><?php }?> <?php } if($image_search){ if(!$mode){?> <div class='clear'></div> <div class='title1 left'></div><?php }?> <div class='img_name left'><?php echo $image_search;?></div> <div class='clear'></div> <div class='title1 left'></div> <div class='left'><?php echo image($image_file,DIR_IMAGES, array('border'=>"0",'style'=>"width: 100px"))?></div> <?php }?> </td> よろしくお願い致します。

    • 締切済み
    • PHP
  • PHP 画像添付フォームに関しての質問です。

    PHP 画像添付フォームに関しての質問です。 http://okwave.jp/qa/q4891926.html 以前質問させて頂いた内容でフォームを作成しています。 申込html→finish.php の場合はうまくいきます。 申込html→確認→finish.php にするとうまくいきません。 可能であれば、確認画面でアップした画像を表示できればと思っております。 何かアドバイスして頂けると助かります。 申込html <form method="post" action="kakunin.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000"> <input type="hidden" name="upfile" value="%%upfile%%"> <input name="upfile" id="upfile" type="file" size="50" value="%%upfile%%"> 確認html <form method="post" action="finish.php"> <td class="border5px-fff">%%upfile%%<input type="hidden" name="upfile" value=""></td> finish.php $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 //ファイルを指定 $id_file = "id.dat"; //ファイルを開く $fp = fopen($id_file,"r"); $id = fgets($fp); fclose($fp); //ファイルの数字に1を足します。 $id = $id + 1; $fp = fopen($id_file,"w"); //保存します。 fputs($fp, $id); fclose($fp); //名前の前に番号を追記します。 //$filename = 'ID_'.$id.'_'.$filename; //番号のみ $filename = $id.'.jpg'; move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename);

    • ベストアンサー
    • PHP
  • PHP 登録フォームの確認画面で画像を表示したい

    こんにちは。いつもお世話になっております。 PHPを勉強し始めたばかりのものです。 登録フォームから送った画像を、確認ページでプレビュー表示させたいです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12141865207 の質問に辿り着きましたが、実装できませんでした。 3点質問があります。 1、sessionを使わず、$_FILESで実装することが可能なのでしょうか? 2、$_FILESから画像を表示させようとして失敗しています。一時保存場所に画像があると思うのですが、 $photo = $_FILES['UseImg']['tmp_name'] <img src ="<?php echo $photo; ?>"> これでは画像表示ができませんでした。$_FILESに関して根本的な考え違いをしているのだと思うのですが、これはどうしてなのでしょうか? 3、img要素にPHPを挿入することは可能なのでしょうか? 可能だとしたら、何故、以下の方法で動かないのでしょうか。 file.php <form enctype="multipart/form-data" action = "file2.php" method = "post" > <input type="file" name="UseImg"> <input type="submit" name="FILE送信" value="FILE送信"> </form> file2.php <?php session_start(); $_SESSION['UseImg']['type'] = exif_imagetype($_FILES['UseImg']['tmp_name']); $_SESSION['UseImg']['data'] = file_get_contents($_FILES['UseImg']['tmp_name']); echo '<img src="UseImg.php" />'; UseImg.php <?php session_start(); if (!isset($_SESSION['UseImg'])) { die('abort'); } switch ($_SESSION['UseImg']['type']) { case IMAGETYPE_JPEG: header('content-type: image/jpeg'); break case IMAGETYPE_PNG: header('content-type: image/png'); break case IMAGETYPE_GIF: header('content-type: image/gif'); break } echo $_SESSION['UseImg']['data'] 持っているPHPの本では確認画面を通さずに画像をアップロードしており、プレビューに関しては見当たりません。 いつも質問ばかりで申し訳ありませんが、この度も、宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpで格納した画像を表示されるには?

    超の付く初心者で毎日苦闘しています。ほんとにすみませんが何方か教えてください。 「(1)写真を登録して、(2)それを表示させる」だけの事を練習でやっているんですが、どう書けばいいんでしょうか。 (1)【画像登録のフォーム】/test_info.html ----------------------------------------------------------- <form action="test_put.php" method="post" enctype="multipart/form-data"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="500000"> //←500kbまでという意味なんですよね? <input type="file" name="uploaded" size="50" /><br /> <input type="submit" value="アップロード" /> </form> ------------------------------------------------------------ (2)【画像を一旦受けて、指定するフォルダに移動させるPHP】/test_put.php ------------------------------------------------------------ <?php move_uploaded_file($_FILES['uploaded']['tmp_name'],'./images/'.$_FILES['uploaded']['name']); print('アップロードに成功しました!<br />'); print $_FILES['uploaded']['name']; ←この部分を文字ではなく画像で! ?> ------------------------------------------------------------- 上記は殆ど本・Webのパクリですが、矢印部分に「画像を出しなさい!」という命令を書けばいいんだと思いますが、それがわかりません。なんと書けばいいんでしょうか? 【状況】 ●ロリポップのサーバーに実際にアップして試しています。 ●/test_info.html 画面から適当な写真データを送信すると/test_put.php 画面に遷移して、「アップロードに成功しました!」改行して「****.jpg」と表示されます。  ●ロリポのftp管理画面上で確認すると、アップした写真データは正常にアップされています。 mysqlに行くまでのスタートにも立てない状態です。ここまで何ヶ月も掛かってこんなもんです(^_^;) どなたかよろしくお願いいたします!

    • ベストアンサー
    • PHP
  • PHP 画像アップローダー作成について

    PHPの勉強をしている者です。 ローカル環境(XAMPP1.7.3)にて、画像アップローダーを動かそうと試みています。 が、一時ファイル名が取得できず、失敗に終わります。初歩的なミスかもしれません。 -------------------- 【upload.html】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>画像ファイルアップロード</title> </head> <body> <h1>画像ファイルアップロード</h1> <p>アップロードする画像ファイル(JPEG形式)を選択して「アップロード」ボタンを押してください。</p> <form action="upload_image.php" method="POST" enctype="multipart/form-data"> <table> <tr> <th>画像ファイル選択</th> <td><input type="file" name="filename" size="50"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="アップロード"> </td> </tr> </table> </form> </body> </html> -------------------- 【upload_image.php】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>画像ファイルアップロード</title> </head> <body> <h1>アップロードファイル情報</h1> <p> <?php // ファイル名の取り出し $file_name = $_FILES['filename']['name']; // ファイル(MIME)タイプの取り出し $file_type = $_FILES['filename']['type']; // 一時ファイル名の取り出し $temp_name = $_FILES['filename']['temp_name']; // エラーコードの取り出し $upload_error = $_FILES["filename"]["error"]; // 保存先のディレクトリ $dir = 'uploads/'; // 保存先のファイル名 $upload_name = $dir . $file_name; // JPEG形式のファイルをアップロードする if (($file_type == "image/jpeg") || ($file_type == 'image/pjpeg')) { // アップロード(移動) $result = move_uploaded_file($temp_name,$upload_name); if ($result) { // アップロード成功時 echo '■アップロード成功'; } else { // アップロード失敗時 echo '■アップロード失敗'; } } else { // JPEG形式以外のファイルはアップロードしない echo '■JPEG形式の画像をアップロードしてください。'; } ?> </p> <table> <tr> <td colspan="2"><img src="<?php echo $upload_name; ?>" alt=""></td> </tr> <tr> <th>エラーコード</th> <td><?php echo $upload_error; ?></td> </tr> <tr> <th>画像ファイル名</th> <td><?php echo $file_name; ?></td> </tr> <tr> <th>MIMEタイプ</th> <td><?php echo $file_type; ?></td> </tr> <tr> <th>一時ファイル名</th> <td><?php echo $temp_name; ?></td> </tr> </table> </body> </html> -------------------- 【php.iniの一部】 ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir upload_tmp_dir = "C:\xampp\tmp" ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 128M -------------------- このように作っております。 結果は エラーコード→0 画像ファイル名→正常取得 MIMEタイプ→正常取得 一時ファイル名→空 どのような原因が考えられるか、教えて頂ければ幸いです。

    • ベストアンサー
    • PHP
  • PHP初心者です。

    xamppを使用して勉強してます。 htmlでファイルをアップロードするソースを作り、phpで <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> <?php $file=$_FILES['my_img']; $filePath="./user_img/".$file['name']; move_uploaded_file($file['tmp_name'],$filePath); というコードを書いて実行したところ、 Warning: move_uploaded_file(./user_img/021.jpg): failed to open stream: No such file or directory in  このphpファイルの名前 on line 〇〇行目 Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php6207.tmp' to './user_img/021.jpg' in このphpファイルの名前 on line 〇〇行目 とエラーになってしまいました。 なぜでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう