teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

引数

2016/02/20 15:21

投稿

chitoku
chitoku

スコア1610

answer CHANGED
@@ -6,10 +6,13 @@
6
6
  PHP には URL エンコードしてクエリ文字列を組み立てる関数が存在するので、改行がなくても GET の際は常にそれを使いましょう。
7
7
  コードは次のようになります。
8
8
 
9
+ CertaiN さんの補足を受けて修正しました。
10
+ > `http_build_query`のセパレータはphp.iniの設定に依存するので,第3引数まで省略せず指定するほうがベターです. `http_build_query($params, '', '&')`
11
+
9
12
  ```lang-php
10
13
  <?php
11
14
  $params = [
12
15
  'description' => $description,
13
16
  ];
14
- header('Location: branch.php?' . http_build_query($params));
17
+ header('Location: branch.php?' . http_build_query($params, '', '&'));
15
- ```
18
+ ```

1

補足

2016/02/20 15:21

投稿

chitoku
chitoku

スコア1610

answer CHANGED
@@ -1,1 +1,15 @@
1
- POST で渡してください
1
+ POST で渡してください
2
+
3
+ ----- 補足 -----
4
+ header によるブラウザー側でのリダイレクトで実現しているのですね(質問時に提示していただくとよかったと思います!)
5
+ さて、POST のリダイレクトを行うことはできないので、この場合 GET で渡すしかないですがパラメーターに対して URL エンコードが必要です。
6
+ PHP には URL エンコードしてクエリ文字列を組み立てる関数が存在するので、改行がなくても GET の際は常にそれを使いましょう。
7
+ コードは次のようになります。
8
+
9
+ ```lang-php
10
+ <?php
11
+ $params = [
12
+ 'description' => $description,
13
+ ];
14
+ header('Location: branch.php?' . http_build_query($params));
15
+ ```