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で質問しましょう!
似たような質問が見つかりました
- アイドル・グラビアアイドル 嵐のDVDのRecord of Memories と Anniversary Tour 5×20 の 2 2022/11/13 09:45
- ライブ・コンサート・クラブ SixTONES LIVE TOURの話 2 2022/12/23 02:00
- アイドル・グラビアアイドル 本日(9/15)、嵐のライブ映画の再上映がありますが、映画館でグッズ販売ってあるのでしょうか? 数日 1 2022/09/15 05:02
- 英語 英語では「ホテル館内紹介」をどう表現しますか? 3 2022/12/13 16:01
- イベント・祭り スポーツの話 2 2022/11/01 14:50
- ライブ・コンサート・クラブ TWICEのTWICE 5TH WORLD TOUR は会員でないとチケットは応募できませんか?ファ 1 2023/02/28 03:33
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- イベント・祭り スポーツの話 1 2022/10/15 00:35
- フランス語 フランス語フレーズの意味 1 2022/10/25 16:11
- ライブ・コンサート・クラブ ※矢沢永吉のファンクラブ入ってますが、㈯は、なかなか当たりません。そうしたら、当たりますか? 0 2023/05/13 20:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php エラー
-
PHP(smarty)についての質問(文...
-
conf.php設定について
-
mb_convert_variablesで変換出...
-
POSTされた値をEUCで表示したい
-
初心者で数当てゲームを作って...
-
前後の全角スペースを削除する...
-
phpでfopen()やfputs()が使えない
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
PHPで新しいウインドウで開く命...
-
別ファイルの変数を呼び出した...
-
バッチを用いたフォルダの自動移動
-
php.ini を設定を変更すると再...
-
form actionで二つ送信先を指定...
-
phpの中でphpを書けないか
-
「@$変数」の「@の意味は?」
-
リダイレクトでPOST
-
PHPで、エラーがない場合のみ画...
-
フォームで戻った際に入力済み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化けについて
-
日付と年月日を選択するコード...
-
初心者で数当てゲームを作って...
-
htmlのエラーについて(デバッグ)
-
phpの画面表示が真っ白です
-
前後の全角スペースを削除する...
-
XAMPP1.7.1上でPHPを実行すると...
-
mb_convert_variablesで変換出...
-
これまで遷移してきたサイト内...
-
php エラー
-
XMLパースエラー回避方法
-
URLエンコーディングで悩ん...
-
【PHP?】header("location : ...
-
phpでfopen()やfputs()が使えない
-
PHPの勉強中の初心者です。
-
PHPプログラムの間違い
-
php ログイン
-
PHP(smarty)についての質問(文...
-
複数の文字列をファイルに書き...
-
<form action="bbs.php" method...
おすすめ情報