我想知道是否有办法检查用于$ _POST信息的输入类型。我想然后使用该类型进行验证。例如,如果输入类型=“text”,那么我希望能够为该类型的输入创建某些验证。
所以这是我生成表单的代码:
$fields = array(
array(
'label' => 'Name:',
'id' => $meta.'_nhm_lead_name',
'class' => 'field-name input', // optional
'wrapper_class' => 'four columns', // optional
'type' => 'text',
'required' => true,
),
)
这就是我生成html的方式:
public function make_fields(){
foreach($this->fields as $field => $value){
switch ($value['type']) {
case 'text':
$inputs .= '<li class="field '.$value['wrapper_class'].'">';
$inputs .= '<input type="text" name="'.$value['id'].'" class="'.$value['class'].'" />';
$inputs .= '<span class="error-message"></span>';
$inputs .= '</li>';
break;
}
}
}
答案 0 :(得分:1)
从$ _POST接收数据时,只传递值。但是,您可以使用这样的结构:
$Fields = array(
array('type' => 'text', 'name' => 'name'),
array('type' => 'text', 'name' => 'password'),
array('type' => 'number', 'name' => 'age'));
然后从中生成html表单。那么,您可以使用相同的变量来生成验证。但是,对于少数几种形式(引擎从数组生成表单输入)通常需要做太多工作,并且除非您已经使用具有此功能的框架,否则最好使其“硬编码”。
为了给你一个想法,表格就像:
<form method = "POST" action = "/post.php">
<?php foreach ($Fields as $Input) {
switch($Input['type']) {
case "text":
echo "<input type = 'text' name = '" . $Input['name'] . "'>";
break;
case "number":
echo "<input type = 'number' name = '" . $Input['name'] . "'>";
break;
}
}
?>
</form>
然后在post.php
:
foreach ($Fields as $Input) {
$Name = $Input['name'];
if (array_key_exists($Name, $_POST) &&
// You need to define this:
checktype($_POST[$Name], $Input['type'])) {
$Posted = $_POST[$Name];
}
}
答案 1 :(得分:0)
您可能希望根据$ _POST数组中键的名称来执行此操作。用户可以在不使用任何类型(例如Javascript)的情况下提交数据,从而使您要求做的事情变得不切实际。他们将发送没有类型的数据。
发布到您网页的数据可以来自任何地方。
为了重用,请为表单提交创建一个数据对象,其中包含每个输入的验证或编写验证函数。将其保留在服务器上,以便恶意用户无法操纵数据并更改验证提交内容的方式。
答案 2 :(得分:0)
您可以编写一个jQuery脚本来检查输入的prop
,然后将其添加到$_POST
。类似的东西:
HTML:
<form method="POST" action = "here.php" id="myform">
<input type="text" value="hello" id= "input1" />
</form>
jQuery的:
var input1type="&input1type=" + $('#input1').prop('type');
$.post('here.php', $('#myform').serialize()+input1type );
如果您不能影响原始HTML,最好使用此方法。
请注意,这很危险,您无法信任来自www的数据,但它可能在安全(例如内联网)系统中有效。