海外旅行から帰ってきたら、まず何を食べる?

現在稼働中のWebシステムの保守を担当しています。
先日、お客様から「URLに付いている [ ] を消して欲しい」との依頼がありましたが、
やり方が分からず、困っております。

現在、
xxx/aaa[]/1,2,3/bbb[]/1,2,3/ このようになっているURLを
xxx/aaa/1,2,3/bbb/1,2,3/ に変更したいという依頼です。


現在、以下のようなフォームがあり
<form action="xxx.php" method="GET">
<input type="checkbox" name="aaa[]" value="1">
<input type="checkbox" name="aaa[]" value="2">
<input type="checkbox" name="aaa[]" value="3">
<input type="checkbox" name="bbb[]" value="1">
<input type="checkbox" name="bbb[]" value="2">
<input type="checkbox" name="bbb[]" value="3">
</form>

このフォームを送信するとURLは以下のようになりますが、
xxx.php?aaa[]=1,2,3&bbb[]=1,2,3

これを .htaccess で
xxx/aaa[]/1,2,3/bbb[]/1,2,3/
というように書き換えています。

このURLを、
xxx/aaa/1,2,3/bbb/1,2,3/
に変更することはできますでしょうか?


html、.htaccess、php、どの部分が改修になっても構いません。

[ ] を削除したいという理由としては、
インターネットの広告を出すときに、広告登録フォームでURLがエラーになるから、ということでした。

広告登録フォームでURLがエラーにならなければ良いのかと思い、
xxx/aaa%5b%5d/1,2,3/bbb%5b%5d/1,2,3/ というように
[ ] の部分をURLエンコードする方法をお伝えしましたが、%が付くのもダメということでした。

xxx/aaa_0/1/aaa_1/2/aaa_2/3/bbb_0/1/bbb_1/2/bbb_2/3/ というように
カンマ区切りじゃなくなるのも嫌だそうです。

あくまで
xxx/aaa/1,2,3/bbb/1,2,3/
の形が良いとのことでした。

A 回答 (3件)

>このフォームを送信するとURLは以下のようになりますが、


>xxx.php?aaa[]=1,2,3&bbb[]=1,2,3

HTMLの文法上は、そうなりません。
aaa[]=1&aaa[]=2&aaa[]=3&bbb[]=1&bbb[]=2&bbb[]=3
となるはずです。

もしaaa[]=1,2,3などとなっているのであれば、JavaScriptで送信データを生成しているはずですから、
そのプログラムでaaa/1,2,3となるように書き換えれば良いと思います。

--------------------
>あくまで
>xxx/aaa/1,2,3/bbb/1,2,3/
>の形が良いとのことでした。
いずれにしてもこの形式で「送信」するには、JavaScriptでデータを生成しないとダメだと思います。

サーバーで受信してからの話であればPHPで$_GET["aaa"][0]、$_GET["aaa"][1]を結合し直せば良いでしょうけど、
ただの二度手間じゃないですかね。
    • good
    • 0
この回答へのお礼

> aaa[]=1&aaa[]=2&aaa[]=3&bbb[]=1&bbb[]=2&bbb[]=3
> となるはずです。
確かに、サンプルのformを送信してみたら、
urlは回答いただいたものになりました。

aaa[]/1,2,3のように書き換えているところを探したら、
JavaScriptではなかったですが、
phpでリダイレクトさせている箇所を見つけました。

その部分をaaa/1,2,3に変更し、
あとはexplode(",", $_GET["aaa"])で修正前と同じ配列に戻して対応しました。

重要なヒントになりました。ありがとうございました。

お礼日時:2013/01/20 10:36

>弊社では、今稼動しているソースを頼りに、カスタマイズなどの保守を行っています。



そういう事でしたら、[]を削除して問題ないかまずはソースを解析して調べるしかないのではないでしょうか。
何となく"[]"の有無でチェックボックスかどうかの判断をしてそうな気はしますけど。
    • good
    • 0
この回答へのお礼

ありがとうございます。

"[]"の有無でチェックボックスかどうかの判断…ではなかったですが、
受け取った値が配列だったらURLを書き換えてリダイレクトするという処理を見つけました。

お礼日時:2013/01/20 10:37

[]を消すことによって、そのwebシステムにどういう影響があるのか消していいものなのかどうかわかるのは、そのwebシステムを構築し

た業者だと思いますので、たずねるならそのwebシステムを構築した業者ではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

Webシステムを構築した業者はどこだか分かりません。
倒産したのかなどの詳しい話は分かりませんが、
こういった内部仕様が分かる資料やそれを知っている人もいないようです。

弊社では、今稼動しているソースを頼りに、カスタマイズなどの保守を行っています。

ちなみに、
<input type="checkbox" name="aaa[]" value="1">
<input type="checkbox" name="aaa[]" value="2">
<input type="checkbox" name="aaa[]" value="3">
の部分を
<input type="checkbox" name="aaa" value="1">
<input type="checkbox" name="aaa" value="2">
<input type="checkbox" name="aaa" value="3">
として、
チェックボックスすべてにチェックを付けて送信しても、
URLは
xxx.php?aaa=1&aaa=2&aaa=3&bbb=1&bbb=2&bbb=3 となるはずだと思いますが
.htaccess で書き換えられた結果は
xxx/aaa/3/bbb/3/ となってしまいます。

お礼日時:2012/12/31 14:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報