[PHP-users 16382]Re: [PHP-users16334]他のディレクトリの変更

Masahito NAGATA masahito @ arp-corp.co.jp
2003年 7月 2日 (水) 18:11:33 JST


 永田です、こんにちは。

> ということは header は指示をするだけということですか?

 そういうことになりますね。
ファイルタイプ(image/jpegなど)を指定するためにheader関数を使います。
この例、山本勇さん著お「PHP 実践のツボ 〜セキュアサイト構築テクニック〜」にありましたね(^_^)
#テクニック、愛用させて頂いております。

詳細はコチラ
http://www.trustbee.com/work/book.php

> 他のディレクトリの中のファイル名の最初の6文字を捉えてそれを配列に取り込んでそれ
> を <img src="ディレクトリ + ファイル名"> という形で画像を表示したいのですが・・
> ・。
> そうすると上記のように file_id=2003-07-02-012345 というような表示の仕方で良いの
> でしょうか?

 ファイル名に対応する別名があるということですね。
そうなるとまさに重松さんの説明どおりになりますね。

> そこのディレクトリを指定することは必要ないのですか?

<img src="image_server.php?file_id=2003-07-02-012345"> 

の場合ですと、読み出しディレクトリはimage_server.phpの中で指定します。

> また file_id というのがわからないのですが・・・。固有の ID ということですよね・
> ・・。その file_id はどこかで指定するのでしょうか?

 image_server.phpの中で指定します。
image_server.phpの中では、$_GET["file_id"] に値(2003-07-02-012345)が入
りますから、この値を解析して読み出しディレクトリを決めます。
読み出しディレクトリ・ファイルが決まれば、あとはGD関数を使って画像を読み
込み、最後にheader関数でファイルタイプを指定してファイルを開きます。

 
> dir 関数というのを見つけたのですが、
> 
> $d = dir("c:\data");
> echo "Handle: ".$d->handle."<br>\n";
> echo "Path: ".$d->path."<br>\n";
> while (false !== ($entry = $d->read())) {
>     echo $entry."<br>\n";
> }
> $d->close();
> 
> という形でファイル名が羅列できたのできました。 while 文のところに 
> 
> if(substr($jpgFile[$i],0,6) == "$PatientNum"):
> 
> というような形で配列に取り込んで画像を表示させることができますか?

 そこでもう一工夫必要ですが、説明するには長くなりますね。

> ちょっと無理かなぁ〜。まだやってないのですが・・・。

 ならばやって、痛い目に遭ってから質問しましょうよ。
ここで答える人たち、結構痛い目に遭ってますから。
ナイフの「本当の」恐ろしさは、それで手とか切った人でないと分からない、と
いうのと同じです。


> それから 
>     <img src="image_server.php?file_id=2003-07-02-012345">
> というような形で表示させる・・・ということでしょうか?

 ですよ。

> <img src="image_server.php?file_id=2003-07-02-012345">
> 
> というように表示させなければならないということですか?

 でなければならない、と言ってしまえばそれまでですが、これは逆に、画像の
置かれているディレクトリを表に見せないで済む〜セキュリ
ティ向上の効果もあります。

> 何度もややこしい質問で本当に申し訳御座いません。m(_ _)m

 ぜひ手も動かして下さいね!
ファイトです!



PHP-users メーリングリストの案内