繁体   English   中英

验证表单文本输入是否为整数?

[英]Validating form text input as an integer?

我[认为?]通过$ _POST发送的所有数据都是字符串。 因此,如果我希望用户输入一个整数(在我的示例中,我要在一个框中要求用户输入小时,在另一个框中要求用户输入分钟。对于他们来说2.5小时22分钟是没有意义的),我确认吗?

我已经有一个解决方案是这样的:

if(!filter_input(INPUT_POST, 'hours', FILTER_VALIDATE_INT)) {}

还有其他/更好的方法吗?

由于$ _POST数据是字符串,所以is_numeric / is_int失败。 转换值可能会丢失数据/带来自己的问题。

这是确定输入是否为有效整数的好方法。

您是正确的, $_POST填充的每个值都是一个字符串。

在将整数发送到PHP之前,先验证整数(通过Javascript / Jquery /另一个库)客户端。 PHP中的is_numeric应该用于测试字符串变量是否为..好吧,数字! 通常,这是测试$_POST/$_GET变量的数字值而无需强制转换的标准方法。

每个$_POST变量都是一个字符串,并且无需将字符串显式转换为INT,我认为您的方法是一个很好的解决方案。

您应该使用验证库。 使用Respect \\ Validation的示例:

<?php

use Respect\Validation\Validator as v;

$isFormValid = v::key('hours', v::int()->between(0,23))
                ->key('minutes', v::int()->between(0,59))
                ->validate($_POST);

$isFormValid变量根据结果将为truefalse

如果您想自己做, Respectint验证器将使用以下逻辑:

 is_numeric($input) && (int) $input == $input;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM