rakutoネット
お問合せ 免責事項 Q&A 掲示板 サイト管理 リンク サイトマップ
  • ツリー
  • 閲覧
  • 投稿
  • 検索

phpのセッション情報について

     投稿者:none   日時:2007-08-31 17:18:10

お久しぶりです。
SQLとは関係ないのですが、phpのセッションに関してお聞きしたい事
がありまして投稿させていただきました。

これは携帯に関する事なのですが、携帯はクッキー情報を伝えないので
セッションの持続に困難しております。(^^;
セッションIDをURLに埋め込めが持続は可能になりますが、セッションにURLが埋め込めない
状況でもらう方法はやはりないのもでしょうか?
いろいろと調べたのですがわかりません。

例として
1.php
リンクページです。
<?php
session_start();
echo "<a href=\"2.php\">○○サイトへ</a><br>";
print_r($_SESSION);
?>


2.php
リンクをヘッダーで渡すページです。
<?php
session_start();
$_SESSION["auth"] = "YES";
header("Location: http://hoge.com");
?>


この時1.phpから2.phpで行った時にセッションにYESを入れて相手先のページに
飛ばしたのですが、これで携帯から1.phpに横ボタンで戻るをすると、どうしてセッション情報が
切れてしまってYESが取り出せません。
やはり何かしらデータに保存した後の認証方法にするやり方しか不可能なのでしょうか?
もしおわかりになるのであればご教授お願い致します。m(__)m
[編集]   [返信]

携帯の端末IDをセッションIDに使う方法があるかも

     投稿者:シロウ   日時:2007-09-02 00:56:47

お久しぶりです。投稿頂きありがとう御座います。

携帯の端末IDをセッションIDとして利用する方法
が考えられます。
KDDIでは$_SERVER['HTTP_X_UP_SUBNO']などで端末ID
を取得可能となっています。
DoCoMoやSoftBankでは$_SERVER['HTTP_USER_AGENT']
の中に端末IDが含まれています。

1.php
<?php
if (empty($_SERVER['HTTP_X_UP_SUBNO'])){
    $id = md5($_SERVER['HTTP_USER_AGENT']);
} else {
    $id = md5($_SERVER['HTTP_X_UP_SUBNO']);
}
session_id($id);
 
session_start();
echo "<a href=\"2.php\">○○サイトへ</a><br>";
print_r($_SESSION);
?>



2.php
<?php
if (empty($_SERVER['HTTP_X_UP_SUBNO'])){
    $id = md5($_SERVER['HTTP_USER_AGENT']);
} else {
    $id = md5($_SERVER['HTTP_X_UP_SUBNO']);
}
session_id($id);
 
session_start();
$_SESSION["auth"] = "YES";
header("Location: http://hoge.com");
?>



※携帯電話からのアクセスである必要があります。


「端末ID」とか「サブスクライバーID」・「個体識別番号」
などで検索するとこの辺の物が検索できると思います。
[編集]   [返信]

ありがとうございます

     投稿者:none   日時:2007-09-09 20:03:42

さっそくのご返事ありがとうございます。m(__)m
固体識別番号の事は調べてみてわかったのですが、なぜsession_idに端末情報
を格納する事で他サイトに行き来してもセッション情報が切れないカラクリがわかりません。
いつもお手数お掛けしてすいません。
[編集]   [返信]

セッションIDはファイル名(デフォルト時)

     投稿者:シロウ   日時:2007-09-10 05:17:06

session_id()で独自ID(ファイル名)を指定すると
セッション保存先に独自IDのセッションファイルが
作成されます。

session_id('example');
sess_example  というセッションファイルが出来ます。

独自ID部分に携帯端末IDを指定することで毎回、同じ
ファイル名のセッションで読み書きされることになります。



<?php
/* 適当な場所 */
session_save_path('/home/www/tmp/');
 
if (empty($_SERVER['HTTP_X_UP_SUBNO'])){
    $id = md5($_SERVER['HTTP_USER_AGENT']);
} else {
    $id = md5($_SERVER['HTTP_X_UP_SUBNO']);
}
session_id($id);
echo $id;
/*
出力結果:
2kvug9vlmgq3i6es5d7la8a4b5
 
以下のファイル名でセッション内容をファイルに保存
sess_2kvug9vlmgq3i6es5d7la8a4b5
*/
 
session_start();
echo "<a href=\"2.php\">○○サイトへ</a><br>";
print_r($_SESSION);
?>


$ cd /home/www/tmp/
$ ls
sess_2kvug9vlmgq3i6es5d7la8a4b5
sess_5565dptovhu7suvn28nn1o58s7
sess_f0h84jp64fd4hcb1frmeal64i3
sess_l7nc1c0u670uq77qu5ian09s53
           :
           :
           :



<?php
session_save_path('/home/www/tmp/');
 
if (empty($_SERVER['HTTP_X_UP_SUBNO'])){
    $id = md5($_SERVER['HTTP_USER_AGENT']);
} else {
    $id = md5($_SERVER['HTTP_X_UP_SUBNO']);
}
session_id($id);
/*
以下ファイルが存在するのでセッション情報を読み込む
sess_2kvug9vlmgq3i6es5d7la8a4b5
*/
 
 
session_start();
$_SESSION["auth"] = "YES";
header("Location: http://hoge.com");
?>




session_cache_expire()でセッションの有効時間を設定
出来ます。
デフォルトは180分なので、180分以上たってから他サイト
から戻ってくると、セッションが切れる事になります。
(実際はsession.gc_divisorなどの影響を受けます)


■session_cache_expire()
http://jp2.php.net/manual/ja/function.session-cache-expire.php

■session_save_path()
http://jp2.php.net/manual/ja/function.session-save-path.php
[編集]   [返信]

ありがとうございます

     投稿者:none   日時:2007-09-20 09:46:39

なるほど!いつも重ね重ね変な質問してすいません。
助かりました。ありがとうございました。m(__)m
これからもちょくちょくおじゃまして参考にさせていただきます。
[編集]   [返信]

カテゴリ

  •  Templateエンジンのすすめ Templateエンジンのすすめ
  •  SQLiteをやってみよう SQLiteをやってみよう
  •  SQLite SQLコマンド一覧 SQLiteコマンド一覧
  •  SQLite 管理プログラムSQLite 管理
  •  はじめてのEclipse はじめてのEclipse
  •  PHP SQLiteのTIPS PHP SQLiteのTIPS
  •  サンプル サンプル/ダウンロード
  •  リンク リンク
  •  掲示板 掲示板

キーワード検索

キーワード


Summary

  •     ATOM(XML)
  •     RDF(XML)
  •     RSS0.92(XML)
  •     RSS2.0(XML)

Powered by

  •     PHP
  •     Smarty
  •     SQLite
  •     MySQL
Copyright (C) 2005 `rakuto.net' All Rights Reserved.