- ベストアンサー
Flashから画像を受け取りPHPメールフォームで送信
Flashで生成された画像をPHPで受け取ってその画像をメールフォームで送信ということをやりたいです。 どなたかアドバイスお願いしますm(__)m 【制作環境】 WindowsXP/FlashCS3体験版(ActionScript3.0) 【いまの時点でできているもの】 http://ribbon.chu.jp/flash/strap2/strap_test2.swf ●↑の説明 携帯ストラップをユーザーが自由にデザインしてオーダー注文できるFlashです。 パーツを配置して、「アクション」の「Flash内で表示」「画像を保存」「ブラウザで表示」のどれかを押して「Capture」を押すと画像が生成されます。 ちなみに「画像を保存」「ブラウザで表示」はPHPと連携されています。 PHPが全くわからなくて説明しづらいので、ソースを見ていただいてかまいません;↓ http://ribbon.chu.jp/flash/strap2/strap.zip 【困っていること】 ↑で生成された画像をメールフォーム形式で「名前」「メールアドレス」「住所」などのお客様情報と一緒に送信できるようにしたいです。 ですが、PHPが全くわからなくて苦戦しています。 どのようにすればメールフォームで画像を一緒に送信できるのでしょうか…?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おもしろそうな内容ですね。ざっくり書いてみましたが、 メール送信まわりはコピペなので要調整かも。 <?php define('LIB_DIR', dirname(__FILE__) . '/lib/'); ini_set('include_path', get_include_path() . PATH_SEPARATOR . LIB_DIR); $format = isset($_POST["format"]) ? $_POST["format"] : ''; $action = isset($_POST["action"]) ? $_POST["action"] : ''; if ($action == 'prompt') { header('Content-Type: ' . getContentType($format)); //header('Content-Type: application/force-download'); header('Content-Disposition: attachment; filename='. $_POST["fileName"]); print base64_decode($_POST["image"]); //} else if ($action == 'email') { } else if (1) { require_once("Mail.php"); require_once("Mail/mime.php"); $to = "watashi@domian.dom"; $subject = "ストラップ画像"; $body = "ご希望のストラップは添付ファイルのようなイメージです。"; $from = "watashi@domian.dom"; $fromName = 'strap maker'; $attachFile = base64_decode($_POST["image"]); $mail = Mail::factory("mail"); $body = mb_convert_encoding($body, 'JIS', 'auto'); $mime = new Mail_Mime("\n"); $mime->setTxtBody($body); $mime->addAttachment($attachFile, getContentType($format), $_POST['fileName'], false); $body_encode = array( "head_charset" => "ISO-2022-JP", "text_charset" => "ISO-2022-JP" ); $body = $mime->get($body_encode); $headers = array( "To" => $to, "From" => mb_encode_mimeheader(mb_convert_encoding($fromName, 'JIS', 'auto')) . '<' . $from . '>', "Subject" => mb_encode_mimeheader(mb_convert_encoding($subject, 'JIS', 'auto')) ); $header = $mime->headers($headers); $result = $mail->send($to, $header, $body); if (PEAR::isError($result)){ print 'ERROR ' . $result->getMessage(); exit; } print 'OK'; } else if ($action == 'display') { header('Content-Type: ' . getContentType($format)); header('Content-Disposition: inline; filename='. $_POST["fileName"]); //header('Content-Disposition: attachment; filename='. $_POST["fileName"]); print base64_decode($_POST["image"]); } else { print 'ERROR'; } function getContentType($ext) { $mimes = array( 'jpg' => 'image/jpeg', 'png' => 'image/png', ); return isset($mimes[$ext]) ? $mimes[$ext] : false; }
その他の回答 (1)
- honoka69
- ベストアンサー率50% (6/12)
考え方の参考意見程度に呼んで下さい。 できるかどうかなんとも言えないので。自分が作るならという想像で書きます。 Flashで画像生成までできているなら、 getURLでその作成した画像名をPHPに渡し、PHPで処理するという感じでやると思います。 (画像のデータを送るのではなく画像名だけFlashから送ってPHPでそのパスまで画像データを読みにいき、メールに添付するという形です。) あらかじめ、どのフォルダに画像を出力するか決めておく。 (今回は/home/www/img/に画像が生成されるとする。) Flash側------------------------- Captureボタンを押すとgetURL()でPHPに値を送信。 URLの指定は http://hoge.co.jp/hoge.php?name=xxxx&mail=xxxx&address=xxxx&img=hoge.jpg のような感じで送る PHP側------------------------- $_GET['name'] $_GET['mail'] $_GET['address'] $_GET['img'] 等にアクセスして、データを取得する。 画像は/home/www/img/の中の$_GET['img']にあるので、 それをメールに添付して送る。 ----------------------------------------------- みたいな感じで作ると思いますが、名前やメール、住所をこのような形で送るのはセキュリティ的には良くないと思うのですが、とりあえず、作るならこんな感じでやると思います。 よく覚えてないのですが、getURLでPOST送信ができるならそちらの方がまだいいと思います。 AS3をあまりいじってないのでgetURLがなかったらすいません。 AS2ならそんな感じでできると思います。