
セッション機能を使って開発していたのですが、どうも思うように動作しないので、書籍に載っていた簡単なプログラムを試してみましたが動作しませんでした。
<書籍のソース>
<?php
session_name("MYSESS");
session_start();
if(!session_is_registered("access"))
{
session_register("access");
$access=1;
}
else
{
$access++;
}
?>
<html>
<body>
<p><?=$access?>回目の訪問です</p>
<p><a href="sample.php?<?=SID?>">ここをクリック</a></p>
</body>
</html>
実行すると、「1回目の訪問です」と出て、クリックしても1回目のままで、増えることがありません。
<php.iniのsessionに関する部分の設定>
[Session]
session.name=PHPSESSID
session.auto_start=1
session.serialize_handler=php
session.gc_probability=1
session.gc_divisor=100
session.gc_maxlifetime=1440
session.bug_compat_42=0
session.bug_compat_warn=0
session.cache_limiter=nocache
session.cache_expire=180
session.use_trans_sid=0
セッションデータは、ファイルとしては保存されていますが、中を見ると
access|N;
となっています。
他にもスクリプトを試しましたがすべてこのファイルのデータはNのままで値が保存されることがありません。
お気づきの点がありましたらご指摘をお願いいたします。
No.2ベストアンサー
- 回答日時:
php.ini で register_globals が Off に設定されていると session_register 関数は使用できないようです。
確認してみてください。
また個人的にはこの使い方は推奨しません。
$_SESSION 変数を介したやり方がセッションを使っているということが明示的になり結果的にわかりやすいプログラムを書くことができると思います。
$_SESSIONに置き換えたプログラムを載せておきます。
<?php
session_name("MYSESS");
session_start();
if($_SESSION['access'] == "" )
{
$_SESSION['access']=1;
}
else
{
$_SESSION['access']++;
}
?>
<html>
<body>
<p><?=$_SESSION['access']?>回目の訪問です</p>
<p><a href="test4.php">ここをクリック</a></p>
</body>
</html>
これは単に $_SESSION に置き換えただけなのでちょっと汚らしいですが、こんな感じでできます。
No.1
- 回答日時:
その書籍の記載はかなり古いですね。
register globalsがonでないと動かないと思います。
PHP4.2.0からはセキュリティ上register globalsはoffがデフォルトになっているのでそのスクリプトでは動きません。
今はsession_registerよりも$_SESSIONの使用が推奨されているので新しいサンプルでテストされたらいいと思います。
参考URL:http://www.php.net/manual/ja/ref.session.php
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セッションのクッキー有効期間...
-
phpのセッションについて
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
.htaccessにphp_valueが使用できな
-
mysql→EUC-JP、php→UTF-8の時の...
-
2つの画像ファイルが異なるファ...
-
require_once()でファイルが読...
-
phpの中でphpを書けないか
-
FTPコマンドでディレクトリごと...
-
MkDir関数
-
【file_exists】ファイルが存在...
-
sqlで日付が一番古いデータの月...
-
フォームで戻った際に入力済み...
-
<A href ~ と一緒に値を渡すには
-
テレメールとは?
-
「クラス関数」「メンバ関数」...
-
Makefile.inとMakefile.am
-
現在位置より2つ上のディレク...
-
さくらインターネットでメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$_SESSION 有効期限をブラウザ...
-
PHP session_destroyとsession...
-
下までスクロールしたらDBの...
-
「セッション管理用のクッキー...
-
セッションを使うと要するに
-
IE11でページ遷移時にセッショ...
-
session_start出来ません。
-
さくらサーバーでsessionが使え...
-
PHPのセッションについて。
-
jqueryの$.ajaxでPHPに値を渡し...
-
以下プログラム(php)のバ...
-
セッションの変数の受渡しについて
-
携帯サイトのセッションについて
-
自動ログアウト
-
session_start();について
-
セッションが変数が取得できません
-
sessionが分かりにくいです
-
PHPのセッション変数 絞り込み...
-
ブラウザの戻る ページ遷移PHP...
-
PHPでpaypal支払後のセッション...
おすすめ情報