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

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

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

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

正規表現

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

397閲覧

ログインフォームで桁数を指定したい(正規表現)

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

正規表現

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/09/19 05:25

いつもお世話になっております。

現在、ログインフォームの作成を試みております。

暗証番号の欄に指定した桁数(7桁を指定しています)が入力されたときのみ

別のページに飛ばせるようにしたいと思いました。

php

1≪aaa1.php≫ 2 3 4<!DOCTYPE html> 5<html> 6<head> 7 <title></title> 8 9</head> 10 11<body> 12 13<?php 14 if(isset($_POST['pin'])){ 15 $pin = $_POST['pin']; 16 if(!preg_match("/[0-9]{7}/", $pin)){ 17 header('Location: aaa2.php'); 18 }else{ 19 header('Location: aaa1.php'); 20 exit(); 21 } 22 } 23 24?> 25<form action="aaa1.php" method="POST"> 26 <input type="text" name="pin" size="80%" placeholder="暗証番号"><br> 27 <input type="submit" value="ログイン"> 28</form> 29 30</body> 31</html>

"/[0-9]{7}/"で0-9の数字の7桁を指定し、if文により
trueであれば「aaa2.php」(別ページ)へ、falseであれば「aaa1.php」(ページ遷移なし)という
形で作成したいのですが、何を入力してみてもaaa2.phpに飛ぶことができませんでした。

間違っている点、アドバイスなどご教示いただければ幸いです。
どうぞよろしくお願い致します。

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

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

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

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

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

guest

回答3

0

こんな場合分けになります

PHP

1<?php 2$pin=filter_input(INPUT_POST,"pin",FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>"/^\d{7}$/"]]); 3if(!is_null($pin)){ 4 if($pin!==false){ 5 header('Location: ?a=1'); 6 }else{ 7 header('Location: ?a=2'); 8 } 9 exit(); 10} 11?> 12<form method="POST"> 13<input type="text" name="pin" value="123456"><br> 14<input type="submit" value="ログイン"> 15</form> 16<form method="POST"> 17<input type="text" name="pin" value="1234567"><br> 18<input type="submit" value="ログイン"> 19</form> 20<form method="POST"> 21<input type="text" name="pin" value="12345678"><br> 22<input type="submit" value="ログイン"> 23</form>

投稿2018/09/19 05:41

yambejp

総合スコア114769

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

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

退会済みユーザー

退会済みユーザー

2018/09/19 05:59

yambejp様 いつもご助力いただきありがとうございます。 記載いただいたコードがちょっとまだ理解できるレベルにないのでこれから参考書開いて 勉強させていただきたいと思います。 今回もご回答いただきありがとうございました!
yambejp

2018/09/19 06:56

ちょっとだけ解説 filter_inputは、バリデートにいろんな型を指定できます 今回は正規表現でチェックしました。 値が受け取れなければnull,マッチしなければfalse,マッチすれば値を受け取るので ifで3パターン切り分けをしてあります
退会済みユーザー

退会済みユーザー

2018/09/19 08:30

解説ありがとうございます! 当方「php 逆引きレシピ」を利用してるんですが、お恥ずかしい話ちょっとよくわからないのでよくgoogle等でもよく調べてみたいと思います。 勉強不足ですみません。。
guest

0

ベストアンサー

header関数は<!DOCTYPE html>を含め全ての出力の前に実行する必要があります。

【PHPのheader関数でリダイレクト処理を行う方法 | TechAcademyマガジン】
https://techacademy.jp/magazine/11609

【PHP: header - Manual】
http://php.net/manual/ja/function.header.php

投稿2018/09/19 05:30

kei344

総合スコア69398

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

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

退会済みユーザー

退会済みユーザー

2018/09/19 05:53

kei344様 ご指摘、参考リンクの貼り付けありがとうございます。 基本が大切さを勉強させていただきました。 無事、解決いたしました、ありがとうございました!
guest

0

判定が逆じゃないですか??
あと遷移しないならelseはいらないかも。

PHP

1if(!preg_match("/[0-9]{7}/", $pin)){

PHP

1<?php 2 if(isset($_POST['pin'])){ 3 $pin = $_POST['pin']; 4 if(preg_match("/[0-9]{7}/", $pin)){ 5 header('Location: aaa2.php'); 6 exit; 7 } 8 } 9 10?> 11<!DOCTYPE html> 12<html> 13<head> 14 <title></title> 15 16</head> 17 18<body> 19<form action="aaa1.php" method="POST"> 20 <input type="text" name="pin" size="80%" placeholder="暗証番号"><br> 21 <input type="submit" value="ログイン"> 22</form> 23 24</body> 25</html>

投稿2018/09/19 05:29

編集2018/09/19 05:43
mayoi_maimai

総合スコア1583

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

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

退会済みユーザー

退会済みユーザー

2018/09/19 05:55

mayoi_maimai様 ご回答いただきありがとうございます。 ご指摘いただいた2点、大変参考になりました。 無事、解決いたしました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問