htmlから既存phpにGETでデータを送信するphpを作りたい。
http:〜〜〜?○○=○○&○○=○○の形になるんでしょうか。
同時に、既存phpの中で最終的に結果をechoで出力している内容も編集用に取得したい。
上記方法をご教授頂きたく。。
すみません、補足致します。
新規機能として、既存のphpを呼び出すdispatcherとしてのphp を作成したいのです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
方法1:
formのmethodをgetにし、actionを受け取り先PHPにする。
※methodに何も設定しなければデフォルトGETなので「methodを指定しない」でも良いですが意図を明確にするためにも入れた方が良いです)
html
1<form method="get" action="hoge.php"> 2<input type="text" name="test"> 3</form>
方法2:
リンクに埋め込む
html
1<a href="hoge.php?test=XXXXX">送信</a>
上記のように渡す場合、受け取り先はいずれも下記でOKです。
php
1//hoge.php 2if($_SERVER['REQUEST_METHOD'] === 'GET'){ 3 echo $_GET["test"]; 4} 5
方法1ではtextコントロールに入力された内容が「hoge.php?test={入力内容}」として送信され、
方法2では指定のURLにアクセスしますが、方法1のように送信されたのと同じ結果となります。
同時に、既存phpの中で最終的に結果をechoで出力している内容も編集用に取得したい。
上記、よく理解できていませんが、phpであればGET送信した情報を利用できるので、
例えば、下記のようにするようなイメージでしょうか。
php
1//hoge.php 2if($_SERVER['REQUEST_METHOD'] === 'GET'){ 3 $test = ''; 4 if(array_key_exists("test",$_GET)){ 5 $test = htmlspecialchars($_GET["test"],ENT_QUOTES,'UTF-8'); 6 } 7 echo $test.'<input type="text" name="test" value="'.$test.'">'; 8} 9
コメントを受けての追記
下記のような構成にするとして下記のような感じ。
※理論だけで未検証のコードなのでエラーなど出た場合は適宜調整いただければと。
/{root}/index.html
/{root}/calc.php
/{root}/calc1/index.php
/{root}/calc2/index.php
/dispatcher.php
dispatcher.php をrootと同じ階層にしたのは、
機能的にWEBからアクセスさせないためです。
{root}以上の階層であればどこでも構いません(それこそフレームワークの考え方ですね;)
/{root}/index.html
html
1<a href="calc.php?type=calc1&a=123&b=345">計算1へ</a> 2<a href="calc.php?type=calc2&a=123&c=678">計算2へ</a>
/{root}/calc.php
php
1if($_SERVER['REQUEST_METHOD'] === 'GET'){ 2 require_once __DIR__."/../dispatcher.php" 3} 4echo "エラー";
calc.phpを経由するのはdispatcherの存在を隠すためです。
/dispatcher.php
php
1 //計算種類が存在するか確認 2 if(array_key_exists("type",$_GET) && file_exists(__DIR__."/{root}/".$_GET["type"]."/index.php")){ 3 $qa_group = array(); 4 //計算種類以外をクエリストリングとして再編 5 foreach($_GET as $key=>$value){ 6 if($key== "type") continue; 7 $qa_group[] = $key."=".$value; 8 } 9 $qa = ''; 10 if(count($qa_group) > 0){ 11 $qa = '?'.implode("&",$qa_group); 12 } 13 //対象の計算へリダイレクト 14 header("Location: ".__DIR__."/{root}/{$_GET["type"]}/{$qa}"); 15 exit; 16}
投稿2018/02/05 07:42
編集2018/02/05 10:04総合スコア80852
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/05 07:54
2018/02/05 08:03
2018/02/05 08:06
2018/02/05 08:11
2018/02/05 08:23
2018/02/05 08:30 編集
2018/02/05 08:36
2018/02/05 10:04
2018/02/05 10:07