PHP5のセッション管理の質問

このQ&Aのポイント
  • PHPのセッション管理についての質問です。現在、本とWEBの入門サイトで学習しています。
  • 質問の内容は、$_SESSION変数の利用方法に関するものです。WEBの情報では$_SESSION['count']と書いており、本では$_SESSION['acces_count']と書いてあります。
  • 質問者は$_SESSION['acces_count']を$_SESSION['testtest']に変えて実行してみたところ、エラーが出ずに実行できました。また、キー名に制約はあるのでしょうか。
回答を見る
  • ベストアンサー

PHP5のセッション管理に使う$_SESSIONに関する質問

現在本と、WEBの入門サイトの二つでPHPを学習しているのですが $_SESSION変数を利用したアクセスカウンタのサンプルで WEBの情報では$_SESSIONを $_SESSION['count'] と書いていました(WEBはPHP4) そして、本の方では $_SESSION['acces_count'] と書いてありました そして、私は $_SESSION['acces_count'] を $_SESSION['testtest'] に変えて実行してみた所これでもエラーが出ずに実効できました $_SESSION変数のキーは、いかなる物でもかまわないのでしょうか

  • tukai
  • お礼率57% (102/177)
  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
回答No.1

ええ、任意の名前でOKです。 変数の名前を自由に付けられるのと同じです。

その他の回答 (1)

  • haru44
  • ベストアンサー率60% (12/20)
回答No.2

こんにちは。 $_SESSION というのは、セッションに関する変数の値を保存しておく配列のようなものですね。 セッションに関する変数は1個だけではありませんから、たくさんの変数を格納できるようになっています。 PHP では、配列の添字は数字だけでなく、count や access_count や testtest のような、名前で区別することもできます。 値を取り出そうとしているとき、指定された名前が $_SESSION の中に存在しない場合は、Undefined index というエラーが発生すると思いますが、エラー報告レベルを低くしている場合は何も表示されないかもしれません。 エラー報告レベルを最大に上げるにはスクリプトの最小のほうで、error_reporting(E_ALL); と書きます。 値をセットしようとしているときは、指定された名前がなくても、自動的に作られますのでエラーは発生しません。

参考URL:
http://www.php.net/manual/ja/language.types.array.php
tukai
質問者

お礼

詳しい解解答をありがとうございました。 尚、参考URLに記載されているURLHかなり参考になりました

関連するQ&A

  • PHPでセッション管理

    PHPでセッション管理の勉強をしています、 テストに以下の文章があるのですが カウント2回です は表示するのですが 3回目以降も カウント2回です と表示します。 文章がどこかおかしいでしょうか? また、このセッション管理は携帯電話でも有効なのでしょうか? スミマセン、教えてください。 バージョンは MYSQL ver4.0.26 PHP ver4.2.2 です <?php session_start(); $count = 1; if (isset($_SESSION["count"])) { $count = $_SESSION["count"]; $count++; } $_SESSION["count"] = $count; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>セッション変数のテスト</title> </head> <body> セッション変数のテスト<BR> <BR> <?php if ($count == 1) { ?> はじめての訪問です。<BR> <BR> セッション変数にデータがありません。<BR> このページをリロードしてください。<BR> <?php } else { ?> あなたの訪問は<?=$count?>回目です。<BR> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHPのセッションについて書かれている入門書

    PHPのセッションについて詳しく書かれている入門書を探しています。 PHPを独学で学習しています。 簡単な入門書は読んだのですが、セッションについて触れられていなかったため、どなたか詳しく書かれているお勧めの本を知っていたら教えてください。 宜しくお願いします。

    • 締切済み
    • PHP
  • PHPのセッション終了について

    PHPのセッション終了について http://c-brains.jp/blog/wsg/08/05/22-193020.php こちらのサイトでPHPを勉強しています。 セッションについてなのですが、セッションの開始と関数の働きはつかめたのですが、セッションの終了について不明な点があります。 <?php // セッションの開始 session_start(); // セッション変数の初期化 $_SESSION = array(); // セッションファイルの削除 session_destroy(); ?> この部分なのですが、セッション変数の初期化のみの記述では何がいけないのかが分かりません。 $_SESSION = array(); のみの記述で試してみたところ、$_SESSION に含まれていたキーを呼び出しても中身を出力しなかったので、ちゃんと中身は消えたと思うのですが、この場合、session_destroy()を実行する意味はあるのでしょうか? 何卒ご教授いただけますようお願い致します。

    • ベストアンサー
    • PHP
  • PHP SESSION 設定について

    PHP(レンタルサーバー:5.3.6)(ローカル:5.3.26)を使用しています。 簡単なログインフォームを作っていました。 ローカルでテスト運用したところ、問題なく動作していたのでレンタルサーバーにアップロードしたところ、SESSIONが動いていない(?継承していない?)ことに気づきました。 そこでphpinfoを確認すると レンタルサーバーは、 session.cookie_httponly=1(On) session.cookie_secure=1(On) になっていました。XSS攻撃に全部ではないけどレンタルサーバーの設定だと有効だということなので、ローカルもレンタルサーバーの設定に合わせたいと思っています。 ※設定をoffにすると問題なく動作します。 sample2.phpで、「$_SESSION['sample_title']」が表示されなくなってしまいました。 どのようにすれば、sessionが正しく動作するかご教授お願いいたします。 抜粋スクリプト ■sample1.php session_start(); session_regenerate_id(TRUE); $_SESSION["sample_title"] = "PHPのSESSION"; //セッション登録 echo "$_SESSION['sample_title']に代入した値は「<?php echo $_SESSION['sample_title'] ?>」です。"; echo "<a href = 'sample2.php'>次のページ</a>"; ■sample2.php session_start(); session_regenerate_id(TRUE); echo "受け取ったセッション変数の値は「".$_SESSION['sample_title'] ."」です。";

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

    今,セッションにはまっています. https://www.stackasterisk.jp/tech/php/php03_06.jsp には、セッションのサンプルもいくつかあるので,まずは,簡単なセッションを使った例を拾ってきて試してみたいと思っています.ですが、上のURLにあるサンプルで <? session_start(); if (!isset($count)) $count=0; session_register("count"); $count++; ?> <html> <body> あなたは <?= $count ?> 回目の訪問です。 <a href="<?echo $PHP_SELF ."?PHPSESSID=". $PHPSESSID?>">カウントを増やす</a> </body> </html> をしましたが,再読込やクリックをしてもカウントアップせず,ずっと1のままです.ソースが間違っているかどうかは私には,ハッキリできませんが,おそらく正しいんでしょう.正常にカウントアップされる為には,php.iniなどの設定も必要でしょうか?どうしてカウントアップされないでしょうか?

    • ベストアンサー
    • PHP
  • PHP SESSION変数の削除について

    PHPでブラウザを×で閉じた場合、SESSION変数 の廃棄はどうすればよいのでしょうか? ガーペジコレクション(PHP.INI等の設定)に任せておけばよいのでしょうか? ちなみにログアウトの際は下記のプロシジャを実行しています。 ----------------------------- <?php session_start(); // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // 最終的に、セッションを破壊する session_destroy(); ?> -----------------------------

    • 締切済み
    • PHP
  • セッションに関して

    お世話になっております。 ここ数日、セッションの勉強をしているのですが、 http://www.stackasterisk.jp/tech/php/php03_06.jsp のサイトにある下記スクリプトを動かしてみました。 <?php session_start(); if (!isset($count)) $count=0; session_register("count"); $count++; ?> <html> <body> あなたは <?= $count ?> 回目の訪問です。 <a href="<?echo $PHP_SELF ."?PHPSESSID=". $PHPSESSID?>">カウントを増やす</a> </body> </html> すると、はじめに表示させた際、何やら0行目が原因とのエラーが表示され(初めだけだったので、内容を確認出来ませんでした。)、それ以降、エラーはないものの、カウントが増えずにいる状態です。 初歩的なこととは思いますが、上記サイトでは、不具合があった場合は想定しておらず、何処が可笑しな設定なのかが分からないのです。 また、サイト内にて、「count という変数の値は、 (デフォルトでは) /tmp に sess_ で始まるファイル名で保存」との説明がありますが、これはCドライブ内にあるtmpフォルダを指しているのでしょうか? カウンタが増えない事からファイルが生成されていないのでしょうが、PHPを触り始めて間もない私にとって全てが専門用語の説明に、色々と調べるが故にポイントが見えなくなっている状況です。 初歩的な質問でお恥ずかしい限りでは御座いますが、エラーが表示された原因、正常に動かない(カウントが増えない)原因。そして保存策フォルダの場所をご教授頂ければ幸いです。 宜しくお願い致します。 動作環境 winXP apacha1.3 PHP4.3 本も購入しているのですが、初歩的なことは割愛されているもので・・・宜しくお願い致します。

    • ベストアンサー
    • 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
  • レンタルサーバーのセッション管理について

    無料でPHPを使えるレンタルサーバーでのセッション変数の使い方について教えていただきたく投稿いたしました。PHPインフォで調べてみますと、セッション変数は使える模様でした。セッション変数の保存先をsession_save_pathを使って自分のフォルダに変更しようとしているのですが、上手く行きませんでした。セッションに関する情報は下記の通りです。この中で/var/lib/php/sessionというパスがありますが、デフォルトの状態ではこのsessionというフォルダに保存されると思うのですが、レンタルサーバーですので多数の人が使っていますので、これを自分が作成した自分だけのフォルダに保存したいのですが、どうすればよいのでしょう。色々と試してみましたが上手く保存できませんでした。ちなみにセッションの保存先のパスのしていを、w7.oroti.com/~****/*****/sessionと言うようにしてみたり、指定されたファイルの置き場所がpublic_htmlというフォルダなので、 public_html/sessionとしてsessionフォルダを作ってみたり、したのですが保存できませんでした。詳しい方がおりましたら宜しくお願いいたします。セッションでの管理ができないので、クッキーで対応しております。でも、勉強のためになんとかこの課題を克服したいと思っています。宜しくお願いします。 <?php session_save_path("w7.oroti.com/~****/session"); session_start(); if(isset($_SESSION["cout"])){ $_SESSION{"count"]++; } else{ $_SESSION{"count"]=!; } ?> ------------------------------------------------------- session Session Support enabled Registered save handlers files user Registered serializer handlers php php_binary wddx Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 Off Off session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /var/lib/php/session /var/lib/php/session session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid 0 0

    • ベストアンサー
    • PHP
  • セッション変数が表示されない

    ●質問の主旨 セッション変数が表示されないのはなぜでしょうか? ご存知の方、ご教示願います。 ●質問の補足 セッション変数を表示させるために 下記のドットインストールの動画の手順に沿って、 コードの打ち込みやリロードを行っていますが、 "dradra35"という変数は表示されません。 ただ真っ白な画面が出るだけです。 変数を表示させるためには、どうすれば良いのでしょうか? 0:54で紹介されている真っ白な画面のところまでは、 その通りになっています。 ドットインストール PHP入門(応用編) #07 セッションを使ってみよう http://dotinstall.com/lessons/basic_php_advanced/6907 ●開発環境 ・windows8 ・xammp1.8.1 ●コード <?php session_start(); //$_SESSION ['userName']="dradra35"; echo $_SESSION['userName'];

    • ベストアンサー
    • PHP

専門家に質問してみよう