フォームからファイルを送信して、もし既に存在するファイル名だったら上書きをしたいんですが、どうすればいいですか?
php
1$path = sprintf($_SERVER['DOCUMENT_ROOT'] . './users/'.$_POST['keyid'].".png"); 2if (!move_uploaded_file($_FILES['upfile']['tmp_name'], $path)) { 3 throw new RuntimeException('ファイル保存時にエラーが発生しました'); 4} 5chmod($path, 0644);
処理の一部なんですが、if (!move_uploaded_file($_FILES['upfile']['tmp_name'], $path)) {
でエラーが出てるみたいです。
でも、ここを存在しない名前だといけるんで、ファイルが合った場合は上書きをしたいんです。どうすればいいですか?
同じ画像じゃなくても名前が一緒だったら上書きしちゃうの?
はい。上書きします。
と言うことは、画像ファイルをエクセルで上書きすることもできちゃいますね。
どういう意味でしょうか?
test.pngという名前の画像がすでにあったとしてエクセルファイルをtest.pngと名前を変更してアップロードされたとしても上書きしていいの?ってことです。名前は画像っぽいけど実態はエクセル(要は画像じゃないってこと)
なるほど、要するに、ファイルの内容が画像データじゃなかったら、エラーを出して、処理を止める必要があるということですか?
画像を表示したいけど実態は画像じゃないから表示できませんし、幾らでも悪さができますよね。その辺りの概念とかチェックの仕方は別途調べてください。幾らでも出てきます。
なるほど、ありがとうございます。ちょっとエンドユーザを信用しすぎてました。拡張子だけで判断するのはよくないということですね。
ユーザからの入力は信用しない が基本です。もちろん社内システムのような限定された環境であっても。
勉強になります。
回答2件
あなたの回答
tips
プレビュー