入力された値の変数と型
型
- intval関数(文字列を整数に変換する)- 小数点以下は切り捨て
- ユーザーが入力したデータは「文字列型」です
- 「文字列型」のまま四則演算ができないため「整数型」に変換します
《sum.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>変数と型</title> </head> <body> <form action="result.php" method="post"> <p>数字1 <input type="text" name="val1"></p> <p>数字2 <input type="text" name="val2"></p> <p><input type="submit" value="結果"></p> </form> </body> </html>
《result.php》
<?php $val1 = intval($_POST[ 'val1' ]); $val2 = intval($_POST[ 'val2' ]); $result = $val1 + $val2; $sum = $val1 . ' + ' . $val2 . ' = ' . $result; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>変数と型</title> </head> <body> <h1><?php echo $sum; ?></h1> </body> </html>
isset()
- 変数が存在しているかどうかの判別を行います
《inch_input.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>inchをcmに変換</title> </head> <body> <form action="inch_output.php" method="post"> <p>インチの半角数字を入力してください。</p> <p><input type="text" name="inch_unit"></p> <p><input type="submit" value="変換"></p> </form> </body> </html>
《inch_output.php》
<?php if ( !isset($_POST[ 'inch_unit' ]) ) { // 値が入力されていない場合(フォームを表示) header( 'Location:inch_input.php' ); exit; } else { $inch = $_POST[ 'inch_unit' ]; $inch = floatval( $inch ); // 文字列から数値へ変換 $cm = 2.54 * $inch; // インチからセンチへの変換 $result = '結果 ' . $inch . ' inch = ' . $cm . ' cm'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>inchをcmに変換</title> </head> <body> <h1><?php echo $result; ?></h1> </body> </html>
PHPでリダイレクトをする
- もし変数の値が入っていなかったら
- header関数とLocation
- 入力画面に戻す(確認画面からの閲覧ができないようにする)
注意点
- 前後でechoを書いていないか
- ファイル頭のphpタグの前に空白・改行が混じってないか
- header関数を呼んだ後、すぐにexit関数で処理を終了しているか
<?php if( !isset($_POST[ 'your_name' ]) ){ header( 'Location: index.php' ); exit; } ?>
《check.php》
<?php if( !isset($_POST[ 'your_name' ]) ){ header( 'Location: index.php' ); exit; } $name = $_POST[ 'your_name' ]; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>確認ページ</title> </head> <body> <h1>入力内容の確認</h1> <p>あなたのお名前は、<?php echo $name; ?>ですね。</p> </body> </html>