我的表格是这样的:
<form class="registration-form" name="applicationForm" action="<?=$_SERVER['PHP_SELF']?>" method="get">
<div class="form-top"><h3 class="col-md-12 col-md-offset-4">Application for employment</h3> </div>
<div class="col-md-12 col-sm-12 col-lg-6">
<div class="col-md-12">
<div class="form-group">
<label for="inputFirstName">First Name</label>
<input type="text" class="form-control required" id="inputFirstName" placeholder="First Name" name="driver[first_name]" />
</div>
<div class="form-group">
<label for="inputMiddle">Middle Initial</label>
<input type="text" class="form-control" id="inputMiddle" placeholder="Middle Initial" name="driver[middle]" />
</div>
<div class="form-group">
<label for="inputLastName">Last Name</label>
<input type="email" class="form-control required" id="inputLastName" placeholder="Last Name" name="driver[last_name]" />
</div>
<div class="form-group">
<label for="inputDob">Date of Birth</label>
<input type="email" class="form-control required datepicker" id="inputDob" placeholder="MM/DD/YYYY" name="driver[dob]" />
</div>
但是,当我按下提交按钮后尝试显示值时,它不会提交并且不会显示值。我有类似的东西用于显示值:
$form_names = array_keys($_GET);
$form_values = array_values($_GET);
if(isset($_GET["submit"]))
{
echo "<h3>Your Input:</h3>";
for ($i = 0; $i < sizeof($_GET); $i++) {
echo "<p>".$form_names[$i]." = " . $form_values[$i] . "</p>";
}
}
请告诉我我的代码中缺少什么或有什么问题,因为它不会提交并显示值。注册后它也不会发送电子邮件。
答案 0 :(得分:2)
您为代码发布的内容有很多错误。
首先,如果您的代码没有结束</form>
标记,那么您需要添加它。
您还没有为if(isset($_GET["submit"]))
设置名称属性,例如带有匹配名称属性的提交按钮,因此该条件语句中的任何内容都不会启动。
<input type = "submit" name = "submit" value = "Submit">
您还需要将driver
属性添加到$_GET
数组。
$form_names = array_keys($_GET['driver']);
$form_values = array_values($_GET['driver']);
并且在循环中也是:
for ($i = 0; $i < sizeof($_GET['driver']); $i++)
另外,您的Last Name
和Date of Birth
输入分别使用<input type="email"
而不是text
和date
。
如果有人试图将数据输入到电子邮件输入中以及现在的方式,那么它就会失败并且日期输入也会相同。
“注册后也不会发送电子邮件。”
我在您发布的代码中没有看到任何邮件功能,因此您需要对其进行排序。
如果您正在使用的话,请参阅mail()
上的手册:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
<强>脚注:强>
我建议您不要使用GET而是使用POST,因为您似乎可能正在发送敏感信息(通过网络)。使用POST更安全。
因此,您可以将$_GET
的所有实例更改为$_POST
,包括表单方法,您将获得相同的结果。
我回答的结果示例:
first_name = John middle = Q last_name = Public dob = 01/01/1984