• ベストアンサー

SESSION変数と同じ変数名は使えないのかな?

よろしくお願いいたします。 以下のように記述しました。 <?php session_start(); $_SESSION["abc"]="hello world!"; print("abc:1:{$_SESSION["abc"]}<br/>"); $abc="000"; print("abc:2:{$_SESSION["abc"]}<br/>"); ?> 1回目の実行は abc:1:hello world! abc:2:hello world! ですが、F5を押しますと、 abc:1:hello world! abc:2:000 となります。 デバッガ(Peggyですが)をかけると、見事に$abc="000";の行を実行 すると、$_SESSION["abc"]の値もかわります。 これは仕様なのでしょうか? Documentを見る限りわかりませんでした。 PHP5.2.0です。 以上、よろしくおねがいします。

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

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.2

とりあえず、設定ファイルの確認をして下さい。 php.iniファイルの'register_globals'の設定が ONの場合は、OFFに変更してファイルを保存する。 Webサーバー再起動後、再試行してください。

sayaama
質問者

お礼

どうもありがとうございました。 動作しました。また、 『PHPバージョン4.2以降で動かないということが多発しており、いわゆる「register_globals問題」として知られている。』 のような記事もみつけることができました。 さらに、これは、V4.2以降の『正しい挙動』ということも理解しました。 THanks!です^^;^^;

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

当方の環境(Windows2000, PHP5.2.2, Apache2.0.59のlocalhost)では、 ページを何度リロードしても abc:1:hello world! abc:2:hello world! を表示しました。 一般の変数の値でセッション変数を書き換えてしまうことはありませんでした。

sayaama
質問者

お礼

わざわざためしていただきまして、どうもありがとうございました。

関連するQ&A

  • sessionうまくいかない

    sessionの勉強のためにphpで簡単なページを作ってみたのですが、 sessionIDが次のページに送れてないみたいで、うまくいきません。 1ページ目 @session_start(); print session_id(); $_SESSION["ID"]=session_id(); 2ページ目 @session_start(); print session_id(); sessionの記述はこのようにしています。 環境は Windows Vista IE7 PHP5 Apache2.2 です。 よろしくお願いします。

    • 締切済み
    • PHP
  • 変数の中身が出力されない

    下記のソースで、(1)の Hello World!! は出力されるのですが、(2)は何も出力されません。なぜでしょうか? <?php $hello = "Hello World!!"; ?> <HTML><BODY> (1) <?php print $hello; ?><BR> (2) <?= $hello ?><BR> </BODY></HTML> php.iniで register_globals = On にしても同じでした。 環境はPHP5、Apache2.2です。

    • ベストアンサー
    • PHP
  • セッションの変数の受渡しについて

    よろしくお願いします。 セッションを利用して変数受渡しを行おうと思い、初めての試み なので簡単なものを作ってやってみたのですが、変数に値をセットしたtest.phpでは値が表示されますが、リンク先のtest2.phpでは表示されません。 以下のソースで試しています。 -------------------------------------------------- test.php <?php session_start(); session_register("aa"); $_SESSION['aa'] = 1234; print $_SESSION['aa']; print "<p>"; print "<a href='test2.php'>next</a>";←ここの画面では表示されます。 ?> test2.php <?php session_start(); print $_SESSION['aa'];←表示されません ?> ---------------------------------------------- 想定では画面に”1234”と出ると思っていたんですが・・。 他質問をみて真似て色々試したのですが、やはり表示できませんでした。 環境は以下です apache2 php ver4.4.4 session Session Support enabled Registered save handlers files user Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 On On 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 100 100 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path c:\windows\Temp c:\windows\Temp session.serialize_handler php php session.use_cookies Off Off session.use_only_cookies On On session.use_trans_sid On On 環境の問題でしょうか?各ブラウザで試したのですが、ダメでした。 初歩的質問で申し訳ありませんが、ご教示よろしくお願いします。

    • ベストアンサー
    • PHP
  • sessionが分かりにくいです

    try4.html <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title>カンタンアンケート</title> </head> <body> <form action='try4-2.php' method='GET'> 性別:<br> <input type="radio" name="gender" value=0>男性 <input type="radio" name="gender" value=1>女性<br><br> 趣味(複数選択可):<br> <input type="checkbox" name="movies" value=1>映画  <input type="checkbox" name="music" value=1>音楽  <input type="checkbox" name="books" value=1>読書  <input type="checkbox" name="sports" value=1>スポーツ<br><br> ご意見をお書きください:<br> <textarea name="comment" rows="4" cols="40"></textarea><br><br> <input type="submit" value="送信"> <input type="reset" value="リセット"><br><br> </form> </body> </html> ////////////////////////////////////////////////////// try4-1.php <?php session_start(); ?> <html> <head><title>try4-1.php</title></head> <body> <?php $_SESSION = array(total_cnt => 0, male => 0, female => 0, movies => 0, music => 0, books => 0, sports => 0, comment => array("")); ?> //////////////////////////////////////////////////////////////// try4-2.php <?php session_start(); ?> <html> <head><title>try4-2.php</title></head> <body> <?php if ($_GET['gender'] == 0) ++$_SESSION['male']; elseif ($_GET['gender'] == 1) ++$_SESSION['female']; if ($_GET['movies']) ++$_SESSION['movies']; if ($_GET['music']) ++$_SESSION['music']; if ($_GET['books']) ++$_SESSION['books']; if ($_GET['sports']) ++$_SESSION['sports']; $_SESSION['comment'][] = $_GET['comment']; ++$_SESSION['total_cnt']; ?> 登録しました。さらに<A href="try4.html">入力する</A><br> これまでの集計結果を<A href="try4-3.php">表示する</A><br> </body> </html> ////////////////////////////////////////////////////////// try4-3.php <?php session_start(); ?> <html> <head><title>try4-3.php</title></head> <body> <?php echo "これまでにアンケートに応えたのは{$_SESSION['total_cnt']}人です。そのうち<br>"; if ($_SESSION['total_cnt']){ $male_rate = (int)($_SESSION['male'] / $_SESSION['total_cnt'] * 100); $female_rate = (int)($_SESSION['female'] / $_SESSION['total_cnt'] * 100); } else { $male_rate = 0; $female_rate = 0; } echo "男性:{$_SESSION['male']}人 $male_rate %<br>"; echo "女性:{$_SESSION['female']}人 $female_rate %<br><br>"; echo "趣味は映画:{$_SESSION['movies']}人、音楽:{$_SESSION['music']}人、読書:{$_SESSION['books']}人、" . "スポーツ:{$_SESSION['sports']}人<br><br>"; echo "意見:<br>"; foreach ($_SESSION['comment'] as $comment) echo $comment . "<br>"; ?> 集計を<A href="try4-1.php">初期化する</A><br> さらに<A href="try4.html">入力する</A><br> </body> </html> //////////////////////////////////////////////////////// とファイルが4つあるのですがセッション情報はどこに格納されているのでしょうか。TXTファイルでもなさそうなので教えて下さい。

    • ベストアンサー
    • PHP
  • php初心者です。セッションについて

    php初心者です。セッションをはじめて扱ってみているのですが、上手く行かずに困っています。 HP1でセッションに文字や数値を入れて表示、HP2でも表示というごく単純なものでセッションを試して見ているのですが上手く行かずにいます。 何か初歩的な間違いだとも思うのですが、どうにも上手くゆかず質問させていただきました。何に問題があるかアドバイスやご助言をいただければと思います。 よろしくお願いします。 ---------------------- HP1 ---------------------- <?php session_start(); //セッション開始 $_SESSION["str"] = "aiueo あいうえお"; $_SESSION["num"] = 1; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <title>session01</title> </head> <body> <p>page1</p> <?php print $_SESSION["str"]."<br />"; print $_SESSION["num"]."<br />"; ?> <p><a href="session02.php">page2へ</a></p> <?php ?> </body> </html> ---------------------- HP2 ---------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <title>session01</title> </head> <body> <p>page1</p> <?php print $_SESSION["str"]."<br />"; print $_SESSION["num"]."<br />"; ?> <p><a href="session01.php">page1へ</a></p> <?php ?> </body> </html>

    • 締切済み
    • PHP
  • AからBへセッション変数の受け渡し(ページ間の移動うまくできない)

    Aプログラム後半部分より //下記をセッション変数に登録 //$_SESSION[セッション変数名] = 値; $_SESSION[suid] = $uid; print "uid = ".$_SESSION[suid]. "<br>"; //確認してます //ページをadminpageに飛ばす ?><BR> <a href="adminpage.php">認証されました。管理者ページへ</a> </body> </html> Bプログラム前半部分/*管理者ページadminpage.php*/ session_start(); print "uid = ".$_SESSION[suid]. "<br>";//確認表示 // いきなりこのページにアクセスがあった場合 if( !$_SESSION[suid] ){ session_destroy(); header("Location: index.php"); exit; } ?> というプログラムですが、Bのプログラムの確認表示部分で"$_SESSION[suid]"が表示されません。Aプログラムでは表示されます。 プログラムの他の部分は個別に動作確認済みです。 エラーとして、ユーザーページの移動時(成功プログラム)に使った$_SESSION[suid]の値が表示されたりもします。原因を教えて下さい。

    • 締切済み
    • PHP
  • クッキーを使わないセッションPHP

    を作ったのですがまずい点があったら教えて下さい 入力を一行ずつ並べるものです <?php session_name('asdsddzddzfssd'); session_start(); session_register('lines'); $self=$_SERVER['PHP_SELF'].'?'.htmlspecialchars(SID); $line=isset($_POST['line'])?htmlspecialchars($_POST['line']):''; if($line!='')$_SESSION['lines'] .= $line.'<br/>'; echo' <form action="'.$self.'" method="post"> <p>1行: <input name="line"/></p> </form> 過去の全行:<br/>'.$_SESSION['lines']; ?>

    • ベストアンサー
    • PHP
  • セッション変数にデータをセットする

    下記のPHPプログラムについて 1 <?php 2 // セッションを開始する 3 session_start(); 4 ?> 5 <html> 6 <head> 7 <title>セッション変数にデータをセットする</title> 8 </head> 9 <body> 10 <?php 11 // セッション変数にデータをセットする 12 if (!isset($_SESSION["name"])) { 13  echo "<p>セッション情報をセットしました"; 14  $_SESSION["name"] = "田中"; 15  } 16 echo "<p>名前:".$_SESSION["name"]; 17  18 // セッション変数にデータをセットする 19 if (!isset($HTTP_SESSION_VARS["name2"])) { 20  echo "<p>セッション情報をセットしました"; 21  $HTTP_SESSION_VARS["name2"] = "高橋"; 22 } 23 echo "<p>名前:".$HTTP_SESSION_VARS["name2"]; 24 25 ?> 26 </body> 27 </html> 実行すると 名前:田中 名前:高橋 となるのですが、なぜ13行目、20行目のecho文の内容が出力されないのか不思議です。 echo文の内容が表示がされない理由ついて教えてください。 よろしくお願いします!

    • ベストアンサー
    • 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
  • セッションが変数が取得できません

    こんにちは。初心者で大変申し訳ないのですが、2日間悩みましたがどうしても解決できないため質問させて頂きました。どうかご教授下さい。 PHPのセッション機能の利用をしようと以下のような環境でテストスクリプトを実行したのですが、うまくいきません。 PHPバージョン4.3.10 register_globals On session.auto_start Off session.bug_compat_42 On session.bug_compat_warn On session.cache_expire 180 session.cache_limiter nocache session.cookie_domain no value session.cookie_lifetime 0 session.cookie_path / session.cookie_secure Off session.entropy_file no value no session.entropy_length 0 session.gc_divisor 100 session.gc_maxlifetime 1440 session.gc_probability 1 session.name PHPSESSID session.referer_check no value session.save_handler files session.save_path /tmp session.serialize_handler php session.use_cookies Off session.use_only_cookies Off session.use_trans_sid On SESSION登録側スクリプト <?php session_start(); $_SESSION['tarou'] = 50; ?> <a href="test.php">test</a> 結果表示側スクリプト <?php session_start(); echo($_SESSION['tarou']); ?> session.use_trans_sid Onで透過的にURIにセッションIDを埋め込むタイプで、 セッションファイル自体は作られているのですが セッション変数は登録されておらず、空のセッションファイルとなってしまっています。 色々と調べてみたのですがどうしても解決できません。 大変お手数ですがどうか宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう