そのサイトへの画像アップは携帯がメインとなると思うのですが、iphoneなどスマートフォンにも対応したいと考えています。
携帯から単に画像をアップさせる方法は
http://q.hatena.ne.jp/1300952161
で紹介していただいた本を参照し理解できています。
アップしてもらう画像は、MySQLに格納してある商品の画像しか投稿されません。
テーブルイメージは以下に示しています。
そこで、何の商品の画像なのか?を投稿された際に判断したいのですが、その方法がわかりません。
イメージ的には、
[<a href="mailto:info@hoge.com">画像メールを投稿する</a>]
というリンク文字に商品IDを引数で埋め込めれば一番いいのですが、そんなことができるんのでしょうか?。
どなたか、何の画像なのか判断(idを紐付け)するアイデアをお持ちの方はいますか?
よろしくお願いします。
テーブルイメージ
id, name
1, hhhhh
2, mmmmm
3, kkkkk
.....
なぜMySQLサーバにある画像をクライアント(ケータイ/スマートフォン)からアップロードしなければならないのか、そのあたりの状況が分からないのですが、添付ファイルとサーバにあるファイルが同じものであるかどうかを判断するだけでしたら、md5_file関数を使ってMD5ハッシュ値を比較してやればできます。
> なぜMySQLサーバにある画像をクライアント
いえ、サーバーに画像は保存されていません。
サーバーには商品idと商品名が登録されています。
商品の画像を撮影し送信してもらい、商品画像と商品名を商品idで紐付けしたいのです。
>ファイルが同じものであるかどうかを判断する
ファイルが同じものか?を比較するのではありません。
Mysqlに保存されている画像と、メールで投稿される画像が完全に同一であれば、Mysqlに保存されている画像のハッシュと、メールでアップロードされた画像のハッシュを比較するという方法はどうでしょうか。
画像の情報が1bitでも違えば意図したとおりに動かないですが…
いえ、画像はサーバーにはありません。
送信されて初めて保存されます。
>商品の画像しか投稿されません。
この部分の質問の仕方が誤解を招いていますね。
商品の画像が保存されているのでなく、商品の名前が保存されています。
その名前に対応した画像が送信されるのです。
質問で上げている本の内容がよく分からないのですが、
1.クライアントはinfo@hoge.com宛に写真を添付したメールを送信する
2.メールを受信すると、procmailなどで処理をしてプログラムに処理をさせる
3.起動されたプログラムが、メールから画像を取得してアップロード処理をする
という感じでいいでしょうか?
その流れで、かつ、SubjectやBodyに埋め込むことが許されないのであれば、メールアドレスを商品ごとに変えるしかないでしょう。
例えばですが、hhhhhに関する画像をアップロードしてもらうときには、info-1@hoge.comに、mmmmmに関する画像をアップロードしてもらうときには、info-2@hoge.comにメールしてもらう感じです。
これについては、商品が固定かつ少数ならば、個別にメールのエイリアスを設定すればいいでしょうが、今回はそうではなく、動的で多くの商品を扱う必要があると思われます。ここからはメールサーバ次第ですが、正規表現を使ってエイリアスを設定してあげるのが簡単かと思います。
つまり、info-1@hoge.comも、info-2@hoge.comも、info-999999@hoge.comも受信するユーザはinfoにしてしまうのです。
Postfixをお使いでしたら、以下のサイトが参考になるかと思います。
http://blog.honestyworks.jp/blog/archives/193
その上で、受け取ったメールを処理する際に、Toの中身を見て上げれば、どの商品に対する投稿かを判別することができます。
何かの参考になれば。
ご回答ありがとうございます。
> という感じでいいでしょうか?
そのような感じです。
Postfixは初めて知りました。
これはいいアイデアですね。
ただ、Xサーバーのレンタルなのです。
タイトルや本文に記入すると不意もしくは故意に書きかえられる可能性があるので他の方法を模索しています。
サーバに画像が無く、送信者が間違えたIDを送ってくるとしたら、それを防止する方法はないと思いますが。
ご回答ありがとうございます。
メール本文でも堂々と付与しても改ざん対処を行えば問題ないということですか?
こんな感じでしょうか?
1.メール本文に本IDとcrc32(ID)の2つを添付する。
2.送信されたメールを解析し、送られてきた2つのIDが一致するか?
3.一致しなければ破棄
4.一致すれば本IDでDB検索し、紐付けし画像を登録。
ご回答ありがとうございます。
それは考えたのですが、タイトルや本文に記入すると不意もしくは故意に書きかえられる可能性があるので他の方法を模索しています。