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

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

詳細はこちら
PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1764閲覧

javascriptでpostしてphpで受け取りたい

masakifukuta

総合スコア58

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/11/26 04:32

いつも大変お世話になっております。
javascriptで値をpostしてphpで受け取りたいのですが、うまくpost出来ません。ついでにphpのエラーも出ます。
function postform()はwebから拾ってきた物を改変したもので、余り理解が深まっていません。
何方かお分かりになる方、よろしくお願い致します。

送り側

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>T&E合同会社 就労継続支援A型事業所 楽(ラック)</title> <style type="text/css"> // ~ 略 ~ </style> <script language="javascript" type="text/javascript"> function checkStr(){ // ~ 略 ~ } function checkMail(){ // ~ 略 ~ } function check_kuhaku(){ var str1 = document.getElementById("userid").value; var str2 = document.getElementById("password").value; if((!str1)||(!str2)){ alert("必須項目に空欄があります。"); return false; }else{ page_jump(); return false(); } } function page_jump(){ var str1 = document.getElementById("userid").value; var str2 = document.getElementById("password").value; postform('userid',str1); postform('password',str2); window.location.href="customer_registration.php"; return false; } function postform(name,value) { var form = document.createElement('form'); var request = document.createElement('input'); form.method = 'POST'; form.action = 'customer_registoration.php'; request.type = 'hidden'; request.id = name; request.name = name; request.value = value; form.appendChild(request); document.body.appendChild(form); form.submit(); } </script> </head> <body> <div align="center"> <img src="ラックロゴ.png"></br> <p></p> <form method="post"> <div class="s14">ログインID</div> <input type="text" id="userid" name ="userid" size="25" onchange="checkMail()"/> <div class="s14">パスワード</div> <input type="password" id="password" name ="password" size="25" onchange="checkStr()"/> </form> </div> </br> <div align="center"><p></p> <a style="text-decoration:none;" onClick="check_kuhaku()"> <button class="button" type="submit">ログイン</button></a> </br> <a href="menber_registration.html" style="text-decoration:none;"> <button class="button">新規登録</button></a> </div> </body> </html>

受け側

<?php if (isset($_POST['userid'])){ print "POST_userid:".$_POST['userid']."<br/>"; }else{ print("$_POST[userid]の値がありません"); } if (isset($_POST['password'])){ print "POST_password:".$_POST['password']."<br>"; }else{ print("$_POST[password]の値がありません"); } // ~ 略 ~

実行結果
Notice: Undefined variable: _POST[userid]の値がありません in C:\xampp\htdocs\LUCK\customer_registration.php on line 44

Notice: Undefined variable: _POST[password]の値がありません in C:\xampp\htdocs\LUCK\customer_registration.php on line 49

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

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

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

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

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

m.ts10806

2019/11/26 04:58

JavaScriptも怪しい記述が。 false() ちなみにあくまでform送信を想定されていますよね?
退会済みユーザー

退会済みユーザー

2019/11/26 05:04

これ、請負仕事だと、情報開示し過ぎだと思うけど大丈夫?
masakifukuta

2019/11/26 05:04

form内にinputを作成し、これに色々属性とvalueを付加して送りたいです。
masakifukuta

2019/11/26 05:06

情報開示については問題ありません。宜しくお願い致します。
guest

回答2

0

postform() は実行するごとにPOST送信処理を実行するように実装されているので、

js

1postform('userid',str1); 2postform('password',str2);

この呼び出し方では「useridだけを含んだリクエスト」と「passwordだけを含んだリクエスト」をそれぞれ発火しています。

Notice: Undefined variable: が表示されるのは、 print("$_POST[userid]の値がありません"); のように、ダブルクォーテーションを使った文字列リテラルをprintに渡しているためです。
PHPではダブルクォーテーションで囲った文字列リテラルにおいて、中に変数が含まれる場合は変数を展開しようとします。 $_POST[userid] を展開しようとして、そんな値はないのでエラーになっています。(より正確には添え字の userid を先に解決しようとしてその時点でコケているような気がします)

たんに文字列として処理したい場合はシングルクォーテーションで囲う必要があります。
PHP: 文字列 - Manual

php

1print('$_POST[userid]の値がありません');

投稿2019/11/26 04:52

thyda.eiqau

総合スコア2982

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

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

masakifukuta

2019/11/26 04:58

回答有難う御座います。 postform()の呼び出しを一行コメントアウトしてみましたが変わりませんでした。 phpのエラーは消えました。
guest

0

ベストアンサー

postform()を複数指定していますが、
postformが呼び出されるたびにダミーでつくったフォームをサブミットしてますね
またidを付加している部分も既存のidと競合しているように見えます

sample

  • 送り側

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelector('form').addEventListener('submit',e=>{ 4 var flg=Array.from(document.querySelectorAll('#userid,#password')).filter(x=>x.value=="").length>0; 5 if(flg){ 6 alert("必須項目に空欄があります。"); 7 e.preventDefault(); 8 } 9 }); 10}); 11</script> 12<div align="center"> 13 <img src="ラックロゴ.png"></br> 14 <form method="post" action="customer_registration.php"> 15 <div class="s14">ログインID</div> 16 <input type="text" id="userid" name ="userid" size="25"> 17 <div class="s14">パスワード</div> 18 <input type="password" id="password" name ="password" size="25"> 19 <div align="center"> 20 <button class="button" type="submit">ログイン</button></br> 21 <button class="button" type="button">新規登録</button> 22 </div> 23 </form> 24</div>
  • 受け側

PHP

1<?PHP 2$userid=filter_input(INPUT_POST,"userid"); 3$password=filter_input(INPUT_POST,"password"); 4if(is_null($userid) or is_null($password)){ 5 print "不正"; 6}elseif($userid===""){ 7 print "$_POST[userid]の値がありません"; 8}elseif($password===""){ 9 print "$_POST[password]の値がありません"; 10}else{ 11 print "POST_userid:".htmlspecialchars($userid)."<br>"; 12 print "POST_password:".htmlspecialchars($password)."<br>"; 13}

投稿2019/11/26 04:44

編集2019/11/26 05:46
yambejp

総合スコア116683

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

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

masakifukuta

2019/11/26 04:48

回答有難う御座います。 postform()の呼び出しを一行コメントアウトしてみましたが変わりませんでした。
yambejp

2019/11/26 04:52

わざわざフォームを作り直していますが元フォームで送ってはいけないのですか?
masakifukuta

2019/11/26 05:01

色々やってみたのですが、元々のフォーム(html記述)でもダメでした。 ボタンを押したときにjavascriptを呼ぶのが悪いのだと思い、フォーム自体もjavascriptでやってみようと思った次第です。
yambejp

2019/11/26 05:46

送り側、受け側、調整しました
masakifukuta

2019/11/26 07:34

わざわざ作成して頂き有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問