🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

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

Q&A

解決済

2回答

847閲覧

PHPでのフォームの送信について

yassunyassun

総合スコア3

PHP

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

0グッド

0クリップ

投稿2021/03/21 08:15

編集2021/03/22 13:47

前提・実現したいこと

PHPで会員登録ページを作っているのですが、passwordを8文字以上で入力してもらいたいので太字の部分で定義出来ていると思ったのですが8文字以下でもスルーされて次の画面に行ってしまいます。
初歩的なことだとは思うのですがご教授頂けたら嬉しいです。

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

エラーメッセージは出ないですがif文が効いていません。

該当のソースコード

php

1// もし$_POSTに文字があるならフォームに返すための記述 2<?php 3if(isset($_POST['name'])){ 4 $name = $_POST['name']; 5}else{ 6 $name = ""; 7} 8if(isset($_POST['email'])){ 9 $email = $_POST['email']; 10}else{ 11 $email = ""; 12} 13if(isset($_POST['password'])){ 14 $password = $_POST['password']; 15}else{ 16 $password = ""; 17} 18 19 20if (empty($_POST['name'])) { 21 $error['name'] = 'none'; 22} elseif (isset($_POST['name'])) { 23 $error['name'] = 'ok'; 24} 25if (empty($_POST['email'])) { 26 $error['email'] = 'none'; 27} elseif (isset($_POST['email'])) { 28 $error['email'] = 'ok'; 29} 30 31**if (strlen($_POST['password']) < 8) { 32 $error['password'] = 'length'; 33}** 34if (empty($_POST['password'])) { 35 $error['password'] = 'none'; 36 } elseif (isset($_POST['password'])) { 37 $error['password'] = 'ok'; 38 } 39 40 41if(!empty($_POST["name"]&&$_POST["email"]&&$_POST["password"])){ 42 header("Location: check.php"); 43 exit(); 44} 45 46 47?> 48 49 50<!DOCTYPE html> 51<html lang="ja"> 52 53<head> 54 <meta charset="UTF-8"> 55 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 56 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 57 <title>会員登録</title> 58 59 <link rel="stylesheet" href="../style.css" /> 60</head> 61 62<body> 63 <div id="wrap"> 64 <div id="head"> 65 <h1>会員登録</h1> 66 </div> 67 68 <div id="content"> 69 <p>次のフォームに必要事項をご記入ください。</p> 70 <form action="" method="post" enctype="multipart/form-data"> 71 <dl> 72 <dt>ニックネーム<span class="required">必須</span></dt> 73 <dd> 74 <input type="text" name="name" size="35" maxlength="255" value="<?php echo(htmlspecialchars($name,ENT_QUOTES)); ?>" /> 75 <?php if ($error['name'] === 'none') : ?> 76 <p class="error">ニックネームを入力してください。</p> 77 <?php endif; ?> 78 <?php if ($error['name'] === 'ok') : ?> 79 <p class="nothing">空いている項目を入力してください</p> 80 <?php endif; ?> 81 </dd> 82 <dt>メールアドレス<span class="required">必須</span></dt> 83 <dd> 84 <input type="text" name="email" size="35" maxlength="255" value="<?php echo(htmlspecialchars($email,ENT_QUOTES)); ?>" /> 85 <?php if ($error['email'] === 'none') : ?> 86 <p class="error">メールアドレスを入力してください。</p> 87 <?php elseif ($error['email'] === 'ok') : ?> 88 <p class="nothing">空いている項目の入力してください</p> 89 <?php endif; ?> 90 </dd> 91 <dt>パスワード<span class="required">必須</span></dt> 92 <dd> 93 <input type="password" name="password" size="10" maxlength="20" value="<?php echo(htmlspecialchars($password,ENT_QUOTES)); ?>" /> 94 **<?php if ($error['password'] === 'length') : ?> 95 <p class="error">パスワードは8文字以上で入力してください。</p>** 96 <?php endif; ?> 97 <?php if ($error['password'] === 'none') : ?> 98 <p class="error">パスワードを入力してください。</p> 99 <?php elseif ($error['password'] === 'ok') : ?> 100 <p class="nothing">空いている項目を入力してください</p> 101 <?php endif; ?> 102 </dd> 103 104 <dt>写真など</dt> 105 <dd> 106 <input type="file" name="image" size="35" value="test" /> 107 </dd> 108 </dl> 109 <div><input type="submit" value="入力内容を確認する" /></div> 110 </form> 111 </div> 112</body> 113 114</html> 115

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

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

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

yassunyassun

2021/03/21 13:13

すいません使うのが初めてなもので不備がありました。 code機能を使うんですね。 教えて頂きありがとうございます。
m.ts10806

2021/03/21 22:59

質問は編集できます
yassunyassun

2021/03/22 13:48

編集しました。 ありがとうございます。
guest

回答2

0

流れ的にはこんな感じで

PHP

1<?php 2$name=filter_input(INPUT_POST,"name"); 3$email=filter_input(INPUT_POST,"email"); 4$password=filter_input(INPUT_POST,"password"); 5$error=['name'=>'','email'=>'','password'=>'']; 6 7if (!is_null($name)) { 8 if(empty($name)){ 9 $error['name'] = 'none'; 10 } 11 if(empty($email)){ 12 $error['email'] = 'none'; 13 } 14 if (empty($password)){ 15 $error['password'] = 'none'; 16 }elseif(strlen($password)<8) { 17 $error['password'] = 'length'; 18 } 19} 20function h($str){ 21 return htmlspecialchars($str); 22} 23?> 24 25<div id="content"> 26<p>次のフォームに必要事項をご記入ください。</p> 27<form action="" method="post" enctype="multipart/form-data"> 28<dl> 29<dt>ニックネーム<span class="required">必須</span></dt> 30<dd> 31<input type="text" name="name" size="35" maxlength="255" value="<?=h($name)?>" required> 32<?php 33if($error['name'] === 'none'){ 34 print '<p class="error">ニックネームを入力してください。</p>'; 35} 36?> 37</dd> 38<dt>メールアドレス<span class="required">必須</span></dt> 39<dd> 40<input type="text" name="email" size="35" maxlength="255" value="<?=h($email)?>" required> 41<?php 42if ($error['email'] === 'none'){ 43 print '<p class="error">メールアドレスを入力してください。</p>'; 44} 45?> 46</dd> 47<dt>パスワード<span class="required">必須</span></dt> 48<dd> 49<input type="password" name="password" size="10" minlength="8" maxlength="20" value="<?=h($password)?>" required> 50<?php 51if ($error['password'] === 'length'){ 52 print '<p class="error">パスワードは8文字以上で入力してください。</p>'; 53}elseif($error['password'] === 'none'){ 54 print '<p class="error">パスワードを入力してください。</p>'; 55} 56?></dd> 57 58<dt>写真など</dt> 59<dd> 60<input type="file" name="image" size="35" value="test" /> 61</dd> 62</dl> 63<div><input type="submit" value="入力内容を確認する" /></div> 64</form> 65</div>

投稿2021/03/21 16:46

yambejp

総合スコア116661

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

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

0

ベストアンサー

maxlengthを使われているようなのでminlengthも使ってあげるとか。

参照URL MDN <input type="password">
https://developer.mozilla.org/ja/docs/Web/HTML/Element/input/password

投稿2021/03/21 10:24

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yassunyassun

2021/03/21 13:15

ありがとうございます! 参考にさせてもらいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問