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

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

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

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

2172閲覧

PHPで、echoした変数が表示されない

miyaken0805

総合スコア1

PHP

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2021/05/23 08:56

前提・実現したいこと

PHPで、メールアドレスとパスワードを入力し登録ボタンを押すと、入力された値に問題ないか確認し、問題なければ「登録完了」、それ以外はエラーメッセージを表示するページを作成しています。

発生している問題

**html内で、echoした時、$messageが表示されません。(コード下から8行目です)** 入力した値に問題がなかった時の処理で、$messageの内容がechoされずに困っております。 原因がわかる方がいらっしゃいましたら、ご教授いただけると有り難いです。

該当のソースコード

php

1<?php 2$mail = ''; 3$passwd = ''; 4$message = ''; 5$errors = []; 6 7if (isset($_POST['mail']) === TRUE && isset($_POST['passwd']) === TRUE) { 8 // 半角全角空白をエラー扱いにする 9 $mail = preg_replace( '/\A[\x00\s]++|[\x00\s]++\z/u', '', $_POST['mail']); 10 $passwd = preg_replace( '/\A[\x00\s]++|[\x00\s]++\z/u', '', $_POST['passwd']); 11 12 // エラーバリデーション 13 if (mb_strlen($mail) === 0) { 14 $errors[] = 'メールアドレスを入力してください'; 15 } else if (preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/', $mail) === 0) { 16 $errors[] = 'メールアドレスの形式が正しくありません'; 17 } 18 if (mb_strlen($passwd) === 0) { 19 $errors[] = 'パスワードを入力してください'; 20 } else if (preg_match('/\A[a-z\d]{6,18}+\z/i', $passwd) === 0) { 21 $errors[] = 'パスワードは半角英数記号6文字以上18文字以下で入力してください'; 22 } 23 //入力が正しかった場合 24 if (count($errors) === 0) { 25 $message = '登録完了!'; 26 var_dump($errors); 27 var_dump($message); 28 } 29} 30 31 32?> 33 34<!DOCTYPE html> 35<html lang="ja"> 36<head> 37 <meta charset="UTF-8"> 38 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 39 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 40 <title>課題2</title> 41 <style type="text/css"> 42 .block { 43 display:block; 44 margin-bottom: 10px; 45 } 46 </style> 47</head> 48<body> 49 <form method="post"> 50 <label for="mail">メールアドレス</label> 51 <input type="text" class="block" id="mail" name="mail" value="<?php if (isset($mail) === TRUE) {echo $mail;} ?>"> 52 <label for="passwd">パスワード</label> 53 <input type="password" class="block" id="passwd" name="passwd" value="<?php if (isset($passwd) === TRUE) {echo $passwd;} ?>"> 54 <?php 55 if ($errors > 0) { 56 foreach ($errors as $value) { 57 ?> 58 <p><?php echo $value; ?><p> 59 <?php 60 } 61 ?> 62 <?php 63 } else { 64 ?> 65 <p><?php echo $message; ?></p> 66 <?php 67 } 68 ?> 69 <button type="submit">登録</button> 70 </form> 71</body> 72</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

php

1if ($errors > 0) {

は、

php

1if (count($errors) > 0) {

ではないでしょうか?

投稿2021/05/23 09:02

yh1224

総合スコア653

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

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

miyaken0805

2021/05/23 09:13 編集

初歩的な記述ミスでした。。。 回答ありがとうございます! ばっちり表示されました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問