電子書籍の厳選無料作品が豊富!

携帯サイト用のセッションでdocomoの時だけ思うように
フォームによるページ遷移ができません。
色々試してみたのですが、サッパリです。
どなたかお知恵をお貸し下さい。
例)
-- page01.php --
session_name( "test" );
session_start();
session_regenerate_id(true);
$test = session_name()."=".session_id();
if ( ( $smp01 = auth() ) == FALSE ) {
header( "Location: ./test.php?redirect=index_test.php?" );
exit;
}←ログイン時の処理(ユーザー定義関数にて)

       ・
       ・
       ・
<form action="page02.php?<?= $test ?>" method="get" />
入力:<input name="test01" type="text" value="" />
<input name="smp02" type="submit" value="next" >
</form>
↑入力させてpage02.phpにて処理
上記のようにしているのですが、
submitするとログイン時の処理に掛かってセッションが切れてしまい
ログインページに戻ってしまいます。
ログイン時の処理を削除するとpage02.phpへと遷移します。
ログイン時の処理を残したままセッションが切れずにフォームによる
ページ遷移ができるようにするにはどのようにすれば良いのでしょうか?

よろしくお願いします。

A 回答 (3件)

#1です。


1)getのみの機種については、知りませんでした。
いつもpostしか使っていないもので。
2)getにしてhiddenで渡してもダメですか?hiddenを一番上にするとか。

今回の場合get/postが問題じゃない気がしますが、旧機種のためにgetにして困っているのであれば、まずpostで作ってよいのではないでしょうか。携帯は旧機種対応に時間を割くより、新機種対応の方が大変だと思うので。

この回答への補足

じゃ、postでも問題ないんですね~。
2)の方法もやってみましたがダメでした。

>旧機種のためにgetにして困っているのであれば、・・・
はい、そうします。

ありがとうございました。

補足日時:2009/08/17 11:22
    • good
    • 0

ドコモだけというのが引っかかりますね。



私がやっていてドコモだけでセッションが切れるのは以下の二つくらいです。

1.実はuidをもらってる
実はuidをもらわないとダメな作りになっているが、uid=NULLGWDOCOMO(もしくはguid=ON)を忘れている。他のキャリアは常にuid的なものを送ってくれてるので問題ない。

2.実はWebサーバが二台でバランスしている
ドコモは特別リモートIPが変わりやすい(原理的には他のキャリアもたまに変わってる)ので、Webサーバが二台構成の場合には、アクセスの旅に別のWebサーバからアクセスしている可能性があります。その際にセッションファイルをWebサーバのtmpに置かれていると、さっきまでのセッションファイルがないのでセッション切れになります。
対処方法としては、a)一台構成ですます、b)memcachedとかにセッションデータを置いて複数のWebからアクセスする、c)nfsサーバをtmpディレクトリにini_setする。
などなど。
    • good
    • 0

method=post にして、hiddenに書いてみたらどうでしょう?


<input type="hidden" name="<?=session_name()?>" value="<?=session_id()?>">

この回答への補足

kaze2com様
アドバイスをいただきまして、有難うございます。
アドバイスの通り、methodの変更とhiddenを利用することにより、
全てが上手く動作するようになりました。

ご経験者ということなので、付随したことでご教授願います。
Q1.
postが使えない機種とはどの程度前までのことなのでしょうか?
※噂ではpostの利用できない機種があると聞きまして、何とかgetメソッドだけで構築していたのですが、getメソッドだけだとデータの受け渡しにかなり制限があって困っていました。
Q2.
getメソッドだけで構築することは、現実的には困難若しくは無理なことなのでしょうか。

よろしくお願いします。

補足日時:2009/08/17 01:31
    • good
    • 0
この回答へのお礼

大変、簡潔にわかり易いアドバイスでした。
有難うございました。

お礼日時:2009/08/17 11:27

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