インスタンスの生成について

このQ&Aのポイント
  • クラスSC_SessionFactory_UseCookieを実装している場合、$session = new SC_SessionFactory_UseCookie; を実行するとクラスSC_SessionFactory_UseCookieのinitSession()とuseCookie()も実行され$session->useCookie() = trueのセッション開始session_start()が実行されるのでしょうか。
  • SC_SessionFactory_UseCookieクラスは、$session->initSession()と$session->useCookie()の両方を実行することによって、クッキーを使用するセッションを開始できます。
  • SC_SessionFactory_UseCookieクラスのinitSession()関数は、セッションの初期化と共に、クッキーのパラメータも設定します。その後、$session->useCookie()が真を返す場合、セッション開始のためにsession_start()が実行されます。
回答を見る
  • ベストアンサー

インスタンスの生成について

下記のクラスSC_SessionFactory_UseCookieを実装している場合、 $session = new SC_SessionFactory_UseCookie; を実行するとクラスSC_SessionFactory_UseCookieのinitSession()と useCookie()も実行され$session->useCookie() = trueの セッション開始session_start()が実行されるのでしょうか。 class SC_SessionFactory_UseCookie { function initSession() { session_set_cookie_params(0, "/", DOMAIN_NAME); // セッション開始 session_start(); } // Cookieを使用するかどうか function useCookie() { return true; } }

  • PHP
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

実行されません。 クラスのインスタンスを生成したときに実行されるのはコンストラクタのみです。 クラスのメソッドを呼び出したいときはインスタンス生成後に呼び出す必要があります。

basi999
質問者

お礼

ありがとうございました

関連するQ&A

  • phpのセッションについて質問です

    phpで会員制サイトの制作を勉強中です。 pdoでmysqlデータベースに接続しています。 セッションの「session_set_cookie_params」について質問ですが、 session_set_cookie_paramsで有効期限を設定する場合、 ログイン時にsession_set_cookie_paramsでセッションの有効期限を設定し、 他のページではsession_start()さえ記述すれば、 有効期限を過ぎると勝手にセッション変数のデータを空にしてくれるのでしょうか? それとも全てのページにsession_set_cookie_paramsを書かなければならないのでしょうか? プログラムを書いている上でセッションの動作がおかしい(有効期限が過ぎてもログアウトしない)のでsession_set_cookie_paramsの記述がおかしいのかと思い、質問しました。 また、セッション変数の有効期限を変数毎に個別に設定して削除する方法はないのでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • Windowsだとsession_set_cookie_paramsが

    Windowsだとsession_set_cookie_paramsが上手く動きません。 以前 http://okwave.jp/qa/q5387366.html でディレクトリ分けをしているときにセッションが混ざってしまうと相談したものです。 回答していただいたものを元にsession_set_cookie_paramsを使ってみたところセッションが混ざることがなくなったのですが、このコードをWindows(というかXampp for windows)で動かすとセッション情報を保存することが出来なくなってしまいます。 (具体的な挙動としてはログインフォームなのですが延々とログインできなくなってしまいました。) Windows版では動かせない関数なのでしょうか? それともphp.ini等に設定が必要でしょうか? windowsでうごかしたコードのセッション部分 if(isset($_REQUEST['PHPSESSID'])) { session_id($_REQUEST['PHPSESSID']); //Setting the same session id to Forums as in CRM $sid=$_REQUEST['PHPSESSID']; } session_set_cookie_params(time()+36000, "/pdt/test/", "localhost"); insert_charset_header(); きちんと動作する環境 OS: Linux CentOS5 PHP:5.3 独自ドメイン上で動かしている(上記コードのlocalhostの部分はそのドメイン名としている) 上手く動かない環境 OS: WindowsXP PHP: 5.2.9(Xamppで動かしています) テスト環境(ドメインは指定していないため上記コードのsession_set_cookie_paramsのホスト名の部分をlocalhostとしている) よろしく尾根がします。

    • ベストアンサー
    • PHP
  • utf8保存をするとsession_start()でエラーが出ます。

    PHP:バージョン 5.1.6 セッションを使ってログイン情報を保持したいのですが、 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Eclipse\workspace\ShopSystem\login.php:1) in C:\Eclipse\workspace\ShopSystem\login.php on line 2 と言うエラー情報が出てしまいます。 セッションが既に開始されているらしいのですが、他にセッションスタートを記述した場所がありません。 プログラムの文字コードをutf8にするとこのようになってしまうのですが、shift-JISやutf8nでは正常に動作します。 自力で思いつける解決作は文字コードを全部変えてしまうことなのですが、できればutf8で作りたいと思っています。 お願い致します。 プログラム <?php session_start();  //ログインページ require('config.php'); if($_POST['keep_login']!=''){     session_set_cookie_params(31536000);//31536000(1年間の秒数)=365(日)*24(時間)*3600(秒) }else{     session_set_cookie_params(0); } *略 ?> <html>

    • ベストアンサー
    • PHP
  • COOKIEを用いたセッション管理

    PHPでCOOKIEを用いたセッションチェックをしようとしています。 トップページを表示する関数とセッション管理の関数に分けて処理をしています。 function index(){ session_start(); if($this->CheckSession()) ログインのページ else ログオフのページ } function CheckSession(){ if(!$_COOKIE["hoge"]) DBにセッションID(COOKIE["hoge"]の値)を入れる setcookie("hoge",session_id()); return false; else  return true; } このとき更新ボタンを押すたびにCOOKIEの値が変わります。 なぜでしょうか?

    • ベストアンサー
    • PHP
  • セッションIDの削除について

    session_set_cookie_params(1ヶ月); session_start(); を行った場合、webサーバーの/tmp内の 『sess_*****・・』 ファイルは、(ガーベッジ・コレクションを行わない場合)1ヶ月の有効期限が切れると、自動削除されるんでしょうか。

    • 締切済み
    • PHP
  • セッションに登録されたデータを全て破棄する方法

    http://php.net/manual/ja/function.session-destroy.php 上記サイトのPHPマニュアルにセッションのデータを削除する方法が載っていました。 しかし、以下のスクリプトの仕組みだけが全く分かりません。 どなたか、教えてください。お願いします。 if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); }

    • 締切済み
    • PHP
  • ソースの意味がわかりません。

    先日PHPのコミュで質問して回答をいただいたのですが、その後、その回答に質問したのですが回答がなくて、どうしてもソースの意味がわからず困っています。分かる方どうかご教示ください。 クラスファイルの一部ですが、 ────────────────── function __is_browser_pc() { $browser = __get_browser(); switch ($browser) { case 'docomo': case 'au': case 'softbank': return false; default: return true; } return true; } function session_start_smart() { $is_pc = __is_browser_pc(); if (!$is_pc) ini_set('session.use_trans_sid', '1'); session_start(); } function session_url_smart($url) { $is_pc = __is_browser_pc(); if (!$is_pc) { $url.= (strpos($url, '?') === false ? '?' : '&') . SID; } return $url; } ?> ──────────────────── get_browser(); はブラウザを調べているのだと思います。 is_browser_pc() の下のほうの ///////////////////////////// default: return true; } return true; } ///////////////////////////// 最初の「return true;」 はわかりますが、次の「return true; 」の意味は何でしょうか? あと「session_url_smart」の ///////////////////////////// $url.= (strpos($url, '?') === false ? '?' : '&') . SID; ///////////////////////////// この部分がわかりません。 プログラム自体初心者です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • queryとparam

    下記のexecute_query関数はどのような処理を行う関数ですか? $paramの意味が分からないです。 // PDO、SQL文、$paramを利用してプリペアドステートメントを実行する function execute_query($db, $sql, $params = array()){ try{ $statement = $db->prepare($sql); return $statement->execute($params); }catch(PDOException $e){ set_error('更新に失敗しました。'); } return false; } // 添え字が '__error' のものをさらに配列として(二次元配列)要素を追加して変数 $errorの内容とする // $_SESSION['__error'] を配列として、エラー内容[]を追加している //(要素数が 0でなければ何らかのエラーがあって、その内容が記録されている) function set_error($error){ $_SESSION['__errors'][] = $error; }

    • ベストアンサー
    • PHP
  • ユーザー定義関数の処理

    エラーメッセージに関する以下の関数はどのような処理をする関数ですか? 自分なりに解釈したものを//で書いています。 // エラーがセットされているときは、$errorsを返す // もしセッション変数にエラーがないときは、空の配列を返す function get_errors(){ // セッション変数にエラーがセットされているときは$errorsを以下のように定義する $errors = get_session('__errors'); if($errors === ''){ return array(); } // もしセッション変数にユーザー名($name)がセットされているなら、セッション情報を返す // セットされていないときは空文字を返す function get_session($name){ if(isset($_SESSION[$name]) === true){ return $_SESSION[$name]; }; return ''; } // $nameと$valueを受け取り、セッション情報(ユーザー名)を$valueと定義する function set_session($name, $value){ $_SESSION[$name] = $value; }

    • ベストアンサー
    • PHP
  • PHP+MySQLでrollback出来ない

    PHP5 + MySQL5環境です。 以下のようなソースでロールバックさせたいのですが、 実行後、「phpMyAdmin」というDB操作ツールで対象テーブルを見てみると データが登録されてしまっています。(ロールバック出来ていない!?) どなたか原因がお解りでしたらご教授の程宜しくお願い致します。m(_ _)m ※ソースが見難いので、画像で見やすいものを添付します。 ※尚、catch句のデバッグは「bool(true) ロールバック実行」と返ってきます。 //***メイン処理ソース***************************** $sObj = new SQL_Controller(); $res = $sObj->tran_start(); if(!$res) exit; try{ //DB登録------------------ $res1 = $sObj->Customer_mst_Insert($_SESSION['CustomerInfo']); if(!$res1) throw new Exception("Customer_mst_Insert error"); throw new Exception("★rollbackテストの為、ここでワザとthrowしてみる★"); //コミット------------------ $sObj->tran_commit(); } catch(Exception $e) { //異常時はロールバックする-- $res = $sObj->tran_rollback(); var_dump($res); echo "ロールバック実行"; } //***↑メイン処理終わり。以下クラス。***************************** class SQL_Controller extends MySQL{ } class MySQL{ function query($sql){ //クエリ実行 return mysql_query($sql); } function tran_start(){ //■トランザクション開始------ try{ $res = $this->query("set autocommit = 0"); if(!$res) throw new Exception(); $res = $this->query("begin"); if(!$res) throw new Exception(); } catch(Exception $e) { return false; } return true; } function tran_commit(){ //■コミット------ return $this->query("commit"); } function tran_rollback(){ //■ロールバック------ return $this->query("rollback"); } }

    • ベストアンサー
    • PHP

専門家に質問してみよう