アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPは人が作ったものをいじる程度しかできない初心者です。
今回、ショッピングサイトでよく見かける注文フォームを作りたいと思い、

(1)注文(入力画面) 

(2)注文内容確認画面

(3)送信確認画面

という感じで作っています。
(1)注文(入力画面)では、javascriptで商品 × 個数を自動計算できるようにしています。

その自動計算した内容を(2)注文内容確認画面に表示させるところまではできました。

ここから質問なのですが、
(3)送信確認画面で、私のメールアドレス宛てに注文内容のメールが届くようにPHPを書いたのですが、メールは届くものの、入力された内容が反映されていない状態で届いてしまいます。

↓メールはこんな感じで届きます
商品1:個、円
商品2:個、円
商品3:個、円
-----------------------------------------------------------------
税込合計:円
-----------------------------------------------------------------
お届け指定日:
時間帯指定:

送信完了画面(send.php)のPHP部分は下記の通りです
<?php

mb_language("Japanese");
mb_internal_encoding("SHIFT-JIS");


$subject = "★★注文★★";
$message = "\n商品1:" . $_GET["goods1"] . "個、" . $_GET["field1"] . "円" .
"\n商品2:" . $_GET["goods2"] . "個、" . $_GET["field2"] . "円" .
"\n商品3:" . $_GET["goods3"] . "個、" . $_GET["field3"] . "円" .
"\n-----------------------------------------------------------------" .
"\n税込合計:" . $_GET["field_total2"] . "円" .
"\n-----------------------------------------------------------------" .
"\nお届け指定日:" . $_GET["specifiedday"] .
"\n時間帯指定:" . $_GET["time"];


// メール送信
$rcd = mb_send_mail("info@▲▲▲.com", $subject, $message, "From: " . $_GET["mail"]);
?>

どこが間違っているのでしょうか?
どなたかご指摘お願い致します。

A 回答 (3件)

このシステムを完成させたとしても、


注文者によって注文情報が変更できてしまうので、本番では使えません。

問題箇所は以下の通り。
・JavaScriptで計算し、結果を表示するだけなら良い、それを注文情報として送っては駄目。
・$_GETで送信するのも駄目。
・金額の計算はサーバサイドで行うべき。

--
まずは、どの画面で、どの情報を使うかを整理されると良いでしょう。

事前に商品情報をPHP側で配列に入れておきましょう。
(データベース等からデータを取得しているならそれを使用してください)
$datas = array(
array('id'=>'xxx1', 'name'=>'商品名', 'price'=>0),
array('id'=>'xxx2', 'name'=>'商品名', 'price'=>0)
);
配送オプション情報をPHP側で配列に入れておきましょう。
$option_time = array( '午前', '午後' );
--
入力画面から送られる情報を、以下に限定してください。
(小計や税込み合計は入力画面からPOSTしない)
・商品ID(英数。今は無いので付与する)
・注文個数(数値)
・配送オプション(日時指定、時間帯指定)
そして、POSTで送信してください。
--
確認画面では。
注文者が入力した商品の個数の金額をPHP側で計算します。

この回答への補足

詳しくご回答頂き、ありがとうございます!
本番で使えないんですか…
注文フォームはユーザーが注文(入力)する画面で注文個数や合計金額をが確認できるようにしたいです。
https://sv62.xserver.jp/~healing-rose/healing-ro …
↑このサイトの注文フォームのような感じです。

参考サイトのような感じにするには、PHPでもすべて出来るのでしょうか?
「PHP 自動計算」などで検索したのですが、javascriptの自動計算ばかり出てきてしまって。。

補足日時:2011/03/26 21:42
    • good
    • 0

提示したコードは、一つのファイルで入力&確認をしていますが、


本来は、入力-->確認と別のファイルへ遷移していたはずです。
なので、画面を別ファイルに分ければ、選択個数を保持する必要は無いです。
選択個数は、PHPで計算した値を表示すればいいのではないでしょうか。

そもそも、選択個数を保持しておくのは変ですよね。
個数のselectboxを、『注文者が手でつかんだ数』と考えると…
例:
・商品を2個手に取る
・カートに入れる(POST)
・カートに商品が2個ある状態で、強制的に商品を2個取らされる
(※カートに入れてある商品だけが精算される とします)
こういう状態ではありませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます!
なにもわかっていなくて、すみません。
細かく説明して頂いて助かりました。
作って頂いたコードを使わせて頂いて、なんとかできそうです。

お礼日時:2011/03/29 22:34

<?php


$price = 100;
$total = 0;
if (isset($_POST['order'])) {
$total = $price * $_POST['count'] * 1.05;
}

?>
<form method="post">
<input type="text" id="price" value="<?php echo $price; ?>" />
<select id="count" name="count">
<option value="0">-----</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="text" id="total" value="0" />
<input type="submit" name="order" value="注 文" />
</form>
<script>
var price = document.getElementById('price');
var cnt = document.getElementById('count');
var total = document.getElementById('total');
cnt.onchange = function() {
total.value = price.value * cnt.value * 1.05;
}
</script>
<div>PHPで計算 合計:<?php echo $total; ?></div>

・JavaScriptで計算しても良い。でも、注文情報としては使えない。
上記のサンプルコードは、合計金額の計算をJavaScriptとPHPで行っています。
しかし、JavaScriptで計算した値をPHPへ送信してはいません。

・GETで送ってはいけない。
POSTにしたから安全という訳ではありませんが、
URLにパラメータが表示されるのは避けたいです。

この回答への補足

なるほど、ありがとうございます!
作って頂いたソースをいじらせてもらいました!
もうひとつお聞きしたいのですが、セレクトボックスで選んだ商品の個数を、
フォーム送信(簡易見積)したあとにも、そのまま表示しておきたいのですが、可能でしょうか・・?
現在はフォーム送信するとセレクトボックスが0個になってしまうので…
何度も質問して申し訳ございません。
よろしくお願い致します。

<?php
$price1 = 100;
$total1 = 0;
if (isset($_POST['order'])) {
$total1 = $price1 * $_POST['count1'] * 1.05;
}

$price2 = 120;
$total2 = 0;
if (isset($_POST['order'])) {
$total2 = $price2 * $_POST['count2'] * 1.05;
}


?>
<style type="text/css">
<!--
.style1 {font-size: smaller}
-->
</style>
<form method="post">
1、商品01:<?php echo $price1; ?>円
<select id="count1" name="count1"method="post">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<br /><br />

2、商品02:<?php echo $price2; ?>円
<select id="count2" name="count2"method="post">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<br />
<br />
<input type="submit" name="order" value="簡易見積" />
</form>

<div>
税込合計:<?php echo $total1 + $total2; ?>円
</div>

補足日時:2011/03/28 17:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!