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

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

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

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

Q&A

解決済

3回答

1325閲覧

php コードがうまく反映されない

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2019/09/30 20:43

前提・実現したいこと

phpの学習中で、ユーザー登録システムについて学んでいます。

発生している問題・エラーメッセージ

登録のページで、未記入のまま送信すると、全ての項目(名前 email パスワード パスワード(再入力))において、「入力必須です」となるようにコードを書きました。しかし、一番上の名前の項目とパスワード(再入力)は「入力必須です」と表示され、他の項目は、他の内容が表示されます。var_dumpにて変数を確かめましたが 0 で、コードミスもないか確かめました。

エラーメッセージ ```![イメージ説明](b963d49aed96f18066139dac33712719.png) ### 該当のソースコード ```ここに言語を入力 コード<?php error_reporting(E_ALL); ini_set('display_error','On'); if(!empty($_POST)){ define('MSG01','入力必須です'); define('MSG02','EMAILの形式で入力してください'); define('MSG03','パスワードがあっていません'); define('MSG04','半角英数字のみご利用いただけます'); define('MSG05','6文字以上で入力してください'); $err_msg=array(); if(empty($_POST['name'])){ $err_msg['name']=MSG01; } if(empty($_POST['email'])){ $err_msg['email']=MSG01; } var_dump($_POST); if(empty($_POST['pass'])){ $err_msg['pass']=MSG01; } if(empty($_POST['pass_retype'])){ $err_msg['pass_retype']=MSG01; } $name=$_POST['name']; $email=$_POST['email']; $pass=$_POST['pass']; $pass_re=$_POST['pass_retype']; } //emailの形式ではない場合 if(!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/",$email)){ $err_msg['email']=MSG02; } //パスワードとパスワードの再入力があっていない場合 if($pass !== $pass_re){ $err_msg['pass']=MSG03; } //パスワードとパスワードの再入力が6文字以上でない場合 if(!preg_match("/^[a-zA-Z0-9]+$/",$pass)){ $err_msg['pass']=MSG04; } //パスワードとパスワードの再入力が6文字以上でない場合 if(mb_strlen($pass)<6){ $err_msg['pass']=MSG05; } } ?> <!doctype html> <html lang="ja"> <head> <meta charset="utf=8"> <title></title> <link href="https://fonts.googleapis.com/earlyaccess/nicomoji.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Kosugi+Maru&display=swap" rel="stylesheet"> <style> body { background: pink; text-align: center; margin: 0 auto; padding: 0 150px; width: 25%; } input { display: block; margin: 0 auto; } h1 { font-size: 40px; font-family: 'Kosugi Maru', sans-serif; } h2 { color: #545454; font-size: 20px; } input[type="text"] { width: 100%; height: 60px; padding: 5px 10px; font-size: 16px; margin: 10px; } input[type="password"] { width: 100%; height: 60px; padding: 5px 10px; font-size: 16px; margin: 10px; } input[type="submit"] { border: none; padding: 15px 30px; margin-bottom: 15px; color: whitesmoke; float: right; background: red; font-size: 16px; } input[type="submit"]:hover { background: yellow; cursor: pointer; } </style> </head> <body> <section> <h2>ユーザー登録</h2> <form method="post"> <span class="err_msg"><?php if(!empty($err_msg['name']))echo $err_msg['name'];?></span> <input type="text" name="name" placeholder="名前" value="<?php if(!empty($_POST['name']))echo $_POST['name'];?>"> <span class="err_msg"><?php if(!empty($err_msg['email']))echo $err_msg['email'];?></span> <input type="text" name="email" placeholder="email" value="<?php if(!empty($_POST['email']))echo $_POST['email'];?>"> <span class="err_msg"><?php if(!empty($err_msg['pass']))echo $err_msg['pass'];?></span> <input type="password" name="pass" placeholder="パスワード" value="<?php if(!empty($_POST['pass']))echo $_POST['pass'];?>"> <span class="err_msg"><?php if(!empty($err_msg['pass_retype']))echo $err_msg['pass_retype'];?></span> <input type="password" name="pass_retype" placeholder="パスワード" value="<?php if(!empty($_POST['pass_retype']))echo $_POST['pass_retype'];?>"> <input type="submit" value="送信"> </form> </section> </body> コード
```ここに言語名を入力 ソースコード

試したこと

変数の確認 コードミスのチェック

補足情報(FW/ツールのバージョンなど)

mac brackets
ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答3

0

学習はちゃんと体系的な知識が付けられる教材を選ぶべきです。
あと、開発環境をちゃんと整えましょう。
変数の推移が確認できるようステップ実行できる環境を整えておくと、学習が飛躍的に効率化できます。

投稿2019/09/30 21:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

しかし、一番上の名前の項目とパスワード(再入力)は「入力必須です」と表示され、他の項目は、他の内容が表示されます。

コードを見て言いたいことはたくさんありますが、まず質問の回答としては、

php

1 2 if(empty($_POST['pass'])){ 3 $err_msg['pass']=MSG01; 4 } 5 6```のあとに、 7```php 8//パスワードとパスワードの再入力が6文字以上でない場合 9if(mb_strlen($pass)<6){ 10 $err_msg['pass']=MSG05; 11 }

が来ていて、この条件一致により $err_msg['pass'] の値が希望するものと違った、ということになります。

投稿2019/09/30 21:37

nullpot

総合スコア153

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

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

0

ベストアンサー

文字数や正規表現などでパスワードなどチェックされていますが条件に「空ではない」を追加すべきと思います。
「空ではない 且つ ~の条件」と複合条件にすることですね。

実装的にあまりよろしくなさそうなところも散見されますが、ひとまずそこだけ。

投稿2019/09/30 21:25

編集2019/10/01 00:57
m.ts10806

総合スコア80765

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

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

m.ts10806

2019/09/30 21:26

項目によっても複数バリデートに引っ掛かることもあるから配列にした方がいいのではと思ったり。 チェック優先があってひとつしか出さない仕様なら今のでも良いですが
退会済みユーザー

退会済みユーザー

2019/10/01 20:02

回答ありがとうございます。まだ初心者の初心者でこれから実践に向け勉強していきます。 if(empty($err_msg)){ } 入力したらできました
m.ts10806

2019/10/01 20:10

私が意図したものと違いますけど…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問