我有大量的帖子需要检查,如果已经设置的话。
if
(
isset($_POST['id']) && isset($_POST['type']) && isset($_POST['typeid']) && isset($_POST['name'])
&& isset($_POST['level']) && isset($_POST['thumbnail']) && isset($_POST['def']) && isset($_POST['resist'])
&& isset($_POST['health']) && isset($_POST['mana']) && isset($_POST['stamia']) && isset($_POST['str'])
&& isset($_POST['dex']) && isset($_POST['rec']) && isset($_POST['int']) && isset($_POST['wis']) && isset($_POST['luc'])
&& isset($_POST['information']) && isset($_POST['gold']) && isset($_POST['tradeable']) && isset($_POST['faction'])
&& isset($_POST['category'])
)
{
我试过这样做:
if (isset($_POST)) {
但后来我忘了填写一些字段,并没有抛出任何错误并进行处理。
我的问题:
如何检查所有这些帖子是否设置没有乱?有什么更短的方法吗? 感谢。
答案 0 :(得分:5)
$requiredFields = array('id', 'type', ...);
if (array_diff_key(array_flip($requiredFields), $_POST)) {
die('Not all fields were posted');
}
if (count(array_filter($_POST)) != count($_POST)) {
die('Some fields were empty');
}
答案 1 :(得分:1)
你不需要那个。表格值默认设置,保存为复选框 所以,大多数时候你根本不需要这种检查。
PHP [正确配置]足以捕获缺少的字段。它会告诉您在表单中错过或拼写错误的字段。虽然您当前的方法不会让您知道哪个特定字段是错误的。
因此,不要编写无用的代码 - 只需让PHP处理这个案例。
你想检查一些值是否由空字符串(或空格)组成 - 这是另一回事。你可以使用某种循环。像
if (count(array_filter($_POST,'trim')) != count($_POST))
答案 2 :(得分:0)
创建一个数组以保留所有字段:
$fields = array('id', 'type', 'typeid');
循环遍历此数组:
foreach ($fields as $field) {
if (! isset($_POST[$field])) {
// here you have some missed data
}
}
答案 3 :(得分:-1)
使用类似的东西:
将所有帖子密钥放在一个数组中,并在for语句中检查所有密钥是否已设置:
function checkPost()
{
for ($i = 0 ; $i < count($array) ; $i++)
{
if (!isset($_POST[$array[$i]])
return false;
}
return true;
}
答案 4 :(得分:-2)
您可以使用foreach循环,如下所示。使用计数功能进行测试。您还需要测试跨站点脚本和sql注入,所以请记住验证帖子值
foreach ($_POST as $key => $value ) {
if($value == '') {
$errors[] = 1; //adds a value to the errors array if value is not populated
}
}
//check if the errors array is populated.
if( count($errors) > 0 ) {
// don't submit
} else {
//submit
}