我在过去的几周里一直在学习PHP,我承认在我的阅读之前有点尝试从头开始创建一个表单并在实践中计算逻辑。初学者苦于PHP表单验证
我试图在将用户发送到'提交成功'页面(以及数据到服务器)之前,使用PHP验证表单数据(最初从'name'字段开始)。
到目前为止我设法离开行动得到表单验证工作=“” - 空白像这样(而不是使用PHP_SELF我读过的安全风险),但这里的问题是即使正确填写表格,由于没有采取任何行动,它也不会出现在任何地方。相反,我设法将用户发送到'提交成功'页面,其中action = handler.php - 但这样做会忽略我的PHP表单字段验证代码。
我觉得我错过了一些很明显的东西,因为我不确定如何结合PHP验证,将用户发送到“提交成功”页面,并将数据存储在某处。
我capture.php表单页面顶部的PHP读取:
<?php
$name_error = '';
if(isset($_POST["submit"]))
{
if(empty($_POST["name"]))
{
$name_error = "Please Enter Name";
}
else
{
if(!preg_match("/^[a-zA-Z ]*$/", $_POST["name"]))
{
$name_error = "Only Letters and whitespace";
}
}
}
?>
- 这将扩大至包括其他类型的表单字段的时间。
我在capture.php HTML:
<body class="capture">
<!--action code #1-->
<form action="" method="post" enctype="multipart/form-data">
<!--action code #2-->
<!--<form action="handler.php" method="post" enctype="multipart/form-data">-->
<div class="col-lg-6 col-md-6 col-sm-6">
<div class="form-inline">
<div class="form-group">
<label for="name">Your name<span class="text-danger">*</span></label><br/>
<input class="form-control" type="text" placeholder="e.g. Joe Bloggs" name="name" maxlength="70" />
<span class="text-danger"><?php echo $name_error; ?></span>
</div>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6">
<div class="form-group">
<label for="games">Your choice</label>
<select class="form-control" name="games">
<option> -- </option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6">
<input id="btn-prev" name="prev" type="prev" value="Prev">
</div>
<div class="col-lg-6 col-md-6 col-sm-6">
<input id="btn-next" name="submit" type="submit" value="Next"></div>
感谢所有帮助提供
我认为正在进行验证的页面从不会看到POST数据。将表单验证移动到'handler.php'(在验证错误时重定向)或者将表单元素的'action'设置为''capture.php''。 – amphetamachine