戻る

受け取ったデータを数値として処理する

intval()関数、doubleval()関数

HTMLフォームのデータ入力画面では、ユーザがどのような値を入力するか分かりません。数字だけを入力すべき欄にアルファベットを入力してしまう場合もあります。悪意のあるユーザがWebアプリケーションのデータベースを攻撃しようと、わざとSQL文を挿入してくるかもわかりません。

このようなケースへの対策として、送信されたデータの内容を厳密に確認して、その後に次の処理を実行する方法が考えられます。一方、数字だけで構成されるべきデータの場合は、強制的に数字に変換してしまう方法もあります。

この例ではintval()関数によって、受け取ったデータを強制的に整数値に変換しています。そのデータに数字以外の文字が含まれていれば、この関数は「0」を返します。後処理が「0」で動作しないことが前提ですが、ケースによってはこれだけで不正データによる問題を回避できる場合があります。整数値よりも大きな値、あるいは少数へ変換するには、doubleval()関数を使います。

<?php
header("Content-type: text/html; charset=utf-8");

if(isset($_POST["btnExec"])){
	//受け取ったデータをそのまま表示
	echo $_POST["inputdata"] . "<br><br>";
	
	//受け取ったデータを半角化
	$rcvdata = mb_convert_kana($_POST["inputdata"], "a");
	
	//文字列を数値として処理
	echo intval($rcvdata) . "<br><br>";
}
?>
<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
テキストボックスに値を入力して「送信」ボタンをクリックしてください。
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
<input size="40" type="text" name="inputdata">
<input type="submit" name="btnExec" value="送信">
</body>
</html>

inserted by FC2 system