###前提・実現したいこと
PHPで簡易電卓(四則計算のみ)を作っています。
htmlの画面で数字を入力しなかった場合のエラーメッセージが表示されません。
記号のみ選択した場合や記号と数字を片方だけ入力した場合、エラーメッセージが表示されません。何も選択せずに「計算」を押すと記号に対してのみエラーが表示されます。
###該当のソースコード
HTML
1<!DOCTYPE html> 2 <html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>calc.html</title> 6 </head> 7 <body> 8 <form action="calc0927-5.php" method="post"> 9 <input type= "number" name="left" size=3> 10 11 <select name="symbol" size=1> 12 <option value="">選択してください</option> 13 <option value="+">+</option> 14 <option value="-">-</option> 15 <option value="×">×</option> 16 <option value="÷">÷</option> 17 </select> 18 19 <input type="number" name="right" size=3> =? 20 <br> 21 <input type="submit" value="計算"> 22 <input type="reset" value="クリア"> 23 24 </form> 25 </body> 26</html>
###該当のソースコード
php
1<?php 2 3if(isset($_POST['left']) and isset($_POST['right'])){ 4 echo htmlspecialchars($_POST['left'], ENT_QUOTES, 'UTF-8'); 5 echo '<br>'; 6 echo htmlspecialchars($_POST['right'], ENT_QUOTES, 'UTF-8'); 7 echo '<br>'; 8 9 if(isset($_POST['symbol'])){ 10 $symbol = $_POST['symbol']; 11 12 switch($symbol){ 13 case "": 14 $answer='error'; 15 echo '<p>エラー</p>'; 16 echo '計算記号を選択してください'; 17 echo '<br>'; 18 19 case "+": 20 $answer=$_POST['left']+$_POST['right']; 21 break; 22 23 case "-": 24 $answer=$_POST['left']-$_POST['right']; 25 break; 26 27 case "×": 28 $answer=$_POST['left']*$_POST['right']; 29 break; 30 31 case "÷": 32 33 if($_POST['right']==0 and $_POST['symbol']=='÷'){ 34 $answer='error'; 35 echo '<p>エラー</p>'; 36 echo '0以外の数字を入れてください'; 37 echo "<br>"; 38 39 }else{ 40 $answer=$_POST['left']/$_POST['right']; 41 42 }break; 43 default: 44 } 45 //計算結果を表示 46 echo ($_POST['left'].' '.$_POST['symbol'].' '.$_POST['right'].' '.'='.' '.$answer); 47 48 }else{ 49 $answer='error'; 50 echo '<p>エラー</p>'; 51 echo '計算記号を選択してください'; 52 echo '<br>'; 53 } 54}else{ 55 $answer='error'; 56 echo '<p>エラー</p>'; 57 echo '値を入力してください'; 58 echo '<br>'; 59} 60?>
###試したこと
htmlspecialchars関数の使いどころが間違っているのかもしれません。しかし、そもそもこの関数の使いどころがいまいち理解しきれちないです。悪質な書き込みを防ぐためだというのはわかるのですが…
用意してある四つのエラーメッセージのうち残りの三つはきちんと動きました。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/27 16:07