携帯サイトの画像アップロード[PHP+MySQL]
携帯サイトの会員マイページで
個人の画像をアップできる仕様を制作したいのですが
(ブログやsnsサイトによくある、アバターの代わりに
画像をアップできる仕様です)
どうしてもDBの更新・画像のアップロード、双方ができず
困り果てております。
※メールエラーログをみてみたところ、
メールをトリガーとしてプログラム自体は動作していた
ものの、処理が途中でストップされておりました。
具体的には、下記のような仕様を考えています。
(1)アップしたい画像を添付して携帯メールを送信
(2)メールをトリガーとして画像アップロード&DB更新
プログラム起動
~以下プログラムの中身の動作~
(3)届いたメールアドレス(拡張メールアドレス)から会員ID情報を
取得
(4)会員情報テーブル(sns_user)にマッチする会員IDの列の
image_pathの項目にアップロードした画像のパスが
更新される。
PHP+MySQLで制作中です。
「update テーブル名 set where 条件~」で調べてみたものの、
どうしても分からず質問させていただきました。
どなたかお分かりになられる方がいらっしゃいましたら
ご教授いただけませんでしょうか。
以下ソース内容
// ユーザー&認証コードチェック
if ($user&&$auth_code==getAuthCode($user['id'], $user['auth_string'])) {
// 認証OK
// マルチパートの場合のみメールを解析して画像を取得
if (strtolower($structure->ctype_primary) == "multipart") {
$images = getImage($structure->parts);
}
$image_save_path = null;
// 画像リストの中から1つだけ画像を取得する
foreach ($images as $image) {
// コンテンツタイプのチェック
if ($image['type'] == 'image/jpeg'
|| $image['type'] == 'image/gif'
|| $image['type'] == 'image/png') {
// ファイルとして保存
// 一時ファイルパス
$temp_path = tempnam('/tmp', 'img_');
if ($temp_path == false) {
// error
break;
}
$fp = fopen($temp_path, 'w');
if ($fp == false) {
// error
break;
}
fwrite($fp, $image['body']);
fclose($fp);
// 画像の形式と縦横サイズを取得
list($width, $height, $type) = getimagesize($temp_path);
// 認識できる形式であれば、所定のメソッドで開く
$ext = ".jpg";
$imageSource = null;
if ($type == IMAGETYPE_GIF) {
$imageSource = imagecreatefromgif($temp_path);
$ext = ".gif";
} else if ($type == IMAGETYPE_JPEG) {
$imageSource = imagecreatefromjpeg($temp_path);
} else if ($type == IMAGETYPE_PNG) {
$imageSource = imagecreatefrompng($temp_path);
$ext = ".png";
}
// 一時ファイルを消す
unlink($temp_path);
if ($imageSource) {
// ファイル名決定
$path = tempnam($image_dir, '');
$image_save_path = $path . $ext;
// 画像をケータイディレクトリへファイル保存
imagejpeg($imageSource, $image_save_path);
imagedestroy($imageSource);
break;
}
}
}
if ($image_save_path) {
// 差出人取得
$from = getFrom($structure->headers['from']);
$params = array();
$params[] = $user['id'];
$params[] = $image_save_path;
// データベースへ接続する
//
if ($db = connectDB($db_user, $db_pass, $db_name, $db_host, true)) {
$sql = "update sns_users set
image_path = '$image_save_path'
where id = '" . mysql_real_escape_string( $_SESSION['id'] ) . "'";
execQuery($db, $query, $params);
}
}
$query = "select * from sns_users where id = ''";
$result = mysql_query( $query );
$user = mysql_fetch_array( $result );
// データベースを閉じる
closeDB($db);
}
?>