質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

580閲覧

フォームで未入力チェック

takashi5

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/03/01 08:18

フォーム画面でコメントと名前が未記入だった場合にアラームが出るようにしたくて、emptyを
使用し実装できたのですが、疑問ができたのでよろしければお答えいただけたらと思い投稿
いたしました。

PHP

1<?php 2$name = ''; 3$comment = ''; 4$log = date('Y m/d H:i:s') . "\n"; 5$file = './file.txt'; 6$data = []; 7 8if($_SERVER['REQUEST_METHOD'] ==='POST') { 9 if(isset($_POST['name']) === true) { 10 $name = $_POST['name'] . "\n" ; 11 if(isset($_POST['comment']) === true) { 12 $comment = $_POST['comment'] . "\n" ; 13 if(($fp = fopen($file, 'w')) !== false) { 14 while(($tmp = fgets($fp)) !== false) { 15 $data[] = htmlspecialchars($tmp,ENT_QUOTES,'UTF-8'); 16 } 17 18 if(mb_strlen($comment) >= 100) { 19 print '100文字以内にして下さい'; 20 }else if (empty ($_POST['comment']) === true){ 21 print 'コメントを入力してください' . "\n"; 22 }else { 23 print $comment; 24 } 25 if(mb_strlen($name) >= 20) { 26 print '20文字以内にして下さい'; 27 }else if (empty($_POST['name']) === true){ 28 print 'お名前を入力してください' . "\n"; 29 }else { 30 print $name; 31 } 32 33 if(fwrite($fp,$name . $log . $comment) === true) { 34 print $name . "\n"; 35 print $log . "\n"; 36 print $comment . "\n"; 37 } 38 39 } 40 41 fclose($fp); 42 } 43 } 44} 45?>

HTML

1 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5 <meta charset="UTF-8"> 6 <title></title> 7</head> 8<body> 9 <pre> 10 <form method="post" action="./bbs.php"> 11 <input type="text" name="name" value=""> 12 <textarea rows="10" name="comment"></textarea> 13 <input type="submit" value="コメント送信"> 14 </form> 15 16 </pre> 17</body> 18 19</html> 20

疑問は2点あります。1つ目はemptyを使用した時に$comment,$nameで実装できないのは
なぜなのでしょうか?
2点目は、(mb_strlen($comment) === 0),(mb_strlen($name) === 0)で試したときにも実装できませんでした。
これは、テキストに値が入っていない場合は変数が効いていないという解釈でよいのでしょうか?
よろしければお手数ですが、お答えいただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2020/03/01 08:30

試したコードも質問文に追記してください。
guest

回答1

0

ベストアンサー

1つ目はemptyを使用した時に$comment,$nameで実装できないのは

なぜなのでしょうか?

$comment = $_POST['comment'] . "\n" ;で改行コードを強制的に付与しているため。

2点目は、(mb_strlen($comment) === 0),(mb_strlen($name) === 0)で試したときにも実装できませんでした。

これも同様です。
それぞれの判定の前にvar_dump($comment);と追記して、$commentに何が格納されているか確認してみてください。

投稿2020/03/01 08:41

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takashi5

2020/03/01 08:54

ありがとうございます。0にならないのですね。
tanat

2020/03/01 08:57

そうですね。改行コードが連結されているので常に1以上になるはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問