1

顧客がフォーム ページから選択した製品と数量に応じて URL を作成する機能があります。

関数は次のようになります。

function getPurchaseLink($token, $csvfile, $force_platform = "", $quantity = 1){
   // Code to create url
}

各製品には、数量の選択ドロップダウンリストを含む独自のフォームがあります。

問題は、次のように数量をハードコーディングした場合です。$quantity = 1; そして、私が入れたフォームアクションで:

<form method="post" action="<?php echo getPurchaseLink($TOKEN, $csvfile, $force_platform = "", $quantity); ?>">

フォームを送信すると機能します。

しかし、それは私が望む方法ではありません。セレクトボックスオプションの数量値を取得したい。$quantity = $_POST['quantity']; のように

しかし、ページの読み込み時に未定義のエラーが発生しました。そのため、セレクトボックスから数量値を取得できないとフォームを送信できません。

これが私のフォーム全体です:

<?php
require 'script_purchase.php';

$csvfile = 'purchaselinks.csv';

//echo getPurchaseLink($token = '1Opp2p11M', $csvfile, $force_platform = "", $quantity = 99) . '<br/>';
$quantity = $_POST['quantity'];

 ?>
<html>
<body>

<form method="post" action="<?php echo getPurchaseLink('1Opp2p11M', $csvfile, $force_platform = "", $quantity); ?>">
<div class="comp">
    <label class="font_12" for="quantity"># of PCs</label><br/>
    <select class="font_12" id="quantity" name="quantity">
        <option value="10">10 PCs</option>
        <option value="25">25 PCs</option>
        <option value="50">50 PCs</option>
        <option value="99">99 PCs</option>
    </select>
</div>
<div class="div_small"><span class="font_12"><br/>for</span></div>
<input name="submit" id="button_addtocart" type="submit" value="Submit"       class="checkout" />
</form>

</body>
</html>
4

1 に答える 1

2

配列を使用する前に'quantity'、配列内にが存在するかどうかを確認することをお勧めします。$_POSTこのような:

$quantity = array_key_exists('quantity', $_POST) ? $_POST['quantity'] : 0;

または、デフォルトとして他の値。問題は、ページが初めてレンダリングされるときに、POST データ内に何もないことです。

また、何らかの検証を適用する必要があります (誰かがスクリプトを悪用したい場合に備えて)。http://www.php.net/manual/en/function.filter-input.phpをご覧ください。

于 2013-02-07T22:38:09.933 に答える