- 此问题在此处已有答案**:
Stop an input field in a form from being submitted(14个答案)
昨天关门了。
因此,我使用HTML和PHP构建一个表单,它将接受两个参数,然后调用API并构建一个表单。
下面是HTML:
<div class="login-page">
<div class="form">
<span>Enter the Customer Load Number and Pickup Zip Code, then click "Submit" to track your shipment.</span>
<form action="#" method="GET" style="margin-top: 20px">
<!-- <label for="reference">Customer Load Number:</label> -->
<input type="text" id="reference" name="reference" placeholder="Customer Load Number" value="<?php echo !empty($_GET['reference']) ?htmlspecialchars($_GET['reference']) :''; ?>" required="" />
<!-- <label for="zipcode">Pickup Zipcode:</label> -->
<input type="text" id="zipcode" name="zipcode" placeholder="Pickup zipcode" value="<?php echo !empty($_GET['zipcode']) ?htmlspecialchars($_GET['zipcode']) :''; ?>" required="" />
<input type="submit" name="submit" value="Submit" style="margin-top: 20px; justify-content: center" />
</form>
</div>
</div>
然后,一旦输入客户装载编号和邮政编码,用户提交表单,它将装载并执行一些PHP w/HTML输出:
<?php if (isset($_GET['submit'])) {
$reference = sanitize_text_field($_GET['reference']);
$zipcode = intval($_GET['zipcode']);
$curl = curl_init();
$link = "https://example.net/customer-portal/tracking?reference=$reference&postalCode=$zipcode";
curl_setopt_array($curl, [
CURLOPT_URL => "$link",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Reference\"\r\n\r\n2889615\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"postalCode\"\r\n\r\n35956\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--",
CURLOPT_HTTPHEADER => [
"AccountId: si",
"Authorization: Basic d2Vic-----",
"Postman-Token: 0fdfa047-----",
"cache-control: no-cache"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$response = json_decode($response);
if ($response->Data === null) {
$message =
'<p style="text-align: center; margin-top: -50px; margin-bottom: 60px;">The provided Customer Load Number and <br/>Pickup Zipcode combination could not be validated.</p>';
echo $message;
} else {
$data = $response;
}
}
?>
- 问题**:
当用户提交表单时,它将构建以下参数并提交表单:www.example.comhttps://example.com.test/customers/?reference=P337574&zipcode=50219&submit=Submit#
我怎么能有提交表单的选项,但排除submit
参数,所以我想使用以下参数提交表单:https://example.com.test/customers/?reference=P337574&zipcode=50219
当我当前删除提交时,表单不会自动提交。
我试过输入submit
参数,也试过删除它。
1条答案
按热度按时间wgx48brx1#
删除“提交”按钮中的“名称”属性。提交表单时将包含带有名称的元素。请参见此处:https://www.w3schools.com/tags/att_input_name.asp
根据备注添加附加信息。
通常,如果你需要检查一个按钮是否被点击,你会使用POST。POST不会在URL上附加字段。一个用户在这篇文章中发表了一个很好的解释,并包括了一个如何在需要时使用GET的选项(引用如下):
〈form method=“GET”怎么样?我们可以使用$_SERVER ['REQUEST_METHOD']=== 'POST'来检测表单POST的原因是POST是有意的,而GET不是- GET是默认的。所以,使用$_SERVER ['REQUEST_METHOD']=== 'GET'是不可靠的,因为有人可能只是在加载页面/url,而实际上并没有提交表单。因为在这两种情况下浏览器都会使用GET,因为它是默认的请求方法。
有很多不同的方法可以可靠地检测GET表单提交,但是一个简单而可靠的方法是添加到表单中,然后不使用if($_SERVER ['REQUEST_METHOD']=== 'POST'),而是使用if(isset($_GET ['submitted']))来检测表单提交。检测哪个按钮被按下的代码与POST的代码相同。
How can I tell which button was clicked in a PHP form submit?
你也可以解析URL来移除参数,这是一种肮脏的黑客行为,但会起作用。Strip off specific parameter from URL's querystring
或者你可以更新你的表单“action”,在提交时跳转到另一个PHP页面。这将被视为你的“if”语句,你可以在该页面中嵌入你的PHP代码。https://www.w3schools.com/php/php_forms.asp