いつもお世話になっております。
画像をアップロードするスクリプトを考えているのですが…
(PHP+MySQL)
画像格納ディレクトリを用意し、MySQLにてファイル名・拡張子・投稿時間を管理するといったものです。ここで、
1.半角英数以外のファイル名だと、アップロードすることはできるが表示ができない。
2.なので、半角英数以外のファイル名の場合にはエラー表示を出すようにする。
少々強引ですが、現段階で自分にできることをやろうと思っていますので、上のような仕組みを考えています。
引っかかったのが、
$file_name=$_FILES['user_picture']['name'];
(user_pictureはPOSTからの値)
の半角英数の判別です。
これで得られるクライアントサイドのフルパスからファイル名だけを抽出して、その部分にpreg_matchを当てればいいと思うのですが、その方法が分かりません。
どなたかご教授いただけないでしょうか。
よろしくお願い致します。
(抽象的な方向性ではなく、具体的なアドバイス・スクリプトをお願いします。)
(そもそもなんで1.ができないのかご存知の方がいらっしゃいましたら、こちらもお願いします。)
No.1ベストアンサー
- 回答日時:
最近のセキュリティのしっかりしたブラウザでは、input type="file" に入力されたパス+ファイル名のうちファイル名しか送信しないようになっています。
もしパス区切り文字が入っていたら、古いブラウザの利用者なので、弾くくらいの気持ちでよいかと思います。(セキュリティに無関心な利用者ではウィルスたっぷりのファイルの可能性も高いんじゃないかとか思うので)
ということで、これだけでいいのでは?
if(! preg_match ( '/^[0-9a-zA-Z.\-]+$/', $file_name ) ){
print "error filename";
exit;
}
>なんで1.ができないのか
大概のサーバーは、unix系(linux freebsd etc)なので、これらのOSでは、ファイル名に多バイト文字を使えないということだったと思いましたけど。
回答ありがとうございます。
確かに、echoにて$file_name=$_FILES['user_picture']['name'];を出してみたところ、フルパスではなくファイル名のみが表示されました。
私の思い込みでした。
すみません。
正規表現ありがとうございます。
今回、年内にサイトをアップロードすることを目標としていまして、正規表現についてはまだ勉強していないのですが、今後これについてはしっかり勉強し、hrm_mmmさんのご恩を他の方に返すように努力します。
1.に関してもご回答ありがとうございます。
今、いただいた正規表現でチェックしましたところ、意図した通りに動かすことができました。
重ね重ねありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- YouTube ユーチューブへの動画投稿にサムネイルを付ける方法は? 1 2022/07/21 23:45
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
拡張子php画像をjpg画像等に変...
-
PHPで吐き出した画像にリンクを...
-
pictureboxに表示した画像のフ...
-
最も速い画像合成処理を教えて...
-
手作業で埋め込んだ、UserForm1...
-
Apache,phpで画像が表示されない
-
libpngでpng操作がうまくいかない
-
再投稿です。初MacでPythonの勉...
-
C# Webアプリケーションでサム...
-
PHPが読み込まれた時点で動作さ...
-
MatlabによるRGB空間からYUV空...
-
【PHP】画像が表示されず「×」...
-
PostgreSQLのラージオブジェク...
-
VBSの「MsgBox」について
-
PHP echo バックスラッシュの使...
-
PHPのif文でその処理を途中で抜...
-
【file_exists】ファイルが存在...
-
CFileDialogの最初のディレクト...
-
値の受け渡しが出来ない。
-
onedrive にexcelファイルをア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
透過PNGが透過されない!!
-
拡張子php画像をjpg画像等に変...
-
VBAでJPGサイズ変更
-
Illustratorで文字と画像を流し...
-
手作業で埋め込んだ、UserForm1...
-
PythonのTkinter詳しい方へ。画...
-
「imagejpeg」(GD)で作成した...
-
php,mysqlにて画像パス保存/表...
-
GDI+を使ったビット数とDPIの扱い
-
【PHP】画像が表示されず「×」...
-
PHPで吐き出した画像にリンクを...
-
ビットマップ画像を読み込むプ...
-
Macのxamppでの画像表示について
-
ListViewコントロールでサムネ...
-
Webbrowser上に表示した画像を...
-
PHPのGDライブラリについて
-
最も速い画像合成処理を教えて...
-
pictureboxに表示した画像のフ...
-
C#とJavaで、MP3タグの画像を表...
おすすめ情報