StringCheck 1~4段階完了

This commit is contained in:
2026-10-16 15:00:54 +09:00
parent 7e5bc1bf12
commit e639aa892c
2 changed files with 40 additions and 24 deletions

View File

@@ -24,31 +24,33 @@
<body>
<?php
// ここにPHPのコードを記述してください
// POSTリクエストがあった場合に処理を実行
$message = "";
$errorMessage = "";
$successMessage = "";
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$inputResult = inputCheck($_POST['topic']);
$errorMessage = $inputResult["???"];
$message = $inputResult["???"];
}
function inputCheck($checkValue)
{
// 以下の変数はローカルスコープ。30行目の$errorMessageとは別物だよ。あれはグローバルスコープ。
$errorMessage = "";
$inputValue = null;
// POSTリクエストがあった場合、
if ($_SERVER["REQUEST_METHOD"] === "POST") {
// POST変数を用いて、送信されたデータを取得して、$topic変数に代入する
// 送信されたデータを取得した$topic変数に含まれたホワイトスペースを取り除く
$topic = trim($_POST["topic"]);
if (!empty($checkValue)) {
// 以下に文字列チェックの処理を記述してください
//$topicの情報が空欄ではない場合、
if (!empty($topic)) {
// 投稿が成功した場合、
$successMessage = "投稿成功しました。";
//$topicの情報が空欄の場合、
} else if (empty($topic)) {
$errorMessage = "入力がありません。";
// 文字数が21字以上の場合、
// 文字列から配列に変換できる関数(explode)を使用
}
$words = explode("\n", $topic);
// 一行ずつ取り出す
foreach ($words as $line) {
// カウント(mb_strlenを用いる)して21字以上の場合、
if (mb_strlen($line, 'UTF-8') >= 21)
$errorMessage = "21文字を超えています:対象行の内容";
}
return array(
"errorMessage" => $errorMessage,
"message" => $inputValue
);
}
?>
@@ -69,7 +71,9 @@
src="image/itc.png" width="40" height="40"></label>
<div class="col-xs-10">
<textarea name="topic" id="topic" rows="2"
placeholder="いまなにしてる?" class="form-control"></textarea>
placeholder="いまなにしてる?" class="form-control">
</textarea>
</div>
</div>
<div class="form-group">
@@ -98,10 +102,22 @@
</div>
<div class="panel-body">
<?php
if (!empty($message)) {
// 変数topicがなにも入ってない場合
if (!empty($topic)) {
// 投稿メッセージをここで表示
// explodeで改行ごとに分割する
$topics = explode("\n", $topic);
// 一行ずつ取り出す
foreach ($topics as $line) {
// 出力
echo htmlspecialchars($line, ENT_QUOTES, 'UTF-8') . "<br>";
}
} else {
echo $err_msg;
echo "まだ投稿はありません。";
// テキストエリアに何も入力せず投稿した場合、
// 「入力がありません。」 とエラーメッセージを表示させてください
}
?>
</div>