セッション機能を使って開発していたのですが、どうも思うように動作しないので、書籍に載っていた簡単なプログラムを試してみましたが動作しませんでした。
<書籍のソース>
<?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で質問しましょう!
似たような質問が見つかりました
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Chrome(クローム) Chromeで検索するたびにウイルス感染(?)の警告がでます。 どうすれば解決しますか? 5 2023/02/06 14:40
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fsockopenを使った証明書付きの...
-
$_SESSION 有効期限をブラウザ...
-
PHPからリアルタイムにデータを...
-
DoCoMo FOMAでセッション管理が...
-
PHPのセッション変数 絞り込み...
-
IE11でページ遷移時にセッショ...
-
session_start();について
-
PHPのWARNINGをcatchするには
-
フォントの色を変えるには?
-
phpでPEAR::DBを使っているので...
-
別ファイルの変数を呼び出した...
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
CSV出力にHTMLが入ってしまう
-
「クラス関数」「メンバ関数」...
-
phpでメール送信できません 原...
-
one drive のアップロード失敗...
-
さくらサーバーにて、phpからメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP session_destroyとsession...
-
$_SESSION 有効期限をブラウザ...
-
jqueryの$.ajaxでPHPに値を渡し...
-
utf8保存をするとsession_start...
-
SESSIONを階層ごとに分けるには?
-
ブラウザの戻る ページ遷移PHP...
-
PHPの引数を含んだURLについて
-
IE11でページ遷移時にセッショ...
-
PHPでのセッション管理について
-
PHPからリアルタイムにデータを...
-
PHPのセッション変数 絞り込み...
-
自動ログアウト
-
セッションファイルの場所
-
fsockopenを使った証明書付きの...
-
__wakeup()と__sleep()について
-
リロード・ページビューの判定
-
セッション部分のインクルード
-
セッションのクッキー有効期間...
-
SESSIONとGLOBALSとCLASSについて
-
phpでのログアウトについて
おすすめ情報