dポイントプレゼントキャンペーン実施中!

いつもお世話になっています。
題の通りディレクトリ内の画像の表示がされず困っています。

下記が例になります。
お分かりの方がいらっしゃいましたら教えていただければ助かります。

鈴木一郎
山田太郎

という方がいた場合、
鈴木一郎の$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が表示されてしまいます。

どなたか教えていただけないでしょうか?
また、正しいコードも教えていただけると助かります。

A 回答 (2件)

とりあえずサニタイズは別途するとして・・・


readdirすることもないかと

<?PHP
$dirPhoto = 'member/photo/';
$dirName = $id.'/';
$fileName="photo.jpg";
$photo = file_exists($dirPhoto.$dirName.$fileName)?$dirPhoto.$dirName.$fileName:$dirPhoto.$fileName ;
print $photo;
?>
    • good
    • 0

いまいちソースの整合性がわからないのだけど



>$dirName = opendir('/' .$id);

で、$dirNameはリソースを得ているのに

>if(!is_dir($dirList.$dirNmae) ・・・

と文字列のように扱おうとしているのはなぜ?
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。

>>$dirName = opendir('/' .$id);
>で、$dirNameはリソースを得ているのに
>>if(!is_dir($dirList.$dirNmae) ・・・
>と文字列のように扱おうとしているのはなぜ?

$dirPhoto = opendir('member/photo');
でphotoディレクトリ内のものを全て取得していますが、
$dirName = opendir('/' .$id);
はそこからさらに$idのディレクトリを取得して、
連結でif文かなと勝手に思い込んでました。

お礼日時:2011/08/21 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!