• ベストアンサー

i-modeサイト内でASPのセッション変数を使いたい

i-mode対応サイトをASP(ActiveServerPages)で作成しています。 セッション変数がページを変えると引き継がれないようなのですが、ページを切り替えても変数を引き継ぐ良い案はないでしょうか? formのpost/getやhidden以外の方法はないのでしょうか? みなさまよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.2

#1です。 まずASPだけではなくPHPだろうがCGIだろうがJSPだろうがセッション変数同等のモノは携帯では使えません。 コレは携帯端末の通信方法によるものでどうなるものでもありません。 1リクエスト毎にコネクションは破棄されます。サーバー側ではどうしようもありません。 次にformのGETやhiddenを使っているサイトも結構ありますが、セッション(接続)というよりユーザを特定するので有れば「携帯端末の個体識別情報」を使います。 http://www.limy.org/program/mobile/uid.html これで利用者が一意に特定できるのでそのほかの情報はデータベースを参照し利用する作りで問題ないと思います。 これで回答になったかな?

Mr-k_k
質問者

お礼

ありがとうございます! 「携帯端末の個体識別情報」 参考になりました。 検討してみます。

Mr-k_k
質問者

補足

セッション変数の代わりに、Server.Transfer(path)メソッドなるものでは代用できないでしょうか? セッション変数なども転送されるみたいなのですが...

その他の回答 (2)

回答No.3

できます。 携帯がセッションを引き継げない理由の一つに「携帯デバイスは Cookie を受け付けない」という事が挙げられます。よって、セッション維持に Cookie を使用しなければセッションを維持できます。 ASP の経験がないので具体的な設定方法が示せないので申し訳ありませんが、例えば ASP.NET だと「Cookieless モード」というものが存在し、その場合は URL の一部にセッション ID を保持して、セッション維持を実現します。ASP の場合も似たような手段でセッション ID を受け渡しする方法があればそれで可能です。或いは自作でも良いでしょう。 但し、その場合はセッションIDの漏えいがより発生しやすくなるので、セッションハイジャック対策は怠らないようにしなければなりません。

Mr-k_k
質問者

お礼

こんばんわ。 「URL の一部にセッション ID を保持して」とは、 ファイル名.asp?session=セッションID のようにパラメータを付けるということでしょうか? 「URL の一部にセッション ID を保持」というのがよくわかりません。 セッションハイジャック対策はどのようにすればよいのでしょうか? 参考にさせてもらいます。ありがとうございます。

  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.1

i-modeに限らず携帯ではセッション変数は使えません おっしゃるとおりの方法しか有りません。

Mr-k_k
質問者

お礼

こんばんわ。 ではASP(ActiveServerPages)ではi-modeや携帯で会員制サイトは作りにくいということですか? セキュリティのことを考えるとformのgetやhiddenは使っていないと思うのですが... ”携帯ではセッション変数は使えません”ということですが、その他のPHP・CGIなどでは使えるのですか? セッション変数の代わりのような機能はないでしょうか? ご回答ありがとうございました。

関連するQ&A

  • ASPのSession変数を配列にしたいのですが。。。

    ASPのSession変数を配列にして使用したいのですが、どのように表記すればいいのでしょうか? Do Until rs.EOF ID=Session("ID(i)") i=i+1 rs.MoveNext Loop という感じに使用したいのですが。。。

  • 携帯サイトでsessionは使用可能か

    HTML・PHPで3キャリア対応携帯サイトを作成しているのですが、session_id()などのセッション関連は携帯サイトでも使用できるのでしょうか? 例えば、ログインページで入力フォームの値(IDとパスワード)をsesession_id()で次のページに渡す際(header("Loca"))、PCのブラウザ(IE)では値を渡せ、かつ、次のページに進んだのですが、i-modeのエミュレータ(imodetool)では、次のページに移らず、ログイン画面に戻ってしまいます。 なお、ソースは以下のように記述しています。 if($_POST["name"] == XXXX) { session_start(); $_SESSION["user_id"] = $_POST["name"]; header("Location: http://xxxxxxxx.php?id=". session_id()); exit(); } お手数ですが、回答頂けると幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • i-modeについて

    i-mode用のページでも使用可能なのは、どのプログラムでしょうか??i-modeに JAVAが搭載されたっていうのは 何かで見たんですが・・・ ASPとか、VBスクリプトとか、いろいろあって何が違うのか、よく分からないので 詳しい方、ぜひ分かりやすく、教えてください。 JAVAスクリプトと JAVAアプレットでは、何が違うんでしょうか???よろしく お願いします。

  • i-modeで複数のページにデータを渡したい!

    i-modeで複数のページに入力したデータを引き継ぎたいのですがどうしたいいのかわかりません。 具体的には入力画面で入力したデータをサブ入力に引継ぎそして、 サブ入力で入力した内容と引継いだデータを入力画面に 返します。そして内容確認をしたいのですが、データの引継ぎ方がわかりません。セッションやクッキーを使用していないのでget&postでデータのやり取りを行っています。 よろしくお願いします。

  • $_SESSIONと、POSTやGETの違い

    SESSION ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・セキュリティが強い。 GET ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・URLとして送信される。 ・アンカータグからも送れる。 ・セキュリティが弱い。 POST ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・セキュリティが強い。 ・大量のデータ向け。 GETとの違いは分かるのですが、POSTとSESSIONの違いが良く分かりません。 $session_start(); $_SESSION["abc"] = "エービーシー"; のようにセッションを作って変数に格納し $session_start(); echo $_SESSION["abc"]; のように他のページで変数を使うことができますが、 POSTやGETも他のページで使えるので自動でセッションIDが作られていて SESSIONやPOSTやGETなどの送受信系のもので保存されたデータは 送受信系のものでデータを自由に取得できるのかなと思い試してみると $_SESSION["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得すると正常に動き、 $_SESSION["abc"]で送信したデータを他のページで$_GET["abc"]で取得するとエラー、 $_SESSION["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_GET["abc"]で送信したデータを他のページで$_GET["abc"]で取得すると正常に動き、 $_GET["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_GET["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得するとエラー、 $_POST["abc"]で送信したデータを他のページで$_POST["abc"]で取得すると正常に動き、 $_POST["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_POST["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得するとエラー、 送信された方法と受信する方法が一致しないもの以外はエラーになりました。 おんなじ方法で送信と受信をしないとダメなのですね。

    • ベストアンサー
    • PHP
  • セッション

    セッションについて教えて下さい。 指定のID、パスワードでログインしようと思っています。 ソースを記載しますので、お教え下さい。 ID:aaa パスワード:111とします。 [送り側フォーム] <form action="/test2.asp" method="POST" id=form1 name=form1> <input type="text" name="id" value=""><br> <input type="password" name="passwd" value=""> <input type="submit" value="LOGIN" id=submit1 name=submit1> </form> とし、 [受け取り側、認証 test2.asp ] <% If Session("user_test") <> "1" Then Response.Redirect "/test.asp" Response.End() End If %>ここで認証を判断し、認証できなければtest.aspへもどるとし、 Dim id, passwd id = Request.Form("id") passwd = Request.Form("passwd") Session("user_login") = "id" Session("user_login") = "passwd" IF id = "aaa" and passwd = "111" THEN Session("user_test") = 1 Response.Write ("OK") ELSE Response.Write ("ちがうよ") END IF %> ID、パスワードをセッション変数にいれ、各ページで認証すると言う事をやりたいのですが、うまくいきません。 どこがわるいか、お教え下さい。 ※以前にも似たような質問をしているのですが、改善されずお手上げです。

  • PHPのセッション変数 絞り込み検索

    PHP Version 5.1.6 flash actionscript2.0 最初の検索条件をセッション変数['first']に保存し、 (GETにより、種別を判断しています。 ~~/index.php?kind=A&value=1という形) 絞込検索時(値はページ内のチェックボックスからPOSTで受け取り、hiddenタグで、type=newを受け取ります。)に 最初の検索条件をセッション変数['first']から取り出すようにしています。 また絞り込み検索時でなければ、とりあえずいったん保存用の セッション変数['first']を初期化しています。 ここで、ページ内にフラッシュのNEWというボタンがあり、その中に var kind = "new"; get_URL("http://~~/index.php", "_blank","GET"); とだけ記述して、ページへkind=newという検索種別を渡すように しているのですが、挙動がおかしくなる場合があります。 [正常な動きをする場合] 1、ページ内のNEWのフラッシュボタンを押す。 予想通りの最初の検索ができる。 (この時点で、セッション変数['first']に"new"が入っているのは 確認済みです。) 2、ページ内のチェックボックスで、絞込み検索をかける。 予想通り、最初の検索条件+絞り込み条件を加えた検索ができる。 [異常な動きをする場合] 1、ページ内のリンクから最初の検索をする。 (~/index.php?kind=A&value=1)を押す。 (この時点で、セッション変数['first']に"A"が入っているのは 確認済みです。) 2、ページ内のチェックボックスで、絞込み検索をかける。 予想通り、最初の検索条件+絞り込み条件を加えた検索ができる。 3、ページ内のフラッシュのNEWボタンを押す。 予想通り、再度別条件での検索ができる。 4、ページ内のチェックボックスで、絞込み検索をかける。 なぜか、セッション変数['first']に、"A"が入ったままになっている。 よって、2の検索に変わってしまう。 ただし、このフラッシュボタンからではなく、たとえば ~/index.php?kind=new というGETで送るタイプのリンクからでは、予想通りの動きをします。 このあたりの挙動につきまして、ご教授いただければ幸いです。 下記コードです。(処理に関係ない部分は省略しております。) session_start(); session_register("first"); //パラメータを受ける。 //絞込検索でなければ、セッション変数を初期化 if($_REQUEST['kind'] != "more") { unset($_SESSION['first']; } switch($_REQUEST['kind']){ case "A": $_SESSION['first']= "A"; break; case "new": $_SESSION['first']= "new"; break; //絞込み検索 case "more": break; }

    • 締切済み
    • PHP
  • phpでSESSION変数の管理

    今私は、phpでページ間で変数をやり取りできる処理を作成しています。処理的には、ページAのテキストボックスtitleとテキストエリアsyosaiに入力された値をデータベースに追加し、ページBに画面を移動させるようにしたいと考えていますが、入力した値がnullになってしまい困っております。 ソースは以下のとおりです。 全部は書けませんので、怪しい部分だけ書きます。質問などがありましたら、その都度指摘をお願いします>△</ ページA ソース <form action="B.php" method="post"> <input type="text" name="title" value=""> <TEXTAREA name="syosai" cols="70" rows="10"> <input type="submit" name="b1" value="ページBへ"> <?php session_start(); if(!isset($_SESSION['title2']) || !isset($_SESSION['syosai2'])) { $_SESSION['title']=$_POST['title']; $_SESSION['syosai']=$_POST['syosai']; }else{} try{ $pdo = new PDO("mysql:host=localhost; dbname=****","****","****"); $stmt = $pdo->prepare("INSERT INTO user(clandername , syosai) VALUES(:rere3, :yuyu5)"); $stmt->bindValue(":rere3", $_SESSION['title']); $stmt->bindValue(":yuyu5", $_SESSION['syosai']); $stmt->execute(); }catch(PDOException $e){} ?> ページB ソース <form action="A.php"> <input type="submit" name="name" value="ページAへ" style="WIDTH: 70px; HEIGHT:50px"> <?php session_start(); ?> よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • セッションにIDを振って値を代入

    PHP初心者です。 PHP4.2.xを使っています。 ショッピングカートで購入した商品データをセッションで維持してカートに追加する機能部分を作っていますがうまくいきません。 コードは以下のとおりです。 【goods.php】 ----------------------------------------------------------- <? session_start(); ?> ■商品1 <form action="cart.php" method="POST"> <input type="hidden" name="id" value="1" /> <input name="num" type="text" /> <INPUT type=submit value="カートに追加"> </form> ■商品1 <form action="cart.php" method="POST"> <input type="hidden" name="id" value="2" /> <input name="num" type="text" /> <INPUT type=submit value="カートに追加"> </form> ----------------------------------------------------------- 【cart.php】 ----------------------------------------------------------- <? session_start(); if($_POST['id'] != ""){ $id = $_POST['id']; $num = $_POST['num']; // セッション名自体をIDで作っています。中身は個数のみです。 $_SESSION["$id"] = $num; } echo "カートに入ってる商品<br />"; for ($i = 0; $i<=100; $i++) { if (!empty($_SESSION["$i"])){ echo $_SESSION["$i"]. "<br>\n"; } } ?> ----------------------------------------------------------- goods.phpのファイルで商品1と商品2を1つずつカートに入れれば cart.phpのページで 1 1 と表示されるはずが、1しか出ません。 $_SESSION["1"] $_SESSION["2"]の中身が表示される予定でしたがそうならず、 そのときPOSTで投げられたIDしか$_SESSION["$id"]に保持されません。 どうすればどんどん商品をカートに追加できますでしょうか? アドバイスのほどどうぞよろしくお願いします!

    • ベストアンサー
    • PHP
  • ボタンを押してセッション変数を保存できるでしょうか

    レガシーASPにてWebのページを作っております。 押したリンク(ボタン)によって異なる値をセッション変数に保存したいのですが、 この様な事は可能でしょうか? OnClickイベントはJavascriptですし、 Session.Contents("~")はVBSですので、 JavascriptからVBSを呼べるか? という質問になってしまうのでしょうか。

専門家に質問してみよう