PHP 型判定 入力フォームの検証処理

実現したいこと

PHPのフォームから入力したfloat型データを検証クラスで判定したい

前提

Eclipse環境でPHPの検証クラスを作成していますが、is_float関数で浮動小数型の判定がされません

該当のソースコード

【data_form.php_フォーム画面(該当箇所抜粋)】

<html> <head> <meta charset="UTF-8" /> <title>点検登録</title> <link type="text/css" rel="stylesheet" href="../css/main.css" /> </head> <body> <h3>点検登録</h3> <h4>基本情報</h4> <a href="month_select_form.php">点検日検索画面へ戻る</a> <ul id="error_summary"> <?php  if (isset($_SESSION['monthdata_errors'])) { foreach ($_SESSION['monthdata_errors'] as $error) { ?> <li><?=$error?></li> <?php } } unset($_SESSION['monthdata_errors']); ?> </ul> <form method="POST" action="data_process.php"> <div class="container"> <label for="">温度:</label><br> <input type="text" id="temperature" name="temperature" size="15" value="<?=$temperature?>" /> </div> <input type="submit" value="登録" /> </form> </body> </html>

【data_process.php(該当箇所抜粋)】

<?php session_start(); if(isset($_POST['temperature'])===TRUE){$_SESSION['temperature'] = e($_POST['temperature']);} $errors=validate_content($_SESSION); if(count($errors)>0){ $_SESSION['monthdata_errors']=$errors; $errors=null; $header('Location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']).'/data_form.php'); }

【data_process.phpからセッションで値を渡し、検証するコード(該当箇所抜粋)】

function validate_content($data_assoc){ $errors=[]; if (!is_float($data_assoc['temperature'])) { $errors[]="temperatureは浮動小数型で指定してください。"; } $errors=$v(); return $errors; }

<エラー画面>

イメージ説明

試したこと

gettype関数でvalidate_contentクラスに渡った時の型を調べたところ、string型になっていました。
Formから渡されたデータはすべてstring型になるようですが、int型はctype_digit関数で整数値と判定できるのに
float型は判定する方法はないのでしょうか?

補足情報(FW/ツールのバージョンなど)

PHP 7.4.33
Apache/2.4.54 (Win64)
Eclipse Version: 2022-12 (4.26)
Windows 11 Pro(2022年10月にWindows10よりバージョンアップしました)

プログラムの初心者で、PHPを勉強しております。
お手数おかけしますが、ご教示よろしくお願い致します。

コメントを投稿

0 コメント