いつもお世話になっております。
画像をアップロードするスクリプトを考えているのですが…
(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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
透過PNGが透過されない!!
-
VBSの「MsgBox」について
-
MYSQLから、画像表示するには
-
phpで画像がどうしても文字化け...
-
ListViewコントロールでサムネ...
-
phpMyAdminに画像を保存できない
-
phpで画像を保存するときにリサ...
-
libpngでpng操作がうまくいかない
-
BLOBデーターの画像の表示方法...
-
画像リストを作りたい
-
ビットマップ画像を読み込むプ...
-
ファルダに画像をいれておいて...
-
imageフォルダに、画像をリサイ...
-
PHP+PostgreSQLを使ってPDFファ...
-
PHP GD 画像が縮小できない
-
拡張子php画像をjpg画像等に変...
-
最も速い画像合成処理を教えて...
-
フォントの色を変えるには?
-
PHPのWARNINGをcatchするには
-
onedrive にexcelファイルをア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
Illustratorで文字と画像を流し...
-
アップロード画像数でCSSを分け...
-
imageフォルダに、画像をリサイ...
-
PythonのTkinter詳しい方へ。画...
-
VBAでJPGサイズ変更
-
C# Excelファイルへの画像挿入。
-
ListViewコントロールでサムネ...
-
PHPで吐き出した画像にリンクを...
-
php,mysqlにて画像パス保存/表...
-
PHP+PostgreSQLを使ってPDFファ...
-
スマートフォンから画像のアッ...
-
画像にテキストを埋め込むジェ...
-
実行ファイル(exe)に画像ファ...
-
ビットマップ画像を読み込むプ...
-
改行コードのカウント
-
Ajaxで画像表示
-
画像アップロードのファイル名...
おすすめ情報