变量没有正确散列

时间:2014-07-23 09:53:14

标签: php md5

我真的希望有人可以帮助我,我是一个菜鸟,所以提前为无知/愚蠢道歉。

我试图将用户重新定向到可以用卡支付的用户,我只是在设置$金额时遇到问题。设置为固定金额($ amount =" 8000")工作正常,但当它设置为$ price时,它不起作用,并且没有收到任何东西。最终我想在底部形式设置$ price,但是它也没有设置为固定金额。 (如下)

非常感谢任何帮助,谢谢!

 <?php
    //Replace these with the values you receive from Global Iris
    $merchantid = "XXXXX";
    $secret = "XXXXX";

    //The code below is used to create the timestamp format required by Global Iris
    $timestamp = strftime("%Y%m%d%H%M%S");
    mt_srand((double)microtime()*1000000);

    $orderid = $timestamp."-".mt_rand(1, 999);

    $curr = "GBP";
    $amount = $price * 100;
    $price = 80;

    /*-----------------------------------------------
    Below is the code for creating the digital signature using the MD5 algorithm provided
    by PHP. you can use the SHA1 algorithm alternatively. 
    */
    $tmp = "$timestamp.$merchantid.$orderid.$amount.$curr";
    $md5hash = md5($tmp);
    $tmp = "$md5hash.$secret";
    $md5hash = md5($tmp);

    ?>


    <!-- Prices for Global Iris -->
    <br />
    <br />
        <form action="https://redirect.globaliris.com/epage.cgi" method=post class="select">

    <input type=hidden name="MERCHANT_ID" value="<?=$merchantid?>">
    <input type=hidden name="ORDER_ID" value="<?=$orderid?>">
    <input type=hidden name="CURRENCY" value="<?=$curr?>">
    <input type=hidden name="AMOUNT" value="<?=$amount?>">
    <input type=hidden name="TIMESTAMP" value="<?=$timestamp?>">
    <input type=hidden name="MD5HASH" value="<?=$md5hash?>">
    <input type=hidden name="AUTO_SETTLE_FLAG" value="1">

    <select name="price" id="mySelect" onchange="return show_price(this.value);">
    <option value="100">Option 1 (£100)</option>
    <option value="120">Option 2 (£120)</option>
    <option value="115">Option 3 (£115)</option>
    <option value="135">Option 4 (£135)</option>
    <option value="80" >Option 5 (£80)</option>
    </select> 
    <br />
    <br />
    <input type=submit value="Proceed to secure server">
    </form>

            <div class="java">&pound; <span id="price_sp"><span></div>
    <script>
        function show_price(price)
        {
            document.getElementById('price_sp').innerHTML = price;
        }
    </script>

1 个答案:

答案 0 :(得分:0)

您的错误顺序中有几行,$price需要在$amount计算中使用$price = 80; $amount = $price * 100; 之前设置,如下所示:

<select name="amount" id="mySelect" onchange="return show_price(this.value);">
<option value="10000">Option 1 (£100)</option>
<option value="12000">Option 2 (£120)</option>
<option value="11500">Option 3 (£115)</option>
<option value="13500">Option 4 (£135)</option>
<option value="8000" >Option 5 (£80)</option>
</select> 
<br />
<br />
<input type=submit value="Proceed to secure server">
</form>

        <div class="java">&pound; <span id="price_sp"><span></div>
<script>
    function show_price(price)
    {
        document.getElementById('price_sp').innerHTML = price/100;
    }
</script>

此外,您可以按如下方式编辑表单,以根据下拉值提交金额:

{{1}}

我已将字段名称更改为&#34; amount&#34;所以它正确提交(你需要删除隐藏的金额字段),然后更新值以便便提交并在Javascript中添加一个除法,以便它仍然可以在HTML输出中很好地读取。