実現したいこと
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を勉強しております。
お手数おかけしますが、ご教示よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/08 05:25
2023/03/08 06:47
2023/03/08 08:23