Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否将表单文本输入验证为整数?_Php_Validation - Fatal编程技术网

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

Php 是否将表单文本输入验证为整数?,php,validation,Php,Validation,我[认为?]通过$\u POST发送的所有数据都是一个字符串。因此,如果我想让用户根据我的示例输入一个整数,我会要求用户在一个框中输入小时,在另一个框中输入分钟。对他们来说,说2.5小时22分钟是没有意义的,我怎样才能证实这一点 我已经有了这样一个解决方案: if(!filter_input(INPUT_POST, 'hours', FILTER_VALIDATE_INT)) {} 有没有其他/更好的方法 is_numeric/is_int失败,因为$\u POST数据是字符串。强制转换值可能

我[认为?]通过$\u POST发送的所有数据都是一个字符串。因此,如果我想让用户根据我的示例输入一个整数,我会要求用户在一个框中输入小时,在另一个框中输入分钟。对他们来说,说2.5小时22分钟是没有意义的,我怎样才能证实这一点

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

if(!filter_input(INPUT_POST, 'hours', FILTER_VALIDATE_INT)) {}
有没有其他/更好的方法


is_numeric/is_int失败,因为$\u POST数据是字符串。强制转换值可能会丢失数据/带来自身的问题。

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


正确的说法是,$\u POST中填充的每个值都将是一个字符串。

在将整数发送到PHP之前,通过Javascript/Jquery/另一个库客户端验证该整数。在PHP中,应该用于测试字符串变量是否为。。嗯,数字!这通常是在不强制转换的情况下测试$\u POST/$\u GET变量的数值的标准方法


每个$\u POST变量都是一个字符串,如果不显式地将所需字符串转换为INT,我认为您的方法是一个很好的解决方案

您应该使用验证库。样本使用:

<?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);
 is_numeric($input) && (int) $input == $input;