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

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

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

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

Q&A

解決済

2回答

860閲覧

filter_input()でinput type="submit"の要素のvalue値を取得する方法

pegy

総合スコア245

PHP

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

0グッド

0クリップ

投稿2021/07/05 03:01

編集2021/07/05 03:45

下記のようなコードでinput type="submit"において、value値をfilter_input()で取得したいのですがNULLが返されてしまいます。$_POST['string']では問題なく取得できるのですが、filter_input()のレファレンスを見ても、他の引数でもこれを取得できるような設定を見つけることができず、ご質問させていただきました。

よろしくお願い申し上げます。

html

1<?php 2//index.php 3$get_logout1 = filter_input('INPUT_POST','log_out_button'); 4$get_logout2 = $_POST['log_out_button']; 5var_dump($get_logout1);//NULL 6var_dump($get_logout2);//logout 7?> 8 9<form class="" action="index.php" method="post"> 10 <input name="log_out_button" type="submit" class="button log_out" title="Sign log_out" value="logout"> 11 </form>

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

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

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

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

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

guest

回答2

0

ベストアンサー

他の入力コントロールと同じくnameの属性値をキーとするので今回のようなhtmlだと指定すべきはlog_out_button

ドキュメントをよく読まれたらわかりますが、第一引数で指定されているのは文字列ではなく定数です。
定数であるからには裏で持っている値はありますが、それはそういう文字列ではないようです。
イメージ説明

投稿2021/07/05 03:05

編集2021/07/05 04:00
m.ts10806

総合スコア80875

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

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

pegy

2021/07/05 03:07

失礼しました。コードの転記ミスでした。 一方で、正しくname属性を第二引数に設定しても、結果はNULLでございます。
m.ts10806

2021/07/05 03:22 編集

でしたらコードは全て正しく提示してください。 現在のコードではコピペで試せません。 action="#"だと送信先未指定と同じですしね。
pegy

2021/07/05 03:29 編集

コードの修正について、返信文でお伝えを失念しておりました。name属性を修正しております。 重ねてお詫び申し上げます。 ・actionについても、自分自身(今回であればindex.php)として加筆させていただきました。 ・<?php?>ブロックを適切に追記いたしました。 よろしくお願い申し上げます。
m.ts10806

2021/07/05 03:42 編集

終端;がないのでParse errorになります。$get_logout1しかダンプされていません。 落ち着きましょう。
pegy

2021/07/05 03:47 編集

誠に申し訳ございません。本文のコードを修正して、現状ご提示しているコードで再現できることを私の環境で確認いたしました。 ご回答をしてくださっているので、「初めから丁寧にそうしましょう」であると思います。今後落ち着いて、再現コードの提示に注意いたします。
m.ts10806

2021/07/05 03:47

追記しました。 ドキュメント確認までは良いですが、引数は両方きちんと確認しましょう。
pegy

2021/07/05 03:58

ありがとうございます。最終的にとんでもない見落としてでした。ご指摘いただきありがとうございます。 ただ、正直申し上げて定数を理解できておりません、リファレンスを読むと (第1引数)int $type (パラメータ)type INPUT_GET、INPUT_POST、 INPUT_COOKIE、INPUT_SERVER あるいは INPUT_ENV のいずれか。 とありました。 ここで数値型?と少し混乱したのですが、おそらく内部的に define(INPUT_POST ,1); のような割り当てがされていて実際には数値が代入されている仕様なのかと思いますが、これは定数を勉強するということも含めて学習しようと思います。 御改ました、詫びと御礼を申し上げます。
m.ts10806

2021/07/05 04:08

参考までに各定義値を貼っておきます。 ※おそらく本来はCの元ソースを負うべきなのでしょうけどすぐ探せるかわからなかったのでEclipseの「定義の参照」でいった先をキャプチャしました。
pegy

2021/07/05 04:27 編集

有難うございます!衝撃の問いかもしれませんが、このキャプチャはどのファイルを見に行けば載っていますか。。?存在を知らず、先程のような推察でこれまでやってきてしまいました。
m.ts10806

2021/07/05 04:34

PHPのコアライブラリ、APIソースなのでたぶん直接は見に行けません。 コメントで書いたようにeclipseから定義の参照しています。
pegy

2021/07/05 06:53

ありがとうございます。EclipseとはIDEであると思っていたのですが、そのような定義参照ができるのですね・・・導入してみようと思います。ありがとうございます。
m.ts10806

2021/07/05 07:04

言語に限りませんが、ライブラリなどもクラスパスが通ってれば定義やコードの参照ができますし、ブレイクポイントを配置してデバッグもできます(たぶんeclipseに限らず大抵のIDEで可能です) 自身が実装したコードでもよく使いますよ。
guest

0

どこで躓いているかわかりませんが・・・
buttonというpostデータが送られてくるようなフローになっていませんので
$get_logout1は常にnullです
逆に $_POST['log_out_button']は最初未設定のためNoticeを吐きますが
実際にPOSTしたらlogoutを返すと思います

両方ともおかしいので

PHP

1$get_logout = filter_input('INPUT_POST','log_out_button');

で参照して下さい

投稿2021/07/05 03:09

yambejp

総合スコア116724

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

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

pegy

2021/07/05 03:21

ありがごうございます、m.ts10806様からも指摘があり、name属性を適切に指定して修正したのですが、やはりNULLが返ってきてしまいます。本文も修正しましたが、以下も生のコードです。 ----------------------------------------------------- $get_logout = filter_input('INPUT_POST','log_out_button'); var_dump($get_logout)//NULL <form class="" action="#" method="post"> <input name="log_out_button" type="submit" class="button log_out" title="Sign log_out" value="logout"></input> </form> ------------------------------------- ご指摘を適切に汲み取れていなければ申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問