提交按钮的 HTML 不会将数据插入数据库并一起重定向到 URL

Posted

技术标签:

【中文标题】提交按钮的 HTML 不会将数据插入数据库并一起重定向到 URL【英文标题】:HTML for submit button does not insert data to database and redirect to URL together 【发布时间】:2020-04-20 21:02:42 【问题描述】:

我正在尝试将用户数据插入数据库,在将数据插入数据库后,表单将被重定向到 PayPal 结帐页面。

我尝试过隐藏输入填充,该字段在提交表单后会向数据库插入数据,但它不起作用。我的代码:

 <?php

include './config.php';

if (isset($_POST['form_submit'])) 
    $amount = $_POST['amount'];
    $customer_id = $_POST['customer_id'];
    $email = $_POST['email'];

    $date = date("Y-m-d H:i:s");

    $query = "INSERT INTO payment (customer_id, amount, email, date) VALUES ('$customer_id', '$amount', '$email', '$date')";
    $res = $conn->query($query);

?>

 <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
     <input type="hidden" name="cmd" value="_s-xclick">
     <input type="hidden" name="hosted_button_id" value="GGRGNF52LT9RW">
     <ul class="row">
         <!-- name -->
         <li class="col-sm-4">
             <label>
                 <input class="form-control" type="text" name="customer_id" id="customer_id" placeholder="ID" required>
             </label>
         </li>

         <!-- number -->
         <li class="col-sm-4">
             <label>
                 <input class="form-control" type="text" name="amount" id="amount" placeholder="Payment Amount" required>
             </label>
         </li>

         <!-- email -->
         <li class="col-sm-4">
             <label>
                 <input class="form-control" type="email" name="email" id="email" 
                        placeholder="Paypal Email Address" required>
             </label>
         </li>
     </ul>

    <input type="hidden"  name="form_submit" >
    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" 
    border="0" name="submit"  
    style="height:60px">
    <img  border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif">
 </form>

【问题讨论】:

为什么表单动作是paypal.com/cgi-bin/webscr 【参考方案1】:

您在这里所做的是将所有表单数据发送到“https://www.paypal.com/cgi-bin/webscr” URL 并尝试从当前页面访问这些数据。这肯定行不通(因为当前页面中没有表单数据可供处理)。

form标签中的Action字段表示提交表单时将表单数据发送到哪里。

如果您的 PHP 和 html 代码在同一个文件中(比如说xyz.php),那么您需要在操作字段中提供相同的文件名。

例如:

<form action="xyz.php" method="post" target="_top">

这会将所有表单数据发送到同一个文件中,您可以从该文件中执行$_POST['amount'] 来获取这些值。

一旦您将值插入数据库,然后将页面重定向到 Paypal 结帐页面。

使用 PHP 代码重定向:

// header( $header, $replace, $http_response_code )
header("Location: https://www.paypal.com/cgi-bin/webscr");

【讨论】:

【参考方案2】:

您没有重定向到 PayPal,而是将表单数据发送到 PayPal,这就是数据未插入数据库的原因。

您应该首先将数据发送到您的页面:

<form action="currentpagename.php" method="POST">

插入数据后,应该重定向:

$res = $conn->query($query);
header("location: https://www.paypal.com/cgi-bin/webscr");

【讨论】:

【参考方案3】:

这里改一下

在 php 代码中

if (isset($_POST['submit'])) 

【讨论】:

如果此答案对您有帮助,请标记为已验证,以便其他人可以参考此答案,谢谢。

以上是关于提交按钮的 HTML 不会将数据插入数据库并一起重定向到 URL的主要内容,如果未能解决你的问题,请参考以下文章

C# ASP.NET MVC:提交按钮后不会存储数据

使用提交按钮/输入标签将数据插入猫鼬模式

使用 Ajax 和 PHP 插入数据库(mysql)

php表单的提交按钮是一个图片,当点击提交按钮要将表单内容插入数据库应该怎么写啊

spring ibatis 框架 点击添加按钮 出现了插入两条相同的数据 可能原因 是 ? 求各位大神 指教~

Rails:2单击一个提交按钮在两个数据库中插入记录(将一个控制器的记录保存在另一个控制器中)