猿问

阻止用户在付款页面上更改收费金额

我正在尝试在我的网站上集成支付网关。有三门课程,每门课程都有不同的价格。我正在传递金额和包的值,并且我已经使输入字段只读,但用户仍然可以更改检查元素中的金额并将其设置为0并传递值并免费获取课程。如何阻止用户更改值?或者有没有其他方法可以传递值?还是加密它,然后再次解密?form.php


这是我的代码index.php


<div id="outer">

        <div class="box">

            <h4>Rs. 9,900/-</h4>

            <ul>

                <li>2-Days Classroom Training</li>

                <li>E-Learning Course</li>

            </ul>

            <form action="form.php" method="post">

                <input type="hidden" name="amount" value="9900" readonly="readonly">

                <input type="hidden" name="package" value="basic" readonly="readonly">

                <input type="submit" name="BUY NOW" value="BUY NOW">

            </form>

        </div>

        <div class="box">

            <h4>Rs. 11,900/-</h4>

            <ul>

                <li>4-Days Classroom Training</li>

                <li>E-Learning Course</li>

            </ul>

            <form action="form.php" method="post">

                <input type="hidden" name="amount" value="11900" readonly="readonly">

                <input type="hidden" name="package" value="standard" readonly="readonly">

                <input type="submit" name="BUY NOW" value="BUY NOW">

            </form> 

        </div>

        <div class="box">

            <h4>Rs. 14,900/-</h4>

            <ul>

                <li>4-Days Classroom Training</li>

                <li>E-Learning Course</li>

                <li>5 Hours Personal Session With The Trainer</li>

            </ul>

            <form action="form.php" method="post">

                <input type="hidden" name="amount" value="14900" readonly="readonly">

                <input type="hidden" name="package" value="pro" readonly="readonly">

                <input type="submit" name="BUY NOW" value="BUY NOW">

            </form>

        </div>

    </div>

form.php


<body>

    <?php

        if (isset($_POST['amount']) && isset($_POST['package'])) {

            $amount = $_POST['amount'];

            $package = $_POST['package'];

        }

    ?>

天涯尽头无女友
浏览 118回答 3
3回答

潇潇雨雨

永远不要让用户发送价格。每个课程都有一个 ID。让我们假设这个:课程 1,ID = 1,价格 = 499,名称 = 2 天课堂培训课程 2,ID = 2,价格 = 999,名称 = 4 天课堂培训在您的付款页面上,内部仅发送。<forms>course_id = X在接收请求的PHP脚本上,您知道该脚本具有...这是您将收取的价格。course_id = Xprice = Y// index.php<form action="form.php" method="post">&nbsp; &nbsp; <input type="hidden" name="course_id" value="1" readonly="readonly">&nbsp; &nbsp; <label>&nbsp; &nbsp; &nbsp; &nbsp; 2-days learning course&nbsp; &nbsp; </label>&nbsp; &nbsp; <input type="submit" name="BUY NOW" value="BUY NOW"></form>//form.phpif (isset($_POST['course_id']){&nbsp; &nbsp;if ($_POST['course_id'] == 1){&nbsp; &nbsp; &nbsp; &nbsp;$amount = 499;&nbsp; &nbsp;}} else {&nbsp; &nbsp; echo 'invalid request'; exit();}

一只斗牛犬

您可以做一件事来避免陷阱,只需为金额值创建一个会话变量,然后在下一页中获取会话变量,然后将金额元素(mandatory)的会话变量以及由支付网关加密/解密的其他字段一起发送。

牧羊人nacy

检查字段的值,如果其为零,只需终止代码的执行,将用户发送回表单并打印警告...或者,您可以使用 JavaScript 在提交后双击并仔细检查数量。外面就是丛林!!!
随时随地看视频慕课网APP
我要回答