我需要一个表单提交来调用带有输入变量的php函数(取自表单)


I need a form submit to call a php function with input variables (taken from the form)

我有一个PHP函数,它接受3个变量并使用它们。

<?php
function securePayPost($cardnumber, $expiry, $cvv) {
//do stuff with $cardnumber, $expiry and $cvv
?>

我有一个表单,用户可以在其中输入卡号、到期日、cvv和其他一些信息:

<form action="" method="post" class="form-signin">
   <h2 class="form-signin-heading">Processing Payment</h2>
   <table width="491" border="0">
      <tr>
         <td width="154">Name on card:</td>
         &nbsp;
         <td width="206"><input type="text" name="cardname" class="input-block-level" placeholder="Name on Card" /></td>
      </tr>
      <tr>
         <td>Card Number:</td>
         &nbsp;
         <td><input type="text" name="creditcard" class="input-block-level" placeholder="Credit Card" /></td>
      </tr>
      <tr>
         <td>Expiry Date:</td>
         <td>
            <select class="form-control" name="ExpMon" title="select a month">
               <option value="1">Jan</option>
               <option value="2">Feb</option>
               <option value="3">Mar</option>
               <option value="4">Apr</option>
               <option value="5">May</option>
               <option value="6">June</option>
               <option value="7">July</option>
               <option value="8">Aug</option>
               <option value="9">Sept</option>
               <option value="10">Oct</option>
               <option value="11">Nov</option>
               <option value="12">Dec</option>
            </select>
            <select class="form-control" name="ExpYear" title="select a year">
               <option value="2015">2015</option>
               <option value="2016">2016</option>
               <option value="2017">2017</option>
               <option value="2018">2018</option>
               <option value="2019">2019</option>
               <option value="2020">2020</option>
            </select>
         </td>
      </tr>
      <td>&nbsp;</td>
      <tr>
         <td>CVV:</td>
         <td><input type="text" name="CVV" class="input-block-level" placeholder="CVV" /></td>
      </tr>
      <tr>
         <td><button class="btn btn-large btn-primary" type="submit" name="submit">Submit Payment</button></td>
         <td>&nbsp;</td>
         <td width="129"><button class="btn btn-large btn-primary" type="submit" formaction="deliveryDetails.html">Review Details</button></td>
      </tr>
   </table>
</form>

我所知道的关于如何做到这一点的唯一知识使用以下代码:

<?php
if(isset($_POST['submit']))
{
securePayPost(creditcard, ExpYear, CVV);
} 

然而,问题是它不知道什么是信用卡,ExpYearCVV。对我来说,做我想做的事情的最佳方式是什么?

简而言之,我希望信用卡号、到期日和cvv被捕获在表单提交中,然后作为变量$cardnumber$expiry$cvv输入到php函数securePayPost中。

我们只需将这些值传递给函数-

    <?php
    if(isset($_POST['submit']))
    {
    //get values from form
    $creditcard = $_POST['creditcard'];
    $ExpYear = $_POST['ExpYear'];
    $CVV = $_POST['CVV'];
    //pass to the function
    securePayPost($creditcard, $ExpYear, $CVV);
    } 

无需为post值声明变量,只需执行以下操作,即可使用更少的代码获得相同的结果

<?php
if(isset($_POST['submit']))
{
securePayPost($_POST['creditcard'], $_POST['ExpYear'], $_POST['CVV']);
} 

表单使用POST方法,因此可以检索$_POST数组中的值。所以你可以这样做:

<?php
if(isset($_POST["submit"])
{
      if(isset($_POST["cardname"])) {$cardname=$_POST["cardname"];}
      if(isset($_POST["creditcard"])) {$cardnumber=$_POST["creditcard"];}
      if(isset($_POST["cardname"])) {$ExpMon=$_POST["ExpMon"];}
      if(isset($_POST["cardname"])) {$ExpYear=$_POST["ExpYear"];}
      if(isset($_POST["CVV"]))  {$CVV=$_POST["CVV"];}
}

然后,您可以根据需要使用这些变量。请记住,您必须将$ExpYear和$ExpMon传递给函数securePayPost()。否则,您必须在$expiry中连接$ExpYear和$ExpMon,只需执行以下操作:

$expiry=$ExpYear.$ExpMon;

你知道前两个字符是到期年,下一个是到期月。

否则,您不需要为$_POST数组声明变量。您也可以直接从$_POST[]传递到您的函数,执行以下操作:

securePayPost($_POST['creditcard'], $_POST['ExpYear'], $_POST['CVV']);

但请记住,您还需要传递$ExpMon,否则在表单中是无用的。