簡単なバリデーションを実装したのですが、HTMLでの
予算:<input type="number" min="1" max="9999" name="budget">円
この制限?が働いてここでは例えば予算を10000円としたらオレンジ色でその数値が入力できない旨のエラーが出るのですが、同じくphpの方で正規表現で表している10000円が入力されたときにバリデーションが実行されるものとの判別が出来ません。この判別法が知りたく質問させていただきました。
ディレクトリ構成はC:\xampp\varidation.php,C:\xampp\htdocs\Recipes\add.phpとなっていて、varidation.phpはドキュメントルートより上の階層に作成しています。
varidation.php↓
varidation.php
1<?php 2if(!preg_match('/\A[[:^cntrl:]]{1,100}+\z/u',$_POST['recipe_name'])){ 3 throw new Exception('料理名を正しく入力してください。'); 4} 5if(!preg_match('/\A[123]\z/',$_POST['category'])){ 6 throw new Exception('カテゴリを正しく入力してください。'); 7} 8if(!preg_match('/\A[123]\z/',$_POST['difficulty'])){ 9 throw new Exception('難易度を正しく入力してください。'); 10} 11if(!preg_match('/\A[0-9]{1,4}+\z/',$_POST['budget'])){ 12 throw new Exception('予算を正しく入力してください。'); 13} 14if(!preg_match('/\A[\r\n[:^cntrl:]]{1,200}+\z/u',$_POST['howto'])){ 15 throw new Exception('作り方を正しく入力してください。'); 16} 17 18 ?>
form.html↓
form.html
1<form method="post" action="add.php"> 2 料理名:<input type="text" name="recipe_name" required><br> 3 カテゴリ: 4 <select name="category"> 5 <option value="">選択してください</option> 6 <option value="1">和食</option> 7 <option value="2">中華</option> 8 <option value="3">洋食</option> 9 </select> 10 <br> 11 難易度: 12 <input type="radio" name="difficulty" value="1">簡単 13 <input type="radio" name="difficulty" value="2" checked>普通 14 <input type="radio" name="difficulty" value="3">難しい 15 <br> 16 予算:<input type="number" min="1" max="9999" name="budget">円 17 <br> 18 作り方: 19 <textarea name="howto" cols="40" rows="4" maxlength="150"></textarea> 20 <br> 21 <div class="d-flex justify-content-center"> 22 <input type="submit" value="送信"> 23 </form>
add.php↓
add.php
1<?php 2//$user = ""; 3 4$user = "Heroku"; 5//$pass = ""; 6$pass = "Heroku"; 7 8 9 10try{ 11 include_once '\xampp\varidation.php'; 12 $dbh = new PDO('mysql:host=heroku;dbname=heroku;charset=utf8mb4', 13 $user,$pass); 14 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 15 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 16 17 echo "の登録が完了しました。<br>"; 18 echo "<a href='index.php'>トップページへ戻る</a>"; 19} catch (Exception $e) { 20 echo "エラー発生:" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>"; 21 die(); 22} 23 24 25 ?> 26
実行環境:Heroku
データベース接続先:clearDB
回答3件
あなたの回答
tips
プレビュー