• ベストアンサー

HTMLのフォームでのデータの持っていきかたについて

HTMLとPHPを使いアカウント作成のページを作成しています。 テキストボックスに名前等を入力して登録ボタンを押すときに、パスワード認証画面(アカウント作成用のパスワードを入力)を経由して次の画面に行きたいと考えています。その際にはテキストボックスに入力したデータを持っていかなければならないのですが、うまく持っていってくれません。 actionに直接javascriptを入れるとデータは持っていってくれないのでしょうか? よろしくお願いします。 <form method='post' action="JavaScript:var pass=prompt('パスワードを入力してください','****');if(pass){location.href= pass+'.php';}"> <p>名前<input type="text" name='hName' value='$hName'></p> <p>住所<input type='text' name='hpostcode2' value='$hpostcode'></p> <p>コード番号<input type='text' name='haddress2' value='$haddress'></p> <input type="submit" value='$hNamebutton2'> </form>

  • HTML
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.1

このスクリプトでは送信されないでしょう。 location.hrefでページ遷移しているわけですから、 pass+'.php'のURLに普通にGETでアクセスしていることになります。 location.hrefで指定しているURLにパラメータが指定されていないので、 http://example.jp/*****.php(*部分はプロンプトで入力した値)にGETで接続しているだけです。 javascriptでフォームの値を送信するには、 document.○.actionになるかな。 function send(){ pass=prompt('パスワードを入力してください','****'); if( pass ){ document.form1.action="xxxx.php"; document.form1.method="post"; } } というのを定義しておいて、 <form name="form1" onSubmit="send()"> <p>名前<input type="text" name='hName' value='$hName'></p> <p>住所<input type='text' name='hpostcode2' value='$hpostcode'></p> <p>コード番号<input type='text' name='haddress2' value='$haddress'></p> <input type="submit" value='$hNamebutton2'> </form> とするとか。 まぁpassが空だったらどうするのか?とか、 passがアクセスしてほしくないファイルだったらどうするのか?とかいろいろ問題はあるでしょうけど。 ここからは余計なお世話ですが。 このような設計は普通はしないとおもいます。 http://example.jp/*****.phpは好きにアクセスできて、そこでの認証がないわけですから、http://example.jp/*****.phpがばれてしまうと、好き勝手に、それこそスクリプトでも書いて送信しまくることで、いくらでもアカウント作成されますから。 普通にパスワード入力欄作成して、php側でパスワード照合したほうがよいとおもいますが。

bolder
質問者

お礼

回答ありがとうございました。急ぎと言いながら返答が遅れてすいません。 おかげさまで持っていくことができました! そうですね、php側で照合することにしました。作った後気づいたのですが、javascriptでの照合だとDBに入っているパスワードとの照合ができないようなので・・・・

その他の回答 (2)

noname#19175
noname#19175
回答No.3

> bolderさん ・CGI(およびPHP)とHTML(フォーム) ・HTML(フォーム)とJavaScript (・CGI(およびPHP)とJavaScript) のそれぞれの関係もわかっておられないのではないでしょうか、、、 (ANo.2の説明(の一部)はANo.1に対してだと思うのですが、、、?私のはANo.1やANo.2の内容とは関係有りません。) それがわかっていなければ、 ここでHTMLなりPHPなり、JavaScriptを書いたとして、 ログイン画面からログインしてもらうことは出来るかもしれませんが、 はたして、ログインしたその先の画面が作れるとは思えません。 > HTMLとPHPを使いアカウント作成のページを作成しています。 いきなりアカウント作成ページを作るのではなく、 たとえば ・フォームから入力したデータをサーバー側で受け取り、サーバーが受け取った結果をブラウザで確認する、 それが出来れば ・入力不足(たとえば必須項目が入力されていないなど)のチェックをして、不足が有ればその確認ができるようにする ・確認ページからさらに追加入力してみて、前回の内容と2回目の内容を一緒に表示させてみる などのように、段階を踏んでみてはいかがでしょうか。 もしJavaScriptはわからないがPHPならわかる、というのであれば、(すでに上記の段階は踏まれていると思うので、以下のJavaScriptを参考に作れると思います。) ほかの方も仰るとおり、 フォームに<input type="password">を追加して、PHPで入力のチェックを行ってみてはいかがでしょうか。 JavaScriptを切った状態では未入力のままでも送信できますから、サーバー側でもチェックが必ず必要です。 また、送信ボタンを押した後でパスワード入力を促すのは、ユーザーの混乱を招く可能性がありますので、おすすめできません。 一応、以下で動くと思います。(たぶん期待されている動作にはなっていると思います) 関数にして別の場所に書いて、それを呼び出した方がわかりやすいと思います。 <form method='post' action="xxx.php" onsubmit="return function(){var p=prompt('パスワードを入力してください','****');if(!p)return false;var el=document.createElement('INPUT');el.value=p;document.getElementsByTagName('FORM')[0].appendChild(el);return true;}();"> <p>名前<input type="text" name='hName' value='$hName'></p> <p>住所<input type='text' name='hpostcode2' value='$hpostcode'></p> <p>コード番号<input type='text' name='haddress2' value='$haddress'></p> <input type="submit" value='$hNamebutton2'> </form>

bolder
質問者

お礼

長い回答ありがとうございます。急ぎと言いながら回答が遅れてすいません。おかげさまでデータを持っていくことができました! 今私はHTMLとPHPは理解しているのですが、javascriptがまったくわからないという現状です。 「javascriptだとpostってどうすればいいんだ?」という感じでしたw 仕様の都合上、javascriptでパスワード入力画面を表示させるようにしなければいけなかったために今回のようなつくりになったのですが、DBの中にあるパスワードとの照合もできませんし、他の方も言っているとおりセキュリティ上に問題があるので単純にPHPでパスワード照合をしたいと思います。 ありがとうございました。

noname#24096
noname#24096
回答No.2

Javascriptを使うかどうかは関係ありませんね。 失礼ながら、CGIにおけるPOSTとGETの違いが お分かりになっていないように思います。 この辺りを参考にどうぞ。 http://www.php.net/manual/ja/language.variables.external.php http://www.hizlab.net/app/phppg.html また「pass.php」がどんな内容か不明ですが #1の方もおっしゃっている通り、 セキュリティには十分な注意が必要です。

bolder
質問者

お礼

回答ありがとうございました。急ぎと言いながら返答が遅れてすいません。おかげさまで持っていくことができました! 一応postとgetの理解はしている・・・つもりですが、javascriptの場合はどうやるのかがわかりませんでした。 そうですね、セキュリティ的に考えてもphpで照合することにしました。

関連するQ&A

  • フォームで条件によってボタンの処理を変える

    フォームでパスワードを入力してもらい、確認用にもう一度入力した際、 誤入力があればアラート、正しく同じ値が入力されればsubmitにしたいと思っており、下記のようなコードを書きましたが、同じ値を入力した際にIEでエラーがでてしまいます(FirefoxやSafariでは動きます)。 当方Javascriptの知識に乏しく、どなたか助けていただけませんでしょうか?宜しくお願いいたします。 <html> <script language="JavaScript"> <!-- function passCheck(){ pass1 = document.free.PASSWORD.value; pass2 = document.free.PASSWORD2.value; if(pass1!==pass2) {alert("入力された確認用パスワードが違います");} else if(pass1==pass2) {document.free.submit.type="submit";} } //--> </script> <body> <form method="POST" action="submit.cgi" name="free"> <p> <input type="password" size="20" name="新パスワード" id="PASSWORD"><br> <input type="password" size="20" name="新パスワード(確認)" id="PASSWORD2"> </p> 確認のため、上記と同じパスワードをご記入ください。 <p><input type="button" name="submit" value="確認する" onclick="passCheck()"/></p> </form> </body> </html>

  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • HTML5メールフォームの作り方

    お世話になります。HTML5のテンプレートを使用してメールフォームを作成しようとしておりますが、なかなかうまくいきません。action=""にメールアドレスを入れてみましたが、できませんでした。どなたかお分かりの方いらっしゃいましたら、どうかよろしくお願い致します。 <form id="contact" action="contact.html" method="post"> <div class="form_settings"> <p><span>Name</span><input class="contact" type="text" name="your_name" value="" /></p> <p><span>Email Address</span><input class="contact" type="text" name="your_email" value="" /></p> <p><span>Message</span><textarea class="contact textarea" rows="5" cols="50" name="your_message"></textarea></p> <p style="padding-top: 15px"><span>&nbsp;</span><input class="submit" type="submit" name="contact_submitted" value="send" /></p> </div> </form>

    • ベストアンサー
    • HTML
  • 複数のフォームから送信

    複数のフォームからtextの値を送信したいのですができますか?〒番号を入力して検索ボタンをおすと住所がでてきて最後に登録をしたいです。検索だけのプログラムはできてますがフォームを二つにすると両方のsubmitが登録になります・・・ 一応自分でいろいろためしましたがだめでした。。。 html,php,javascriptです。 二つともだめでした。。。。 rei1.php ------------------------- <html> <body <form method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> <br> <form method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> -------------------------------------- rei2.php -------------------------------------- <html> <head> <script language="javascript"><!-- function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } //--></script> </head> <body> <form name="nform" method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> </form> <form name="nform2" method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> <form name="nform3" method="POST" action="1.php"> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> ------------------------------------

  • 同じフォーム内に移動先を2つ指定できますか?

    持っていくデータは共通なのですが、登録する人によってデータの持っていくページ先を変えたいと思っています。 フォームを2つ作ればいいのでしょうが、それでは同じテキストボックスが2つ表示されてしまい、見た目がよくありません。 過去の質問で似たような質問が1つありましたが、それでは解決できませんでした。 よろしくお願いします。 <form method='post' action=""> <p>名前<input type="text" name='hName' value='$hName'></p> <p>住所<input type='text'name='hpostcode2' value='$hpostcode'></p> <p>コード番号<input type='text' name='haddress2' value='$haddress'></p> <input type="submit" value='$hNamebutton2'> </form>

    • ベストアンサー
    • HTML
  • JavaScriptで入力チェック

    ////サンプル//// <p><input type="text" value="" name="box_1" /></p> <p><input type="text" value="" name="box_2" /></p> <p><input type="text" value="" name="box_3" /></p> <p><input type="text" value="" name="box_4" /></p> Javascriptで入力チェックをして 入力がされていたらpタグとinputタグの間に「○」を表示させたいのですが どのように実装したら良いでしょうか? ・inputタグは4つだけではなくたくさんあります ・DBを使っているのでページを更新しても○が消えないようにしたいです よろしくお願いします!

  • javascript フォームについて

    javascriptでフォームを作ったのですが、複数フォームの空白をチェックするにはどのようなプログラムにすればよろしいでしょうか? onsubmit="return chk1(this)でフォーム送信が押されたときにチェックを行おうと考えているのですが そのときのchk()の中身やif文の条件がわからないのです。 どのようにすれば上手くいくでしょうか? 回答よろしくお願いします。 ソースは以下のとおりです。 <script language="javascript"> function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } function chk1(frm){ if(frm.elements["txt1"].value==""){ alert("解答欄に空白があります"); /* FALSEを返してフォームは送信しない */ return false; }else{ /* TRUEを返してフォーム送信 */ return true; } } </script> <form name="nform" method="POST" action="mailto:webmaster@a.com?subject=問い合せ" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="mailto:webmaster@leposystems.com?subject=問い合せ" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="mailto:webmaster@leposystems.com?subject=問い合せ" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()" onsubmit="return chk1(this)">

  • パスワード入力フォームのガイドの制作するには・・・?

    入力フォームにデフォルト値でガイド的な文字を入れ フォームクリックでガイド文字が消え、入力できるようになるものを 作りたいのですが input type="text" のフォームはできましたが input type="password" のフォームに実装すると ガイド文字も●●●●と表示されてしまいます。 これを制作するのは無理なのでしょうか? 以下はサンプルで作ったソースです。 ------------------------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>テスト</title> </head> <body> <div class="id_box"><input type="text" name="id" onfocus="if (this.value == 'アカウントID') this.value='';" value="アカウントID"></div> <div class="pw_box"><input type="password" name="pass" onfocus="if (this.value == 'パスワード') this.value='';" value="パスワード"></div> </body> </html> ------------------------------------------------------------------- たぶんjavascriptだと思うのですがよろしくお願いします。

  • HTML パスワード認証について

    HTML パスワード認証について 現在、HPを作成しているのですが、パスワード認証のソースがうまく動きません。 素人なもので色々と調べながらやっているのですが、なぜ動かないかがわかりません。 どなたか教えていただけないでしょうか? ソースは下記通りです。 <head> <SCRIPT LANGUAGE="JavaScript"> <!-- function PassLink(){ key=document.pass.word.value; location.href="C:\xxxxxxxxxx\ooooooooo\iiiiiiiii\"+key+".html"; } //--> </SCRIPT> </head> とHTML側の文章は <body> <FORM name="pass"> <INPUT type="text" name="word" size="18"> <INPUT type="button" value="認証" onClick="PassLink()"> </FORM> </body> です。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • フォームの動作についてお願いします!

    <FORM NAME="form1"> <INPUT NAME="text1" TYPE="text"> <INPUT TYPE="button" value="表示" onclick="daialog()"> </FORM> <script language="JavaScript"> <!-- function daialog(){  alert(form1.text1.value) ; } --> </script> ----------------------------------- と上のようにテキストボックスの中身をアラートで返すスクリプトが あるのですが、検索ページ(google等)のようにボタンを押さずとも、 エンターキーを押せばdaialog()が呼びだされるようにするには どうすればいいでしょうか。。。 <FORM>に関係がありそうなのでJavaScriptのカテゴリにじゃないかも しれませんが、どなたかよろしくお願いします!!