• ベストアンサー

session_startについて質問

phpの公式マニュアル(オンライン版)のsession_startの解説(http://www.php.net/manual/ja/function.session-start.php)には「session_start — セッションデータを初期化する」とあります。 たとえば、$_SESSION[hoge] = hoge;として、他のページに遷移した際、セッションデータが初期化されるなら、$_SESSION[hoge]のデータも消えてしかるべきな気がするのですが、どういうことなのでしょうか? 解説できる方、いらっしゃいましたら平易に解説していただけると助かります。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.1

他人の書いた文章なので、推測ですが、 ケース1:  ここでいうセッションデータとは、セッション管理用のデータのことで、セッション変数($_SESSION)は含まない ケース2:  セッションデータとは、セッション変数のことだが、ここでいう初期化は削除とかクリアだけのことでなく、セッションIDによるセッション変数の復元のことも指す  (変数の初期化って、$A = ""; とかだけじゃ無くて、$Aが最初に出てきたときの $A = "qwerty"; とかも初期化ですよね) たぶん、2かな。

buc6t
質問者

お礼

回答ありがとうございます。 なるほどです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • セッションの削除

    例えば www.hoge.com/foo/index.php で session_start(); setcookie("bar",session_id(), time()+3600); として画面遷移を行いながら登録作業を行い、 完了画面regist.php で session_start(); $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000); } session_destroy(); としましたが$_COOKIE["bar"]が初期化されません。 どのようにしたら良いでしょうか? 教えてください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • session_start出来ません。

    FreeBSD 4.11 Apache 1.3.33 PHP 4.3.11 の組合せでWebサーバをセットアップし、phpファイルにアクセスしたところ Fatal error: Call to undefined function: session_start() in /hogehoge/test.php on line 3 となってしまいます。 session.save_pathにはパーミッションを777にしていますが、session_startが出来ません。 どのように対応したらいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • session_start()でwarningが表示されてしまいます。

    phpファイルの冒頭で<?php session_start() ?>と 記述しているのですが、 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ファイル名) in ファイル名 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ファイル名) in ファイル名 とwarningが出てしまいます。 warning中のheaders already sent byにヒントがあるとは感じるのですが、その意味が理解できません。 どなたかお詳しい方宜しくご教示くださいませ。

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

    現在PHPで開発を行っています。初心者なのでまだぜんぜんわかってないので、ご教授いただければと思っております。 PHP4.0.5、サーバはレンタルサーバでFreeBSDとなっています。 問題は、まず認証ページでユーザ認証を行った後、次のページに遷移したときに、セッション情報が引き継がれません。 sesson_start();をしているのですが、次のページで、$HTTP_SESSION_VARS変数の値が初期化されてしまっているみたいです。 いろいろサイトで調べたりしているのですが、うまくいきません。 セッションが引き継がれない理由として考えられることがありましたら教えていただけないでしょうか。 また補足が必要でありましたら、補足いたしますのでよろしくお願いします。

    • 締切済み
    • 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
  • php session_start()

    いつもお世話になっております PHP session_start()について質問させていただきます。 ブラウザで確認すると以下のワーニングが表示されます。 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ファイル名) in ファイル名 過去の質問を参考にしてphpinfo()を使用してサーバの設定を確認したところ、Session Supportはenabledとなっております。 また、余分なスペースなどが無いよう、コードを1行にまとめて試してみましたが同じ結果でした。 コードは以下のとおりです。ちなみにサーバはレンタルサーバを使用しております。 ■index.php <?php  $documentroot = dirname( __FILE__) . '/';  require_once $documentroot . '../php_libs/config/config.inc.php';  require_once("Auth/Auth.php");  require_once("HTML/QuickForm.php");  require_once("HTML/QuickForm/Renderer/ArraySmarty.php");  require_once( _SMARTY_LIBS_DIR . "Smarty.class.php");  require_once( _MODULE_DIR . "build_screen.inc.php");  require_once( _MODULE_DIR . "menu.inc.php");  require_once( _MODULE_DIR . "MYDB.inc.php");  require_once( _MODULE_DIR . "sub.inc.php");  main(_MEMBER_FLG);  exit; ?> ■main関数 <?php  function main($systemflg){   // セッション名の設定   $sess_name = ($systemflg) ? _SYSTEM_SESSNAME : _MEMBER_SESSNAME;   session_name($sess_name);   // セッション開始   session_start(); ~以下省略~ どこに問題があるかお分かりの方いらっしゃいましたら、ご回答のほどよろしくお願いいたします。

    • ベストアンサー
    • 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のセッションについてご教授ください。 session_start()の前でセッション名の変更を行うと、セッションidが受け渡されず、次ページが新規セッションとなってしまいます。クッキーを使った解決法を探してます。 セッション名を変更した場合、どのように解決すればよいでしょうか。初心者なのですが、一生懸命勉強中なので、宜しくお願いします。 開発環境: apache2.2 php 5.2 ページ1ソース <?php function main(){ session_name('member'); <= この行をコメントアウトすると、受け渡しできます session_start(); $_SESSION['test'] = 'test'; } main(); ?> <a href="sesstest2.php">test</a> ページ2ソース <?php session_start(); echo $_SESSION['test']; ?>

    • ベストアンサー
    • PHP
  • phpのセッションについて質問です

    現在、phpのセッションについて学習しています。 開発環境はxamppでMySQLデータベースにPDOで接続しています。 セッションについていくつか質問があります。 セッションを使った認証の流れですが、 ログインフォーム画面で、session_start()し、ログインの認証が成功したらsession_regenerate_idで新しいセッションを発行⇒ログインが必要な画面でセッションの有無を確認 という流れで良いのでしょうか? セッションハイジャック対策にsession_regenerate_idをするようですが、 これは全てのページで毎回行ったほうが良いのでしょうか? セッションIDの受け渡しはcookieに保存する方法とURLに含む方法があり、 セッションハイジャック対策について記述しているサイトではcookieが推奨されている雰囲気ですが、 PHPマニュアル(http://php.net/manual/ja/session.idpassing.php)では信頼性がないとあります。 どちらを使うのが良いのでしょうか? セッションの有無のチェックはsession_start()を記述するだけでサーバーが行ってくれるのでしょうか? $SESSIONにセッションIDを保存してissetで調べるといった記述が必要なのでしょうか? メールアドレスとパスワードでのログイン認証を実装したいのですが、 その場合、マイページでユーザー情報を表示したい際、ログイン時に入力したメールアドレスを$SESSION[email]に格納し、マイページのphpプログラムにて、$SESSION[email]に格納されたメールアドレスを検索条件にしてSELECTで他の情報を取得したら良いのでしょうか? メールアドレスを$SESSION変数で受け渡しするのはセキュリティ上危険でしょうか?(危険であれば内部管理用のユーザーIDを$SESSIONに格納してデータを取得しようと思います。) 基本的なセッションの知識がないため、質問の数が多くなってしまいましたが、 答えられる範囲で良いのでご回答頂けると有難いです。

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

    以下のソースコードですが、 レンタルサーバによって worningが出てしまうのはなぜでしょうか。 どなたかご教授いただけませんでしょうか? <ソースコード> <?php session_start(); $err=$_SESSION['err']; echo $err; session_destroy(); ?> //セッションデータをもらってくる前のPHPファイル //でも先頭にsession_start();をつかっています。 <レンタルサーバ> ■kagoya(PHP4.3.10)は正常に動作 ■lolipop(PHPver.4.3.11)は以下worningが表示される ・Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/sites/lolipop.jp/users/lolipop.jp-dp40152853/web/pc/attestation/regist/err.php:5) in /home/sites/lolipop.jp/users/lolipop.jp-dp40152853/web/pc/attestation/regist/err.php on line 6 <画面遷移> index.html(ユーザが入力)→write.php(入力規制エラー)→err.php(エラー内容を表示)

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • PS205で操作スイッチの針上下スイッチと返し縫いスイッチを押すとE4のエラーが表示され、動かなくなる
  • 環境はWindowsで有線LAN接続、関連するソフト・アプリはなし、電話回線はIP電話
  • ブラザー製品のPS205で操作スイッチの針上下と返し縫いスイッチが動かなくなり、エラーE4が表示される
回答を見る