画像投稿がない場合、特定画像を表示させたい

このQ&Aのポイント
  • 画像投稿がない場合、特定の画像を表示させたいと考えています。
  • 画像投稿型BBSを改造しており、画像を投稿すると、画像名をlinux時間に変換し、特定の名前で保管しています。
  • 画像投稿が前提とされているため、画像投稿がなかった場合、画像名を指定した表示になってしまい、見た目が良くありません。したがって、デフォルトで特定の画像を表示し、新規投稿時に画像がある場合はその画像を表示するように改造したいと考えています。
回答を見る
  • ベストアンサー

画像投稿がない場合、特定画像を表示させたい

画像投稿型BBSを改造しています。 画像を投稿すると、画像名をlinux時間に変換し、1296913178.jpgとして保管します。 一方、CSVファイルにも1296913178.jpgという名を記載します。 【困りごと】 画像投稿が前提とされているため、画像投稿がなかった場合CSVファイルへの記載 が空欄となるため<img src="./data/> となってしまい見た目がよくありません。 【改造したいこと。】 デフォルトで j.jpg という画像を置き、新規投稿時に、画像名がある場合は <img src="./data/j.jpg1296913178.jpg> となり、 画像がない時は、<img src="./data/j.jpg> となるように改造したいと考えています。 【今までに出来たこと】 下記のソースの一番下をj.jpg$attachに変更することにより、CSVファイルへの書き込み については j.jpg1296913178.jpg というものを作ることができました。 【出来ないこと(真の困りごと】 画像名をlinux時間に変換し、1296913178.jpgとして保管していますが、 これをj.jpg1296913178.jpgとして保管するようにすることができません。下記をテスト しましたが駄目でした。 if (!$original || !$filename) $filename = j.jpg$now.".".$ext; if (!$original || !$filename) $filename = j.jpg+$now.".".$ext; .htaccessでも結構です。対応アドバイスをお願いします。 【ソース】 // ファイル名を抽出 if (eregi("name=\"?([^\"\n]+)\"?",$m_head, $filereg)) { $filename = ereg_replace("[\t\r\n]", "", $filereg[1]); while (eregi("(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)",$filename,$regs)) { $filename = $regs[1].base64_decode($regs[2]).$regs[3]; $filename = convert($filename); } $ext = substr($filename,strrpos($filename,".")+1,strlen($filename)-strrpos($filename,".")); } // 添付データをデコードして保存 if (eregi("\nContent-Transfer-Encoding:.*base64", $m_head) && eregi($subtype, $sub)) { $tmp = base64_decode($m_body); if (!$ext) $ext = $sub; if (!$original || !$filename) $filename = j.jpg+$now.".".$ext; if (strlen($tmp) < $maxbyte && !eregi($viri, $filename) && $write) { $fp = fopen($tmpdir.$filename, "w"); fputs($fp, $tmp); fclose($fp); $attach = $filename; } else { $write = false; } } } if ($imgonly && $attach=="") $write = false; list($old,$otime,$osubj,$ofrom,,) = explode("<>", $lines[0]); // 連続投稿 if ($from == $ofrom && $now - $otime < $wtime) $write = false; $id = $old + 1; $subject = trim if($subject=="") $subject = $nosubject; $line = "$id<>$now<>$subject<>$from<>$text<>j.jpg$attach<>\n

  • CGI
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ssk38
  • ベストアンサー率44% (22/49)
回答No.1

perl?perlかな? if (!$original || !$filename) $filename = "j.jpg".$now.".".$ext;

tajix14
質問者

お礼

有難うございます。 おかげさまで、やりたいサイトを作ることができました。 心より御礼申し上げます。

関連するQ&A

  • ファイル一覧表示で、ディレクトリを非表示

    ディレクトリ内の画像ファイルの一覧を表示させたいです。 検索したところ、以下の物を発見しました。 #!/usr/bin/perl $filename=$ENV{QUERY_STRING}; $lookdir = "../../image/event/"; $mime{html}="text/html"; $mime{htm}="text/html"; $mime{txt}="text/plain"; $mime{jpg}="image/jpeg"; if($filename eq '') { print "Content-type: text/html\n\n"; print "<html><body>\n"; opendir(DIR,"../../image/event/"); while($dir=readdir(DIR)) { print "<a href=\"$lookdir$dir\">$dir</a><br>\n"; } closedir(DIR); print "</body></html>\n"; } else { $ext=$filename; $ext=~s/.*\.//g; if($mime{$ext} ne '') { print "Content-type: $mime{$ext}\n\n"; open(R,$filename); print <R>; close(R); } } これで、ほぼOKなのですが、"."や".."が表示されてしまってます。 これを消したいのですが、良い方法は無いでしょうか?

    • ベストアンサー
    • Perl
  • 元のサイズで添付画像を表示するには

    質問・回答に添付された画像を投稿時の解像度で表示するにはどのように操作すればいいのでしょうか。7/28のリニューアルからやり方が分からなくなってしまいました。リニューアル後の投稿分も~_original.jpgにあるのは変わらないようなのですが。 例: 質問ページに表示される画像 https://multimedia.okwave.jp/image/answers/11/112345/112345_L.jpg 画像をクリックしてイメージを拡大、で表示される画像 https://multimedia.okwave.jp/image/answers/11/112345/112345.jpg 投稿時の解像度(たぶん) https://multimedia.okwave.jp/image/answers/11/112345/112345_original.jpg

  • PHP 画像の表示

    プログラミング初心者です。 PHPでブラウザに画像を表示したいのですが映らなくて 以下のソースコードは間違っているでしょうか? <?php $fileName = "img/test.jpg"; //ファイル名 if (file_exists($fileName)) { header('Content-type: image/jpeg'); header('Content-Length: '.filesize("http://localhost:8080/test.jpg")); //あった方が良い readfile("http://localhost:8080/test.jpg"); //ファイルを読み込んで標準出力に書き出し exit; } ?>

    • ベストアンサー
    • PHP
  • getimagesizeで画像がなかった場合の処理

    getimagesizeを使って画像のサイズ一覧を取得するプログラムを作っています。 画像ファイル名は規則正しい数字の番号を振ってあります。 規則に従いループさせているのですが、画像がなかった場合、 うまく動作してくれません。 画像の大きさがある程度あるので横幅の10pxで判断しています。 $filename= "xxx.jpg"; list($width,$height)=getimagesize("$filename"); if($width > 10){ //あった場合の処理 }else{ //なかった場合の処理 } getimagesizeを使って画像がなかった場合、すり抜ける方法はありますでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでimageファイルをアップロードする際、

    PHPでimageファイルをアップロードする際に、デジカメのサイズでは大きすぎるので小さなサイズでアップロードしたいと思っています。 <?php $error = ""; if (isset($_POST["submit"])) { $fileName = $_FILES['image']['name']; if (!empty($fileName)) { $ext = substr($fileName, -3); if ($ext != 'jpg' && $ext != 'gif' && $ext != 'png') { $error['image'] = 'type'; } } if (empty($error)) { // 画像をアップロードする $image = date('His') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], 'image/' . $image); $_POST['image'] = $image; $error = "アップロード成功!"; } else { $error = "アップロード失敗!"; } } ?> 上記のコードだとそのままのファイルサイズでアップされるのですが、サイズを(400px、300px)の様に小さくしてアップする方法はないでしょうか? 現状ではフォトショップなどで一度画像を小さくしてアップしています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 画像の複数登録についての質問です。

    画像を複数登録したいんですが500エラーが出てしまいます。 htmlから <input type="file" size="50" name="img1_1"> <input type="file" size="50" name="img1_2"> として、cgiにsubmitします。 cgi側でファイル名をデータ番号に変えて保存します。 例) aaaaa.jpg ↓ 1234.jpg ---cgi--- if ($param{'img1_1->name'} ne ""){ if ($param{'img1_1->name'} =~ /(\.gif|\.jpg|\.jpeg|\.pig|\.bmp)$/ ) { $extension = ($param{'img1_1->name'} =~ m/\.([^\.][0-9a-zA-Z]*)$/); $extension = $1; $filename1_1 = $upload_dir.$param{'data_num2'}."_1".$extension; if (open(OUT, ">$filename1_1")) { binmode(OUT); print OUT $param{'img1_1'}; close(OUT); } } } if ($param{'img1_2->name'} ne ""){ if ($param{'img1_2->name'} =~ /(\.gif|\.jpg|\.jpeg|\.pig|\.bmp)$/ ) { $extension = ($param{'img1_2->name'} =~ m/\.([^\.][0-9a-zA-Z]*)$/); $extension = $1; $filename1_2 = $upload_dir.$param{'data_num2'}."_2".$extension; if (open(OUT, ">$filename1_2")) { binmode(OUT); print OUT $param{'img1_2'}; close(OUT); } } } ------------ <input type="file" size="50" name="img1_1"> か <input type="file" size="50" name="img1_2"> のどちらか一方に画像ファイルを指定すれば大丈夫なんですが 両方画像を入れてしますと500エラーになってしまいます。 どのように修正すればいいんでしょうか?

    • ベストアンサー
    • Perl
  • WordPressの質問(q10124692)の続

    https://wandbox.org/permlink/xgiSHSJPTNlBrtmO $mime_type から $ext を決めて、テンポラリファイルを $data に読み込めばPDFと動画にも適応できるようです。間違えていたらアドバイスお願い致します。 以前dell_okさんにバイナリーデータがどうしても必要だとお伝えしていたのですが、finfo_open(finfoクラス)はmime_typeを返すのに、拡張子では判断せずバイナリを読み込んでチェックするのでバイナリーのチェックは要らないようですね、申し訳ありません。 名前とメッセージはエラーチェックやtokenがあるためdell_okさんから教えて頂いたコードを使うように考えています。 アップロードファイルについてはおそらくこちらのコードを使うか参考に組み替える必要があると考えております。 //mime_typeを返すのに、拡張子では判断せずバイナリを読み込んでチェック //ファイルの種類を表示するために宣言 $finfo = new finfo(FILEINFO_MIME_TYPE); $mime_type = $finfo->file($path); if (FILE_EXT_PNG == $ext && 'image/png' == $mime_type) { } elseif (in_array($ext, [FILE_EXT_JPEG, '.jpg']) && 'image/jpeg' == $mime_type) { $ext = FILE_EXT_JPEG; } else { // バイナリー文字列確認 $contents = file_get_contents($path); if (FILE_EXT_PDF == $ext && 'application/pdf' == $mime_type) { } elseif (FILE_EXT_MP4 == $ext && 'video/mp4' == $mime_type) { } else { $ext = null; } } return $ext; if (isset($ext)) { $_SESSION['attach_name'][$key] = md5($data) . $ext; $_SESSION['attach_data'][$key] = $data; $_SESSION['attach_mime'][$key] = $mime_type; } else $err[] = '画像形式は png, jpg のみです。'; } } }

    • ベストアンサー
    • PHP
  • PHPでDBとディレクトリへの画像データ登録方法

    初めて質問させていただきますPHP初心者です。 画像投稿画面を作り、DB(imageフィールド)と任意のディレクトリ(member_picture)へ画像を保存するページを考えてます。 下記が作ったソースになるのですが、 id、message、titleフィールドにはちゃんと投稿内容が入るのですが、 どうしてもimageだけがフィールドにもディレクトリにも入りません。 アドバイスいただけますでしょうか。 <?php session_start(); if(!empty($_POST)) { //画像エラーの確認 $fileName = $_FILES['image']['name']; if(!empty($fileName)) { $ext = substr($fileName, -3); if($ext !='jpg') { $error['image'] = 'type'; } } if(empty($error)) { //画像をアップロードする $image = date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], '../member_picture/' . $image); $_SESSION['join'] = $_POST; $_SESSION['join']['image'] = $image; header('Location: content_upload.php'); } } //記録する if (!empty($_POST)) { if ($_POST['title'] !='') { $sql = sprintf('INSERT INTO post SET member_id=%d, message="%s", title="%s", image="%s", created=NOW()', mysql_real_escape_string($member['id']), mysql_real_escape_string($_POST['message']), mysql_real_escape_string($_POST['title']), mysql_real_escape_string($_POST['image']) ); mysql_query($sql) or die(mysql_error()); header('Location: content_upload.php'); } } ?> <!DOCTYPEうんぬん・・> <html うんぬん・・> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>画像投稿ページ</title> </head> <body><div id="wrap"> <div id="head"><h1>画像投稿ページ</h1></div> <form action="" method="post" enctype="multipart/form-data"> <dl><dt>投稿画面</dt> <dd>画像<br> <input type="file" name="image" /> <?php if($error['image'] == 'type'): ?> <p class="error">* 画像は「.jpg」の画像を指定してください</p> <?php endif; ?> <?php if(!empty($error)): ?> <p class="error">* 恐れ入りますが、画像を改めて指定してください</p> <?php endif; ?> </dd> </dl> <div> <p><input type="submit" value="投稿する" /></p> </div> </form> </div> </div> </body> </html> 以上になります。 どこを注意したらいいのかもわからず困ってます! よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Excelの画像挿入について質問です。

    Excelの画像挿入について質問です。 Sub ボタン1_Click() Dim 画像ファイル As String 画像ファイル=Application.Get Open Filename(filefilter="JPGファイル,*.JPG~) If画像ファイル="FALSE"Then Exit Sub Active Cell=画像ファイル End Sub としたら、画像ではなく「画像のファイル名」が入ってしまいました。 「画像そのもの」を入れるにはどうすればよいでしょうか。 わかる方いらっしゃいましたらよろしくお願いします。

  • ディレクトリ内画像表示

    いつもお世話になっています。 題の通りディレクトリ内の画像の表示がされず困っています。 下記が例になります。 お分かりの方がいらっしゃいましたら教えていただければ助かります。 鈴木一郎 山田太郎 という方がいた場合、 鈴木一郎の$idがi-suzukiとし、山田太郎の$idがt-yamadaとします。 個人ページのため$_GETで鈴木一郎のページと山田太郎のページが見れるようになっています。 例えば /member/member.php?member=i-suzukiと/member/member.php?member=t-yamada このページ内にその人の写真が一枚だけでてくるようにしています。 画像は/member/photo/i-suzuki/photo.jpgです。(i-suzikiのところは各個人の$idで変わります。) ここでご質問なのですが、 /member/photo/の中に$idがあるかを探し、あればその中のphoto.jpgを表示させ、 なければ/member/photo/photo.jpgを表示させるようにしたいのですが、なかなかできません。 コードは $dirPhoto = opendir('member/photo'); $dirName = opendir('/' .$id); while($dirList = readdir($dirPhoto)) { if(!is_dir($dirList.$dirNmae) && !is_link($dirList.$dirNmae)){ $photo = '/member/photo/photo.jpg'; } else { $photo = '/member/photo/' .$id. '/photo.jpg'; } } closedir($photoDir); としています。 表示させると $idのディレクトリがある人もいればない人もいるのですが、全てのページで/member/photo/photo.jpgが表示されてしまいます。 どなたか教えていただけないでしょうか? また、正しいコードも教えていただけると助かります。

    • ベストアンサー
    • PHP

専門家に質問してみよう