アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPのフォームを作って勉強しているのですが、フォーム → チェックページ → サンクスページの順で遷移しているのですが、サンクスでのデータ取得がいまいち把握できなく、アドバイスをお願いいたします。

まずフォームからpostでチェックページに飛ばします。
<form action="check.php" method="post">
<input type="text" name="name">
</form>

チェックページでは、
$name = $_POST["name"];
とかで受け取って入力データに問題が無ければサンクスに飛ばします。

print '<form action="thanks.php" method="post">';
print '<input name="name" type="hidden" value="' . $email . '">';
print '<input type="submit" value="OK">';
print '</form>';

↑この記載でサンクス側で名前を取得することができるのですが、
print '<input name="name" type="hidden" value="' . $name . '">'; の部分のvalueのところの書き方がいまいち理解できません。

print '<input name="name" type="hidden" value="">'; とかで送ってサンクス側で、

print = $_POST["name"];

とかで表示できないかと試してみたのですが、ダメでした。
とても根本的な部分について理解が出来ていないです…。

また、チェックからサンクスに送る方法で別の書き方などもあればアドバイス頂けますと幸いです。
初歩的な質問ですみません。宜しくお願いいたします。

A 回答 (4件)

> そのままフォームを書いて対象部分だけphpで書くのと、ご質問させて頂きましたように、頭からprint で全体を書くのは何か意味があるのでしょうか?



<?php ~ ?>や<?= ~ ?>で括った範囲はphpとして処理され、それ以外の部分はそのまま表示されるのはご理解されているかと思います。
私が例として書いたものは、ユーザーの入力内容が何であっても内容に変化がない部分はphpの処理の範囲外にそのまま書き、ユーザーの入力内容次第で変化する部分についてはphpで処理させただけにすぎません。
最終的な結果が同じになるのであればどちらの書き方でも問題ありませんが、1つのファイルの中で<?php ~ ?>や<?= ~ ?>で区切られた部分があまりに多くあると処理の流れが把握しにくくなってくるという弊害もありますので、全体の見やすさや好みで使い分ければよいかと思います。
    • good
    • 0

form.html



<html>
<body>
<form action="check.php" method="post">
<input type="text" name="name">
<input type="submit" value="submit">
</form>


check.php

<?php
$name = htmlspecialchars($_POST['name']);
?>
<html>
<body>
<?=$name?><br />
<form action="thanks.php" method="post">
<input name="name" type="hidden" value="<?=$name?>">
<input type="submit" value="OK">
</form>


thanks.php

<html>
<body>
<?=htmlspecialchars($_POST['name'])?><br />
<a href='form.html'>to form</a>


必要最小限のあくまで一例。
    • good
    • 0
この回答へのお礼

stcp様
有難うございます、こちらの内容ではサンクスまで送ることができました。
自分で書いていて恐縮ですが、stcp様の様にそのままフォームを書いて対象部分だけphpで書くのと、ご質問させて頂きましたように、頭からprint で全体を書くのは何か意味があるのでしょうか?

頭にprint書かないほうが、書きやすく見やすいように思うのですが…。

お礼日時:2020/03/16 12:51

フォーム


<form action="check.php" method="post">
<input type="text" name="name">
</form>

チェックページ
print '<form action="thanks.php" method="post">';
print '<input name="name" type="hidden" value="' . $_POST["name"] . '">';
print '<input type="submit" value="OK">';
print '</form>';

サンクスページ
print = $_POST["name"];

やりたいのは要するにこういう事でしょうか?
チェックページのhiddenをtextに変えて実行してみれば、値がどう受け渡されているか分かるのではないかと思います。
    • good
    • 0
この回答へのお礼

naoiz様
有難うございます。
行いたいのは頂いた流れであっていますが、試してみましたが、やはりサンクスページでprint = $_POST["name"]; を行ってもエラーとなり表示されませんでした。
チェックからをtextに変えても同じでした、考え方が間違っているのでしょうか?

お礼日時:2020/03/16 12:33

>>↑この記載でサンクス側で名前を取得することができるのですが、


print '<input name="name" type="hidden" value="' . $name . '">'; の部分のvalueのところの書き方がいまいち理解できません。

これは単純にvalueの値として$nameの内容の文字列を'(シングルクオート)で囲って連結してあげているだけですね。

>>とても根本的な部分について理解が出来ていないです…。

まあ、PHPの理解というよりも、HTMLの書き方の理解が先なのかもしれませんね。
それが理解できていたら、そこから推論すればわかることです。

いずれにしても、私の経験からして、ホームページ関係の動作を理解するには、「PHPの勉強だけでは無理!!」ってことなんですよね。
でも、そのあたりのことって、入門書では解説されてないことも多いです。

というのも、最近だと、最低限の学習内容として、PHPやHTMLだけでなくCSSにJavaScriptにjQueryにBootStrap、さらにはデータベースのMySQLの使い方とSQL言語までが必要ですからね。
それだけでも初心者には重荷なのに、それに加えて、Webサーバやアプリケーションサーバなどまで理解しろというのは、酷すぎるってことでしょう。

Webの世界は広いので、いくら学んでも学ぶネタは尽きません。
次々に新しい技術が出てきて、前の技術が陳腐化していきますからね。
常に勉強をし続けるしかないですね・・・。
    • good
    • 0
この回答へのお礼

有難うございます。
う~ん、やはり理解できません。

フォームからチェックページでは、名前が取得できるのに、チェックページからサンクスページでは、同じ方法で名前が取得できないです。
そもそも、チェックからサンクスではvalueに入れないと取得できないのでしょうか?
フォームからチェックではそのような処理は行っていなくとも表示されているのですが…。
何だか混乱してきました。TT

お礼日時:2020/03/15 19:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!