- ベストアンサー
postによる、phpとの受け渡し
- フロントサイドとサーバーサイドのソースコードの問題を質問します。
- フロントサイドの<form></form>の部分とphpのコードの比較をお願いします。
- フロントサイドをブラウザで表示し、確認ボタンがクリックされたら確認画面を表示したいです。
- みんなの回答 (17)
- 専門家の回答
質問者が選んだベストアンサー
>apache経由でとは?XAMPPでapacheをオンにするということでしょうか? もちろんです。 そもそも、PHPはインタープリター言語です!。 Apacheに接続されているパーサーであるPHPが処理するものです。 >ファイルを右クリック これは、Windows空間です。全く無関係ですよ。 以前も言いましたが、「サーバーで実行してください」
その他の回答 (16)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>正しい実行方法を教えて下さい。 資料を作ったのですが、OKWAVE側の問題で投稿できず。 一応もう1回試してみますが。多分だめかな?
- AsarKingChang
- ベストアンサー率46% (3467/7474)
もう1点、これをブラウザで実行したときの スクリーンショットを貼ってください。 なんか、間違いがある気がします。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>1.phpファイルの実行方法。 ちゃんと、Apache経由で実行してますか??? >2.どうしてphpとフロントサイドを分けないでもいいのか? PHPの非PHPセクションは、HTMLだからです。 また、貴方が、HTMLだと思っていても、 PHPの事もあります。 これは「拡張子」だけの話で、 Apacheに、これが「PHPだ!」と 教えれば、GIFだろうが、JPEGだろうが、 PHPで実行可能です。 例えば、読み込むたびに違うJPEG画像を送り出す JPEG画像の中身は、PHPの可能性があるからです。 (それ以外の言語で書かれていることもありますが、 ひとまず、拡張子がファイルを決めてる?って 概念は必ずしもただしくないです
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>1.html文を1つのファイルとしないとブラウザで写した際、php文が汚してしまうのではないかと懸念します。 >分けないでコーディングするのは、どういう考えがあるのでしょうか? 「php文が汚してしまう」 どこを? PHPはサーバーサイド言語ですよ? つまり汚れようが汚れまいが、どうでもいい事ではないですか? 例えば、 abc.phpが あああ <?php $hoge="dfasdfasfasda"; ?>あああ って書いても出力される結果は「ああああああ」だけです。 もう一度言いますが、固定概念を捨ててください。それが理解を遅くしてます。 $hoge="dfasdfasfasda"; と書いた行は、PHP空間の中で処理されていますが、HTML空間には出力してませんよ。 >2.2つプログラムがありますが、どちらともindex.phpの1つのファイルにコピーして実行結果を見るのでしょうか? 同じ物です。 教科書式と、事務式の、書き方を書いただけですので、お好きな方を書いてください。 (結果も全く同じです) こっちは、好みでどうぞ (仕事でPHPの仕事を受ける場合、この教科書式だの事務式を指定されることもあります。) なお、WordPressの場合は、主にHTMLから見た教科書式が指定されることが多いです。 (今回は、仕事ではないので、あまり気にしなくてよいですが) あああ<?php echo $abc; ?>いいい あああ<?= echo $abc; ?>いいい この二つは全く同じ動作です。 であるなら、あるPHPの処理の最中に、 ~ここはPHP空間~ ?>あああ<?php echo echo $abc; ?>いいい<?php ~ここはPHP空間~ でも同じだって事はわかるかと。 それと、HTMLは、ファイルではなく書式です。 なので、PHPファイルに、<?php ~ ?>を一切含まないで書いたソースは PHPファイルに書いたHTMLです。つまりHTMLです。 HTMLとHTMLファイルを混在してる気がします。 (ここ、かなり大事) (厳密にはMIMEが関係しますが、今の段階では考えなくてよい) また、PHPはサーバーサイド言語なので、こいつの出力が、その位置に挿入されてるだけで、 クライアントから見たらPHPなんてものは、存在しない物です。 言ってる意味が分からなければ、まずやってみましょう。 やってから、その後理解をすればOKです。 今できてないのであれば、理解の方を捨てましょう。
お礼
ご回答誠にありがとうございます。 form文が書かれてある方をコピーしました。 すみません。疑問があります。 phpはブラウザに写りません。 どうやって実行するのでしょうか? 正常なのかどうか解りません。 私の観念は、 html、css、JavaScriptのフロントサイドは、見える方なので、1つにまとめて、phpを入れてはいけないと思うのです。(違う拡張子で複数、保存する。) php文がブラウザに写した投稿フォームに写ってしまいます。 ここのところを、どうお考えなのかお教えください。 1.phpファイルの実行方法。 2.どうしてphpとフロントサイドを分けないでもいいのか? この2点。ご説明のほど宜しくお願い申し上げます。
補足
すみません。 既にご説明済みですね。 私、YouTubeの問い合わせフォームの作り方の動画を参考に作りました。フロントサイドをブラウザに写すと、せっかくのフロントサイドにphpのコードが写ってしまいました。 最初のフロントサイドは拡張子htmlで保存しないといけないと考えてしまいます。 form文とphp文を一緒に、拡張子phpで保存してしまうとブログを書いてくださる人に対するインプット用のフォームが出来ないと考えてしまうのです。 「この考えを捨てろ!」ということですよね。 何度もご説明受けて理解できずに申し訳ないのと、自分を情けなく思ってしまいます。 一にインプットするフォームを作り、二にその確認画面。戻るとキレイにインプットするフォームに入力内容が消えないで残っている。三に送信すると【送信完了しました。】の画面になります。裏でインプット内容が保存され、誰でも見れるようになります。執筆者本人も自分の投稿、他の人の投稿が見れるようになります。 そういったブログサイトを開設したいのです。 「既にある!」とおっしゃる方もおられますが、自由な投稿内容のは無いと思っております。 まじめな投稿から官能的な投稿まで、OKとしようと思います。倫理的に問題があるのならば、その時考えようと思います。 道は前途多難だと思います。 でも、貴方様たちが教えてくださるのと、自分の勉強で何とかしようと思います。 勉強がいささか退屈で嫌になります。ブログに関係するのならば勉強も好きですが・・・。 今の問題を意思疎通しないといけませんね。 問題は私にあります。 第一関門だと思います。 懲りずに、今後とも宜しくお願い致します。
- t_ohta
- ベストアンサー率38% (5238/13705)
> ()の問題は答えてくださらないでしょうか? 答えは「付けても付けなくても問題無い」です。 ご自身の書かれたプログラムをよく見て下さい、「カテゴリー」以外には一切括弧が付いていませんが、こちらは問題無く動作するので括弧が無くてもいいと言う事が判ると思います。 一方で <?php echo ($_POST['message']) ?> と書いたとしても正常に動作し、この場合の括弧は計算の優先順位を示すモノですが、優先するも何も echo 命令に対して $_POST['message'] しか変数が与えられていないので計算結果は変わりません。
お礼
ご親切にご回答誠にありがとうございます。 Javaは半端ない難しさに感じましたが、 phpも難しいですよ。 でも、本当に助かります。 1から勉強やり直します。 この度は誠にありがとうございます。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>postによるphpへの受け渡し、ですからhtml文も必要だと思うのですが・・・??? >どうなのでしょうか? 私が書いたソースに、HTMLも含まれてます。 自分の固定観念を一度捨てましょう。
- t_ohta
- ベストアンサー率38% (5238/13705)
> )は消すべきでしょうか? > (を加えるとしたらどこに加えるべきでしょうか? この疑問が出るという事は、PHPの基礎の基礎を理解されていないと言う事でしょうから、まずは複雑なプログラムを作る前に基本的な構文や記述ルールを勉強した方がいいと思います。 基礎を理解していないとまともにプログラムを組むことができません。
お礼
おっしゃる通りです。 基礎は凄く大事ですね。 ()の問題は答えてくださらないでしょうか? 宜しくお願い申し上げます。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>実行ってphpの場合、どうするのでしょうか? これをindex.phpという名前で保存します。 それを、XAMPPなど経由で、開いてください。 (別の名前では、駄目です。動いた後、 なぜ別の名前では駄目なのかを学習してください) この部分ですが、PHPのプログラムを「実行しろ」っていわれたら 「どうするの?」って考えは、もうそろそろ捨ててください。 常に、 「ApacheなどのWebサーバー経由でパーサーとしてPHPが選択される環境で、標準入力からPHPにパラメータが渡り、 PHPプログラムを実行され標準出力に結果が返る。」 が、99%だと思っていいです。使い込んでくると、それ以外の 実行スタイルもありますが、今あなたが学ぶ意味はありませんから。 正直、ジュースが目の前にある時「どうやって飲むの?」って言われる気分です。(だから他の人が馬鹿にされてると思うのですがね) >このプログラムは何を意味するのでしょうか? >ボクの質問にもお答え願えないでしょうか? この質問の趣旨は 「postによる、phpとの受け渡し???」ですよ。 この質問の趣旨にそって、サンプルは書かれています。 以前話した通り、 わからない段階で、組み立てるのは馬鹿ですので。 まずは、最小限の環境を確実にマスターすることです。 その上で、大型のシステムが成り立ちます。 まずは、土台を固めないと、良い結果は得られません。 なお、プログラム中では、 $mode="input";間違いも同時に修正済みです。 なぜそれが修正されたと、「私」が言ってるのか?も 学習してみてください。 そもそも、概念がわかってないと、それに対する 質問の答えの意味が分からなくなると思いますが。 それについて答えるのは、元がわかってないのだから 意味を持たないと思いますよ。答えるのは構わないが。 まず、概念を覚えることで、逆に自分が何を知りたかったのかを あなた自身が答えられるようになりますよ。 大抵、わかってない人の頭の中は、 「何がわからないのか、わからない」の ループになることは多いですから。 また、言った通りこのプログラムが何をしていて なぜ動くのかを、確実に勉強してください。 OKですね?
お礼
ご回答誠にありがとうございます。 postによるphpへの受け渡し、ですからhtml文も必要だと思うのですが・・・??? どうなのでしょうか?
- AsarKingChang
- ベストアンサー率46% (3467/7474)
なお、間違っても「手打ちはしない事」 必ずコピー&ペーストをしてください。 貴方のソースは誤字脱字が多すぎて、質問以外の問題が起きる為です。 <?php echo $_POST['name'] ?> これは、 <?= $_POST['name'] ?> と略せます。 しかし、そもそも、直接$_POSTを参照してはいけません。 その'name'があるかを、誰が保証しましたか? って話です。必ず「あるなら入手」 とバリデーションをくわえるべきです。 後は、ただのテキストなので、わかりますね。 今回のサンプルは、XAMPPにて、実際に動作確認済みの為、 必ず動きます。 勝手に、これかな?などと考えないように、それこそ無駄な事なので。 動かない場合は「一切書き換えずに、動くようにしてください」 なぜなら、動くソースだからです。 動かし方がわかったら、その時点をベースに 拡張してみてください。 ってことで、この板は、これにて終了ですね。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
全く同じプログラムを、PHP側から見た教科書式でも投稿しておきます。 --------------------------- <?php $name=isset($_POST['name'])? $_POST['name']:""; switch(isset($_POST['submit'])? $_POST['submit']:"") { case "送信": echo "[".$name."]で決定しました。(終了)"; break; case "確認": echo "[".$name."]でよろしいですか?"; echo '<form action=. method=post>'; echo ' <input type="hidden" name="name" value="'.$name.'">'; echo ' <input type="submit" name="submit" value="戻る" />'; echo ' <input type="submit" name="submit" value="送信" />'; echo '</form>'; break; default: echo '<form action=. method=post>'; echo ' <input type="text" name="name" value="'.$name.'">'; echo ' <input type="submit" name="submit" value="確認">'; echo '</form>'; break; } ?> --------------------------- 処理は全く同じです。 元々のソースがやたらに長すぎますが、 単にこれだけで終わりです。 ただし、エスケープなどは一切してないので、 インジェクション攻撃などは考慮してないので、 あくまでテスト用です。セキュリティーを勉強したい場合は 学校などに行くのが良いかと。 今回はあくまで、フロー制御のみ紹介。
お礼
ご回答誠にありがとうございます。 最初のプログラムはhtmlとphpが混ざっていますが、分けなくてもいいのでしょうか??? 疑問点 1.html文を1つのファイルとしないとブラウザで写した際、php文が汚してしまうのではないかと懸念します。 分けないでコーディングするのは、どういう考えがあるのでしょうか? 2.2つプログラムがありますが、どちらともindex.phpの1つのファイルにコピーして実行結果を見るのでしょうか? 度々申し訳ございません。 ご回答のほど宜しくお願い申し上げます。
- 1
- 2
お礼
ご回答誠にありがとうございます。 apache経由でとは?XAMPPでapacheをオンにするということでしょうか? ファイルを右クリックすると、エディターで開くか、明らかに違うのしか出てきません。オンラインで開くを選ぶと、メールアドレスとパスワードを聞かれ、コードが出て来ました。私のやり方、間違っていると思います。 正しい実行方法を教えて下さい。 度々申し訳ございません。 何卒宜しくお願い申し上げます。