提交按钮的 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的主要内容,如果未能解决你的问题,请参考以下文章
php表单的提交按钮是一个图片,当点击提交按钮要将表单内容插入数据库应该怎么写啊