在注册表单中使用数组,但未提交表单中的值

时间:2016-01-16 20:35:29

标签: php arrays forms registration

我的表格是这样的:

<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>";




      }   
}

请告诉我我的代码中缺少什么或有什么问题,因为它不会提交并显示值。注册后它也不会发送电子邮件。

1 个答案:

答案 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 NameDate of Birth输入分别使用<input type="email"而不是textdate

如果有人试图将数据输入到电子邮件输入中以及现在的方式,那么它就会失败并且日期输入也会相同。

  

“注册后也不会发送电子邮件。”

我在您发布的代码中没有看到任何邮件功能,因此您需要对其进行排序。

如果您正在使用的话,请参阅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