• 締切済み

SESSIONの取得タイミングについて

現在簡単な会員登録のサイトを作っているのですが フォームに入力してもらった値を同じ画面でDBに登録するのではなく、 確認画面を新しく起こしてそこで登録ボタンを押せばDBに書き込むようにしたいのですが上手くいきません。 処理の順番は 1.フォームの確認ボタンを押されると値をSESSIONに登録(PHP)  ↓ 2.確認ボタンで新しいWindowをJavaで起こします  ↓ 3.確認画面でSESSIONの値を確認  ↓ 4.SESSIONの値をDBに登録 としたいのですが どうも2.の処理が1.よりも先に入って確認画面にはSESSIONの値が入っていません。 親WindowではSESSIONの値は入っているのですが。 確認ボタンに値の取得と新しいWindowを開くJavaと2つの機能を持たしていることが原因だろうとは思うのですが、 Windowを開くタイミングを遅らせる等の処理でうまく回す方法はありませんでしょうか? (Javaを使ったのはWindowサイズを変更したかったからです。) ご存知の方おられましたらご教授願えないでしょうか。 よろしくお願いします。 環境 レンタルサーバーにてPHP4+MySQL4

みんなの回答

  • 11spec0
  • ベストアンサー率83% (10/12)
回答No.1

ロジックはどんな感じになっているのでしょうか?載せていただかないとわかりずらいです。きちんとsession_start();で開始していますか?

ppalot
質問者

補足

11spec0さんへ 判りにくくて申し訳ありません。 関係していると思われるところを抜粋して書いておきます。 session_start();等は間違いないはずです。 そもそもJavaを使って子窓「client_input4.phpへ飛ばす前まではきちんと動作しておりました。 (同じ画面で処理していました) また、一度目に子窓「client_input4.phpを開く際にはセッションが渡っていない為に Notice: Undefined index: ID_client in ~ Notice: Undefined index: client_NAME in ~ のエラーになりますが一旦親ファイルに戻って再度確認ボタンを押すと 以降はうまく動作します。 子窓「client_input4.php」を閉じてから試してみても きちんとセッションの値が渡っています。 ひょっとしてダミーでセッションに値を与えておけば上手くいくかと思い if(!isset($_SESSION["ID_client"])){$_SESSION["ID_client"]="";} if(!isset($_SESSION["client_NAME"])){$_SESSION["client_NAME"]="";} と親ファイルに記述してみたりもしましたが効果なしでした。 何か良い解決策ご存知でしたらご教授ください。 よろしくお願いします。 親ファイル「client_input3.php」 -------------------------------------------------------------------------------- <?php session_start(); if ($_SERVER["REQUEST_METHOD"]=="POST"){ if (isset($_POST["submit"])){ $new_ID_client = htmlspecialchars($_POST["ID_client"], ENT_QUOTES); $new_client_NAME = htmlspecialchars($_POST["client_NAME"], ENT_QUOTES); $_SESSION["ID_client"] = $new_ID_client; $_SESSION["client_NAME"] = $new_client_NAME; } } ?> <head> <script type="text/javascript"> <!-- function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> </head> <body> <form id="" name="" method="post" action="<?=$_SERVER["PHP_SELF"]?>"> <input name="submit" type="submit" class="button01" id="submit" onclick="MM_openBrWindow('client_input4.php','clientinput4','channelmode = yes,directories = no,scrollbars=yes,resizable=yes')" value="確認" /> </form> </body> 子ファイル「client_input4.php」 -------------------------------------------------------------------------------- <?php session_start(); $new_ID_client = $_SESSION["ID_client"]; $new_person_NAME = $_SESSION["person_NAME"]; ?> <head> </head> <body> </body> --------------------------------------------------------------------------------