• 締切済み

メール送信されたurlを取得したい

HTML_QuickFormを使ってフォームをつくる予定なのですが どこのページから送信されたのかを取得したいと思っているのですが どのような方法がありますでしょうか? 具体的には http://example.com/sample1.htmlhttp://example.com/sample2.htmlhttp://example.com/sample3.htmlに フォームがありどこのページから送信されたかを取得したいと いうことです。 また、postでメール送信するのですがメール送信時に取得した urlを表示させる場合どのようにすればいいのでしょうか?

noname#65793
noname#65793
  • PHP
  • 回答数3
  • ありがとう数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に拘る必要もありませんし、動的に読み込むテンプレートを変更することもできます。 そうすればもっとシンプルにできるかと思いますが。 質問の意図と異なってしまったかもしれませんが、お力になれれば幸いです。 また何かあれば時間のある時にお答えさせて頂きます。 でわ。

noname#65793
質問者

お礼

度々もうしわけありません^^; まだ触り始めたばかりなもので無駄に複雑な箇所もあるかと思うのですが 以下のような感じです。 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は扱えませんが・・

noname#65793
質問者

お礼

お返事ありがとうございます。 サイト構成の詳細は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で個別の値を仕込んでおくのがベストかと思います。

noname#65793
質問者

お礼

お返事ありがとうございます。 早速環境変数という方法を試してみたところ うまく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

noname#65793
質問者

補足

キャッシュが邪魔していたようで <input type="hidden" name="page" value="名前1" /> で表示されるようになりました。 しかし動的に変更する方法がいまいちわからないので 引き続きアドバイスなど頂けますと幸いです。

関連するQ&A

  • リンク元のURLをメールで送信したいのですが

    リンク元のURLをメールで送信したいのですが 複数のページから1つのメールフォームを兼用しているのですが、その際、元のページのURLを一緒に送信したいのですがうまく出来ません。 使っているメールフォームはform_mailer.cgiです。 ●全体の流れ 【1】各商品ページ(HTML) ボタンをクリックでメールフォームへ     ↓ 【2】メールフォーム(HTML) 項目を入力後、送信ボタンをクリック     ↓ 【3】確認画面(form_mailer.cgi) 送信ボタンをクリック     ↓ 【4】メール送信 ・【1】のページのURLを【4】で送信したいのです。 ・【2】と【3】の時にはできれば「hidden」等で非表示にしておきたいです。 いろいろ調べてみたのですが、JavaScriptの「document.write(document.referrer);」が使えるのかと思ったのですが、それを【2】以降どうCGIに渡せばいいのかがわかりません。 もしくは、他に手段があるのかもしれませんが…。 どなたか、方法がわかりましたらご教授願います。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • PHPでformで送信された結果のページを取得

    例えば、 http://www.example.com/test のページに、以下のようなフォームがあり、 <form name="form" method="post"> <input type="text" name="key" value="" /> <input type="submit" name="submit" value="送信" /> </form> 例えば、文字数をカウントするプログラムを作ったとして、 テキストBOXに適当な文字、例えば「テスト」と書いて送信をクリックすると、 URLをそのままで、テキストBOXに入力された「テスト」の文字数である「3」と表示するような事をPHPで作ったとします。 これは、手動で実際に入力して送信をクリックしなくても、 PHPで操作して、結果ページの情報を取得することって可能ですか? PHPでテキストに書く文字を指定して、(仮想的に)送信を押して、表示されるページのHTMLソースを取得したいのです。 もし可能でしたらお願いします。

    • ベストアンサー
    • PHP
  • URLのサブドメインとドメイン部分の取得

    PHPのpreg_matchでURLのサブドメイン部分とドメイン部分を取得したいのですが、どのように書けばよいでしょうか? たとえば、「http://www.example.com/index.html」だった場合、 「www」と「example.com」を取得して、 「http://sample.www.example.co.jp」だった場合は、 「sample.www」と「example.co.jp」が取得したいと考えています。

    • 締切済み
    • PHP
  • 将来の日時を設定して、メールを送信

    PHP5 Mysql5 で、運用しています。 現在は複数のメールアドレスにそれぞれにメールを出していますが、 送信時間を設定できるように変更しています。 【現在】 $sql =" select * from member order by id" ; $rst = mysql_query($sql, $con); ココはテーブルで一覧で出して、[checkbox]で 選択できるようにしています。 while($rows = mysql_fetch_array($rst)) { ・ ・ <input name=\"mailid[{$i}]\" type=\"checkbox\" value=\"".$rows["id"]."\" checked> ・ ・ mb_send_mail($to, $title, $honbun, "From:$from"); } これを発信時間を設定して送りたく変更をしています。 【フォームから受信】 $mailid= $_POST["mailid"]; //チェックボックスにチェックを入れると送信 $title= $_POST["title"]; $honbun= $_POST["honbun"]; $mon= $_POST["mon"]; $day= $_POST["day"]; $time= $_POST["time"]; メールの送信フォームから上記データを送って、もう一度ココで 送信フォームページと同じように [while] で[mail] を取りだして 送信予定日時、タイトル、本文、送信先メールアドレス をmysql に保存したいのですが、送信先メールアドレスはどのように保存したらいいのでしょうか? 一つのフィールドに sample@sample.com,sample@sample.com,sample@sample.com,sample@sample.com, このように全部入れていいのでしょうか? **最大500件ほどになります その後、cron で php を動かして日時でマッチした列を送信するように しようと思っています。 *このような時にはPHPは使用しないと言うのは読みましたが、PHPしか  理解できそうに無いので、この方法で実現しようと思っています。 宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • PHP5でメール送信フォームのURLを分らなくする

    PHP5でメール送信フォームのURLを分らなくする PHP5でメール送信フォームを作っています。 開発環境:Win7,Achache2 このファイルをファイル名、URLが分らなくする方法がわかりません。 例: http://kohhi.com/search?q=PHP%E3%80%8AB&src=IE-SearchBox&FORM=IE8SRC どのような仕組みで上記のような事ができるのでしょうか。 PHP、セキュアファイルで検索してもうまく検索できません。 サンプルプログラムなど、サイトを教えてくれるだけでも幸いです。

    • ベストアンサー
    • PHP
  • 携帯電話にURLを送信するフォーム

    携帯電話用のサイトを作って、PC版のページに、 URL送信フォームを作りたいのですが、 (具体的には、フォームに自分の携帯電話のメールアドレスを入力し、URLを送信といった感じ) どうやればできるのでしょうか?

  • IE6でiframeにPOSTできない

    同一ページに<form>と<iframe>があり、<form>のPOST先をその<iframe>にしています。 このとき、IE6のみPOSTできない条件があり困っております。 なんでも結構ですので、アドバイスいただけましたら助かります。 その条件は、 ・ページのURLとiframeのURLのスキーマとホスト名が一致していること です。 具体的には HTMLが <form name="formname" action="https://example.com/" method="post" target="iframename"> <input type="image" name="" src="image/button.gif" /> </form> <iframe name="iframename" src="https://example.com/page01"></iframe> の場合、 ■POSTがOKなパターン ページのURL=https://example.com/ ■POSTがNGなパターン ページのURL=http://example.com/ ページのURL=https://www.example.com/ よろしくお願いしますm(_ _)m

    • ベストアンサー
    • HTML
  • ホームページを作っています。URLの設定方法について教えてください。

    ホームーページを作っているのですが、 サーバーも独自ドメインも準備しました。 そこで、基本的かもしれませんが、、URLはどのように設定すれば良いのでしょうか? 例えば、www.example.comというドメインにしたとします。 このURLをHPのホームにしたいのですが、 FTPにHTMLをUPしたら、URLがwww.example.com/HTMLファイル名.htmlで表示されます。 www.example.com/自体をホームにしたい場合はどうすれば良いのでしょうか? また、www.example.com/mobile というモバイル用サイトも同時に作りたいのですが、 これもURL窓にwww.example.com/mobile.htmlと表示されます。 .htmlを取ってwww.example.com/mobileでURL窓に表示されるようにするには どうしたら良いのでしょうか? いまいち理解できていなくて、詳しい方がいたらご教授お願いします。

  • サブディレクトリへのアクセス制限

    いつも大変お世話になっておりますm(__)m Webサイトでのサブディレクトリへのアクセスについて質問させて下さい。 http://example.com/form.html という問い合わせページがあるとします。このフォームは <form name='form' method='POST' action='hoge/sample.php'> という感じで、サブフォルダ「hoge」の「sample.php」というファイル(http://example.com/hoge/sample.php)へPOSTで送信するように作成しています。 この場合、ブラウザのアドレス欄に「http://example.com/hoge/sample.php」と直接入力すると、sample.phpが実行されてしまいます。 直接アクセスされた場合、または別のファイル(http://example.com/form.html以外)からPOST送信やアクセスされた場合にエラー表示など、制限する事は可能でしょうか?? .htaccessの設定など、いろいろ調べてみたのですが、良い方法が見つかりませんでしたので、お詳しい方、是非ともお力をお貸し下さい。 宜しくお願い致しますm(__)m

    • ベストアンサー
    • PHP
  • CGIメールフォーム送信アラートについて

    よくCGIのメールフォームのサンプルの動作を試したりするのですが中には 送信ボタンをクリックすると「サンプルです。」や「サンプルのため送信できません。」 などのアラート表示されますがJava Script だと思うのですがCGIに同じ仕組みを取り入れるには どうすればいいでしょうか? 詳しい方教えて下さい。 参考になりそうなURLでも よろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう