headerでほかのサイトに飛ばすとき、
header("Location: http://localhost/nani/success.php?tour=$_GET[tour]");
こんな感じでクエリを飛ばしているのですが、URLエンコーディングをする方法がわかりません。
ほかの変数($data)に入れるまえにurlencode($_GET[tour])として入れ替えて、
?tour=$_GET[tour]の部分を?tour=$dataとしたのですができません。
ご存知の方いらっしゃいましたら教えていただけませんでしょうか?
No.2ベストアンサー
- 回答日時:
送り側と受け取り側のエンコードが違う場合はやり方は4つあります
(1)送り側は受け取り側で受け取れるエンコードを事前に理解し、
送る際に仕様にあわせたデータをおくる
(2)送り側で明示的にエンコード方式を受け取り側に伝えてやり
受け取り側がそれをみて判断する
(3)受け取り側が、送られてきたデータのエンコードを想像して
想定と違う場合は自動的に変換してやる
(4)受け取り側は、送られてくるデータのエンコードを特定のものと信じて
それ以外の場合は、あきらめる。
今回の質問者さんの例ですと(4)だったので、しかたなく(1)にした
ということですね。
スケーラビリティを考えれば、通常(2)を採用する場合が多いようです。
(3)は不正確な処理なので賢明とはいえません
//send.php
<?PHP
$tour=urlencode($_GET["tour"]);
$e=urlencode($_GET["e"]);
if($tour){
header("Location: reach.php?tour=".$tour."&e=".$e);
exit();
}
?>
<html>
<body>
<a href="?tour=%82%A0%82%A2%82%A4&e=sjis">SJIS</a><br>
<a href="?tour=%A4%A2%A4%A4%A4%A6&e=euc">EUC</a><br>
<a href="?tour=%E3%81%82%E3%81%84%E3%81%86&e=utf">UTF</a><br>
</body>
</html>
//reach.php → SHIFT JISを前提
<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS">
<html>
<body>
<?PHP
mb_internal_encoding("SJIS");
$tour=$_GET["tour"];
switch($_GET["e"]){
case "euc":
$tour=mb_convert_encoding($tour,"SJIS","EUC");
break;
case "utf":
$tour=mb_convert_encoding($tour,"SJIS","UTF8");
break;
case "sjis":
case "":
break;
default:
$tour="";
}
print $tour;
?>
</body>
</html>
回答ありがとうございます。
コードまで用意していただきありがとうございます。
コードはプリントアウトアウトして勉強させていただきました。
しっかり記憶しておきます。
読み返すたびに質問の仕方が悪かったと感じています。
私が組んだプログラムはクエリの受け手も送り手も
utf-8で組んでいたので、たぶん受けて側はutf-8とわかるだろうと思っていたのですがそうではないのでしょうね。
勉強になりました。ありがとうございます。
No.1
- 回答日時:
なにがどうできないかわからないのでなんとも言えませんが・・・
普通に飛ぶような気がしますが?
<?PHP
header("Location: ttp://localhost/nani/success.php?tour=".urlencode($_GET["tour"])."");
?>
回答ありがとうございます。
>なにがどうできないかわからないのでなんとも言えませんが・・
関数headerのところで飛ばしたはずのクエリを読み取れなかったということです。
自己解決したのですが、utf-8だったから飛ばないと思っています。
shift_jisにしたらできました。
もしutf-8でもできるなら、できたということを教えていただきたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP(smarty)についての質問(文...
-
XAMPP1.7.1上でPHPを実行すると...
-
機種依存文字の文字化けについて
-
前後の全角スペースを削除する...
-
PHPのif文でその処理を途中で抜...
-
Subversionのリポジトリの削除
-
PHPにおける時間計算、時間足し...
-
【file_exists】ファイルが存在...
-
onedrive にexcelファイルをア...
-
xamppでGDを使いたい。
-
VBSの「MsgBox」について
-
SSI される .inc ファイル内に ...
-
phpのクラスにて別ファイルの変...
-
php.ini を設定を変更すると再...
-
imagecreatetruecolor()関数で...
-
php,mysqlにて画像パス保存/表...
-
ファイルのアップロードで、フ...
-
PythonのTkinter詳しい方へ。画...
-
PHPでネットワークドライブのop...
-
フォントの色を変えるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
前後の全角スペースを削除する...
-
PHP(smarty)についての質問(文...
-
mb_convert_variablesで変換出...
-
日付と年月日を選択するコード...
-
XAMPP1.7.1上でPHPを実行すると...
-
XMLパースエラー回避方法
-
phpでfopen()やfputs()が使えない
-
php エラー
-
phpの画面表示が真っ白です
-
プログラムの表示が著書と異な...
-
PHP実行時のエラーについて
-
PEARのXML/Unserializer.phpが...
-
文字化けについて
-
複数の文字列をファイルに書き...
-
Wordpressを利用したソート機能...
-
条件によってmeta http-equiv="...
-
<form action="bbs.php" method...
-
【PHP?】header("location : ...
-
PHP で複数行の HTML を他の PH...
-
ライブドアブログにPHPスクリプ...
おすすめ情報