HTML_QuickFormを使ってフォームをつくる予定なのですが
どこのページから送信されたのかを取得したいと思っているのですが
どのような方法がありますでしょうか?
具体的には
http://example.com/sample1.htmlと
http://example.com/sample2.htmlと
http://example.com/sample3.htmlに
フォームがありどこのページから送信されたかを取得したいと
いうことです。
また、postでメール送信するのですがメール送信時に取得した
urlを表示させる場合どのようにすればいいのでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
え~と、例えばQuickFormを利用するphpをform.phpとした場合
フォームを表示させるアクセス先はform.phpではないのでしょうか?
サイト構成がいまいち分かりませんが
例として
form.php
<?php
require 'HTML/QuickForm.php';
require 'HTML/QuickForm/Renderer/ArraySmarty.php';
require 'Smarty/Smarty.class.php';
$form = new HTML_QuickForm('form1', 'post');
$form->addElement('hidden', 'page', '名前1');
$form->addElement('text', 'name');
$smarty = new Smarty();
$renderer =& new HTML_QuickForm_Renderer_ArraySmarty($smarty);
$form->accept($renderer);
$smarty->assign('form', $renderer->toArray());
print $smarty->render('sample1.html');
sample1.html
<html>
<head></head>
<body>
<form {$form.attributes}>
{$form.hidden}
{$form.name.html}
</form>
</body>
</html>
などとすることで、QuickFormとSmartyを連携させることができます。
詳しくは「HTML_QuickForm Smarty 連携」などでGoogle検索してください。
あと、テンプレートは何も.tplに拘る必要もありませんし、動的に読み込むテンプレートを変更することもできます。
そうすればもっとシンプルにできるかと思いますが。
質問の意図と異なってしまったかもしれませんが、お力になれれば幸いです。
また何かあれば時間のある時にお答えさせて頂きます。
でわ。
度々もうしわけありません^^;
まだ触り始めたばかりなもので無駄に複雑な箇所もあるかと思うのですが
以下のような感じです。
aaa.php
require_once 'Smarty/Smarty.class.php';
$smarty = new Smarty;
$smarty->display('pages/aaa1.tpl');
pages/aaa1.tpl←表示するページの組み立て
{include file="common/body_top.tpl"}
{include file="common/header.tpl"}
{include file="main/sample1.html"}←htmlファイルの読込み
・・・
main/sample1.html←コンテンツ表示+QuickForm読込み
<div>...</div>
<div>
{include_php file="contact.php"}←QuickFormファイルの読込み
</div>
<div>...</div>
contact.php←QuickFormファイル
・・・省略
$smarty->display('contact/form.tpl');
main/sample1.html~main/sample30.htmlまであるのですが、
フォームはcontact.phpの1つで済ませたく
できればhtml側に直接hidden要素をつけたいのですが
どのようにすればいいでしょうか?
contact.phpに以下のようにやると確かにhiddenは取得できるのですが
全てのhtmlで全て同じ値を取得してしまうので困っております。
$form->addElement('hidden', 'page', '名前1');
No.2
- 回答日時:
QuickFormでのhiddenの生成方法は下のようなやり方になるはずですが
$form = new HTML_QuickForm('form1', 'post');
$form->addElement('hidden', 'page', '名前1');
このフォームデータをPOSTした先で
print $_POST['page'];
とやれば、名前1が取得できます。
> また以下のように複数のページの名前を取得したいので動的にpageのvalueを
> 切り替えることができればいいのですがそのようなことは可能でしょうか?
> http://example.com/sample1.html→名前1
> http://example.com/sample2.html→名前2
> http://example.com/sample3.html→名前3
それぞれのページでname="page"のhiddenをセットし、value値を変更すればよいだけです。
ちなみに上のsample1.htmlなどはapacheのWebサーバーの設定などでhtmlをphpとして読み込むようにしているのでしょうか?
htmlではQuickFormは扱えませんが・・
お返事ありがとうございます。
サイト構成の詳細はsmartyを使っています。
通常tplファイルを読み込むのですがどうしてもhtml(またはphp)にしたい箇所があり
おおもとのtplから部分的にhtmlファイルを読み込みしています。
読み込まれるhtmlにさらにQuickFormのphpを読み込むというちょっと複雑な感じです。
.htaccessで制御しておりメール送信までは完了しているので動作には問題ありません。
QuickFormのphpを読み込むとhtmlの出力は<form...>~</form>まで
読み込まれるのでhtmlに<input hidden...>を入れてもform要素内でないと意味がなく
どうしたらいいものか悩んでおりました。
頻繁に編集するのはhtmlなのでできればhtmlに<input hidden...>を
設定できれば楽なのですが・・・
実際にページの名前を取得したい数は30ページくらいありQuickFormのphpはできれば1つで済ませたいのですがなにかいい方法はありますでしょうか?
No.1
- 回答日時:
POSTされた先のメール送信処理を行うPHP側で取得したいということで宜しかったでしょうか?
その場合は、環境変数($_SERVER['HTTP_REFERER'])で取得できます。
但し、この値は完全に信用できる値ではないので、フォームにhiddenで個別の値を仕込んでおくのがベストかと思います。
この回答への補足
キャッシュが邪魔していたようで
<input type="hidden" name="page" value="名前1" />
で表示されるようになりました。
しかし動的に変更する方法がいまいちわからないので
引き続きアドバイスなど頂けますと幸いです。
お返事ありがとうございます。
早速環境変数という方法を試してみたところ
うまくurlを取得できました^^
>この値は完全に信用できる値ではないので、フォームにhiddenで個別の値を仕込んでおくのがベストかと思います。
あまりよくわからなかったのですが
phpに
$form->addElement('header', formheader5, '<input type="hidden" name="page" value="名前1" />');
としsmartyと連携してるのでtplに
{$form.header.formheader5}
とし出力しhtmlで見ると
<input type="hidden" name="page" value="名前1" />
と出力されるのを確認し
phpのメール本文組み立ての箇所に
{$value['page']}
hidden要素は出てこないのですがどこかおかしい箇所がありますでしょうか?
また以下のように複数のページの名前を取得したいので動的にpageのvalueを
切り替えることができればいいのですがそのようなことは可能でしょうか?
http://example.com/sample1.html→名前1
http://example.com/sample2.html→名前2
http://example.com/sample3.html→名前3
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Twitter 高度な検索 日付 単語 リンクをOutlook で送信 2 2022/06/18 18:36
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- その他(プログラミング・Web制作) 【GAS】Gmail本文をブラウザ表示された状態でPDFにしたいです 1 2022/12/12 09:54
- Outlook(アウトルック) Outlookのメール送信を取り消す方法 1 2022/11/17 13:10
- その他(メールソフト・メールサービス) 大阪市プレミアム付き商品券のweb申し込みで楽天モバイルのEメールだと返信メールが届かない 2 2022/09/19 17:08
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript Javascriptを使ってQRコード読み取り、取得した情報をPOSTしたいと思っています。 1 2023/04/28 15:18
- PHP a href リンクタグでだけで 送信が できちゃっています。 1 2022/04/18 04:25
- 教育・ドキュメンタリー どう言うことですか?OKWAVE 2 2022/04/20 18:41
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンをクリックでPHP文を実行
-
phpで、フォームのラジオボタン...
-
フォーム送信後の更新ボタンで...
-
PHPのエラーの解消法について教...
-
formの外にあるチェックボック...
-
header location が飛びません。
-
リンク先のフォームに自動的に...
-
テキストリンクをPOST送信したい
-
PHPでURLにジャンプするには?
-
アマゾンのような評価の星を選...
-
VBSのIEオブジェクトでフ...
-
GETとPOST以外のデータの渡し方...
-
PHP ボタンが押されたら処理を...
-
phpで変数を使ってcopyできない
-
PHP MySql 画像を取得
-
フォームへの前回入力値をクリ...
-
検索時の選択内容を保持する方法
-
PHPで入力フォームでデータを確...
-
【PHP】 文字サイズの変更につ...
-
<input type="hidden" >で配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでURLにジャンプするには?
-
PHPのエラーの解消法について教...
-
フォームで作った送信ボタンが...
-
テキストリンクをPOST送信したい
-
フォーム送信後の更新ボタンで...
-
ボタンをクリックでPHP文を実行
-
セッションを使わずに遷移先画...
-
PHPでファイルアップロード時に...
-
アマゾンのような評価の星を選...
-
phpで、フォームのラジオボタン...
-
PHP 入力フォームにて半角スペ...
-
PHPでバーコード読み取りって・...
-
PHPの質問:フォームから受け取...
-
$_POST['hoge']のデータをフラ...
-
フォームのPOST情報が渡らない?
-
GETとPOST以外のデータの渡し方...
-
phpのカウンタのリセット方法
-
header location が飛びません。
-
PHPでPCのローカル時刻は取得出...
-
変数が表示されない。
おすすめ情報