
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>GETの引数は1つまで
クライアント側が処理することなのでこれはなんともなりませんが
サーバー側として、2つめ以降は無視するもしくは2つ以上あるときは
2つめ以降を削ってheaderで送っちゃうとか・・・
<?
$str=$_SERVER["REQUEST_URI"];
if(preg_match("/&/",$str)){
$str=preg_replace("/&.*$/","",$str);
header("Location:".$str);
}
?>
No.3
- 回答日時:
意図が判りませんが、検索キーワードのみGET、残り項目はURLに残したくない、みたいな事でしょうか?
それともセキュリティ上か何かでGETもPOSTも使いたくないとか?
●GETの引数は1つまでにしたい。
JavaScriptで入力項目全てを1つにまとめてGETの1つの引数として送信し、PHP側でそれを分割すれば可能です。
当然GETですので全ての内容がURLに現れてしまいます。
例えば「;」で項目全てを繋いで1つの文字列にして、PHP側で改めて「;」で分割するなどです。
例)
GETのURL(引数は"query"が1つだけ): test.php?query=yamada;taro;male;tokyoto:chiyodaku;chiyoda1-1-1
PHPでの分割: $gets = explode(";", $_GET["query"]);
●1つのみGETで、残りは全てPOSTで送信
別の方法としてGETとPOSTを混合して送信する手があります。
入力項目の1つのみGETで渡し(送信先URLに入れてしまう)、残りはPOSTで送信させます。
HTML--------------------------------------------------
<script type="text/javascript">
function form_get(){
var url = "test.php" + "?get_text1=" + document.getElementById("get_text1").value;
document.form1.action= url;
document.form1.submit();
}
</script>
</head>
<body>
<form method="post" name="form1">
post1: <input type="text" name="post_text1" value="p1"><br>
post2: <input type="text" name="post_text2" value="p2"><br>
get1: <input type="text" name="get_text1" value="g1" id="get_text1"><br>
get2: <input type="text" name="get_text2" value="g2"><br>
<input type="button" value="送信" onclick="form_get();" >
</form>
PHP(test.php)-----------------------------------------
echo "POST1: [". $_POST["post_text1"]. "]<br>\n";
echo "POST2: [". $_POST["post_text2"]. "]<br>\n";
echo "GET1: [". $_GET[ "get_text1" ]. "]<br>\n";
echo "GET2: [". $_GET[ "get_text2" ]. "]<br>\n";
送信結果(get_text2は送信されていない)---------------------
POST1: [p1]
POST2: [p2]
GET1: [g1]
GET2: []
送信URL(GETの引数はget_text1のみ)-----------------------------
http://xxxxxxx/test.php?get_text1=g1
当然URLエンコードやHTMLエンティティ化など行なって下さい。
No.2
- 回答日時:
postを嫌う理由が、いまひとつよくわからないのですが・・・
まぁ、解らないなりに回答をするとすれば・・・
httpプロトコルを使用する限り、できません。
でも、絶対に出来ないわけでもありません。まず、サーバー側は、アプリケーションサーバーが必要になりますし、仕掛けも大げさになりますが。
まず、サーバー側で、検索結果を送信する仕組みを、SOAPやXMLPRCなどを使用して、いわゆるWEBサービスの形で組みます。
その上で、検索フォームの「検索」ボタンをajax(要するに、java script)の手法で画面遷移することなく、自前でwebサービス側に要求を出し、動的に検索結果を組み込んだ形に画面を再構築する。
と言った形を使えば、そもそも、httpプロトコルを利用していませんから、当然、getもpostも使用せずに、検索結果を表示することが出来ます。
でも・・・もし、postやgetが、検索要求が平文で流れるから、途中で盗み見されるのが嫌だというセキュリティー方向の動機であれば、どんなプロトコルを利用しようとも、同じ事です。
これが理由であれば、ネットワークに流すデータを総て暗号化するしか手がありません。現状、一般的な手法でこれに答えられる手段は、httpsしか無いと思います。
そして、もし、postやgetが、使っているユーザーがちょっと工夫をすれば、送信要求の方法がばれてしまい、サーバーが破られるというのが動機であれば、これは、どんな手法を利用しても防ぐ手段はありません。どんなプロトコルを利用しようとも、ユーザーが自分のコンピューターの通信を監視すれば、アクセス手法は確実にとらえられるからです。(postのデータをちゃんと解析してアクセス手段を理解できるだけのスキルと根気の持ち主なら、とっても簡単なことです。)これを防御できる手段は、サーバー側で不正なアクセスをちゃんと阻止するようにプログラムするしかないということです。getよりpostの方が安全だし・・・の流れで、get・post以外の方法は?なんて考えない方がよろしいかと・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理後のページ内移動について
-
フォーム送信後の更新ボタンで...
-
テキストリンクをPOST送信したい
-
リンク先のフォームに自動的に...
-
HTMLのリンクをクリックするこ...
-
フォームへの前回入力値をクリ...
-
プルダウンリンクを外部ファイ...
-
PHPでじゃんけん勝負
-
PHPでクリックするたびに変数を...
-
同じページでフォームデータを...
-
フォームの状態やGETのURLは保...
-
【PHP&JavaScript】複数の別ウ...
-
フォーム INPUTの文字化け対策...
-
WordのIDataObject::GetData呼...
-
POSTを使わずに値を渡す方法
-
PHPでフォームに表示させたCSV...
-
PHPでフォームデータをサンクス...
-
PHPエラー 教えて下さい
-
セッションにIDを振って値を代入
-
PHPの初心者です。現在チェック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストリンクをPOST送信したい
-
ボタンをクリックでPHP文を実行
-
$_POST['hoge']のデータをフラ...
-
PHPのエラーの解消法について教...
-
phpで、フォームのラジオボタン...
-
フォームのPOST情報が渡らない?
-
PHPでバーコード読み取りって・...
-
セッションを使わずに遷移先画...
-
なぜ、unexpected T_VARIABLEに...
-
アマゾンのような評価の星を選...
-
PHPで検索結果の一覧から任意の...
-
サブウィンドウのFORM内データ...
-
フォーム送信後の更新ボタンで...
-
入力ホーム form actionでphpペ...
-
PHP 入力フォームにて半角スペ...
-
PHPの質問:フォームから受け取...
-
PHPでURLにジャンプするには?
-
フォームにダブルクォーテーシ...
-
チェックボックスのチェック済...
-
ユーザー認証&リンク先振り分け
おすすめ情報