ページの session_id が変更され続ける理由を教えてください。更新するたびに変更されます。問題の原因は何ですか? (解決策) )
あなたのブラウザは Cookie をサポートしていませんか?
最も可能性が高いのは session.auto_start = 1session.auto_start = 0
私のブラウザは Cookie をサポートしています
それなら、私は話すコードを投稿するしかありません
session_start();
$_SESSION["name"] = "lifffffff4"; echo "
";
? >
最初に上記のファイルにアクセスし、次に次のファイルにアクセスします
Index.php
session_start();
echo $_SESSION["name"]; );
» ["名前"];
echo ""
?>
同じ効果
print_r($_COOKIE); を追加
空の配列をすべて出力しました
session_start();
$_SESSION["name"] = "lifffffff4";
echo session_id(); Index.php">2222";
print_r($_COOKIE)
setcookie を使用して Cookie 変数を設定し、それが読み取れるかどうかを確認します
echo ini_get("session.use_cookies");//这个值多少
次に、セッション関連の php.ini 設定情報を投稿してください。皆さん、分析にご協力ください。
[セッション]
; データの保存/取得に使用されるハンドラー。
; http://php.net/session.save-handler
session.save_handler = ファイル
; save_handler に渡される引数。 ファイルの場合、これはパス
です。 データ ファイルが保存される場所。 注: Windows ユーザーはこれを変更する必要があります
; PHP のセッション関数を使用するための変数。
;
; パスは次のように定義できます:
;
; session.save_path = "N;/パス"
;
; ここで、N は整数です。 すべてのセッション ファイルを
に保存する代わりに、 /path、これにより、N レベルの深さのサブディレクトリが使用され、
; セッション データをこれらのディレクトリに保存します。 これは、次のような場合に役立ちます
; または、お使いの OS に 1 つのディレクトリ内の多数のファイルに関する問題があり、
; 多くのセッションを処理するサーバーのより効率的なレイアウト。
;
; 注 1: PHP はこのディレクトリ構造を自動的に作成しません。
; その目的のために、ext/session ディレクトリ内のスクリプトを使用できます。
; 注 2:
を選択した場合は、以下のガベージ コレクションに関するセクションを参照してください。 セッションのストレージにはサブディレクトリを使用します
;
; ファイル ストレージ モジュールは、デフォルトでモード 600 を使用してファイルを作成します。
;
を使用すると、これを変更できます。
; session.save_path = "N;MODE;/パス"
;
; ここで、MODE はモードの 8 進表現です。 この
; に注意してください。 プロセスの umask は上書きされません。
; http://php.net/session.save-path
session.save_path = "d:/wamp/tmp"
; Cookie を使用するかどうか。
; http://php.net/session.use-cookies
session.use_cookies = 1
; http://php.net/session.cookie-secure
;session.cookie_secure =
; このオプションにより、PHP は
を保存および維持するために Cookie を取得して使用するようになります。 セッションID。
との戦いに非常に役立つため、この作戦を推奨します。 独自のセッション ID を指定および管理しない場合のセッション ハイジャック。 それは
です。 セッションハイジャック防御のすべてが終わりではありませんが、良いスタートです。
; http://php.net/session.use-only-cookies
session.use_only_cookies = 1
; セッションの名前(Cookie 名として使用)。
; http://php.net/session.name
session.name = PHPSESSID
; リクエストの起動時にセッションを初期化します。
; http://php.net/session.auto-start
session.auto_start = 0
; Cookie の存続期間 (秒単位)、または 0 の場合はブラウザが再起動されるまでの存続期間。
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 1000
; Cookie が有効なパス。
; http://php.net/session.cookie-path
session.cookie_path = /
; Cookie が有効なドメイン。
; http://php.net/session.cookie-domain
session.cookie_domain =80tao.dev
; httpOnly フラグを Cookie に追加するかどうか。これにより、JavaScript などのブラウザ スクリプト言語にアクセスできなくなります。
; http://php.net/session.cookie-httponly
session.cookie_httponly =
; データをシリアル化するために使用されるハンドラー。 php は、PHP の標準シリアライザです。
; http://php.net/session.serialize-handler
session.serialize_handler = php
; 「ガベージ コレクション」プロセスが開始される確率を定義します
; すべてのセッションの初期化時に。 確率は
を使用して計算されます。 gc_probability/gc_divisor。 ここで、session.gc_probability は分子
です。 gc_divisor は方程式の分母です。 この値を 1 に設定します
; session.gc_divisor の値が 100 の場合、約 1% の確率で
が得られます。 gc はあらゆるリクエストで実行されます。
; デフォルト値: 1
; 開発値: 1
; 生産価値: 1
; http://php.net/session.gc-probability
session.gc_probability = 1
; 「ガベージ コレクション」プロセスが
ごとに開始される確率を定義します。 セッションの初期化。 確率は次の式を使用して計算されます。
; gc_probability/gc_divisor。 ここで、session.gc_probability は分子であり、
です。 session.gc_divisor は方程式の分母です。 この値を 1 に設定します
; session.gc_divisor の値が 100 の場合、約 1% の確率で
が得られます。 gc はあらゆるリクエストで実行されます。 この値を 1000 に増やすと、
が得られます。 0.1% の確率で、gc はどのようなリクエストでも実行されます。 大容量の本番サーバーの場合は、
; これはより効率的なアプローチです。
; デフォルト値: 100
; 開発価値: 1000
; 生産価値: 1000
; http://php.net/session.gc-divisor
session.gc_divisor = 1000
; この秒数が経過すると、保存されたデータは「ゴミ」として見なされ、
; ガベージ コレクション プロセスによってクリーンアップされます。
; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440
; 注: セッション ファイルの保存にサブディレクトリ オプションを使用している場合
; (上記の session.save_path を参照)、ガベージ コレクションは*行われません*
; 自動的に起こります。 ゴミは自分で処理する必要があります
; シェルスクリプト、cron エントリ、またはその他のメソッドを介した収集。
; たとえば、次のスクリプトは
と同等です。 session.gc_maxlifetime を 1440 (1440 秒 = 24 分) に設定:
; cd /path/to/sessions; find -cmin +24 | xargs rm
; PHP 4.2 以下には、
を可能にする文書化されていない機能/バグがあります。 register_globals
の場合でも、グローバル スコープ内のセッション変数を初期化します。 無効になっています。 PHP 4.3 以降では、この機能が使用されている場合に警告が表示されます。
; 機能と警告は個別に無効にすることができます。 現時点では、
; 警告は、bug_compat_42 が有効になっている場合にのみ表示されます。 この機能
; 正しく対処しないと、重大なセキュリティ問題が発生する可能性があります。
です; 本番サーバーではこの機能を使用しないことをお勧めします。 でも、あなたは
; 開発サーバーでこれを有効にし、警告も有効にする必要があります。 あなたが
; 開発サーバーではこの機能を有効にしないでください。
の場合でも警告は表示されません。 これによって引き起こされる使用エラーやデバッグエラーは追跡が難しい場合があります。
; デフォルト値: オン
; 開発値: オン
; 生産価値: オフ
; http://php.net/session.bug-compat-42
session.bug_compat_42 = オン
; この設定は、
を初期化するときに PHP によって警告を受けるかどうかを制御します。 セッションの価値をグローバル空間に移します。 session.bug_compat_42 は
の前に有効にする必要があります。 これらの警告は PHP によって発行される場合があります。 詳細については、上記のディレクティブを参照してください。
; デフォルト値: オン
; 開発値: オン
; 生産価値: オフ
; http://php.net/session.bug-compat-warn
session.bug_compat_warn = オン
; HTTP リファラーをチェックして、ID を含む外部に保存された URL を無効にします。
; セッションが
になるには、HTTP_REFERER にこの部分文字列が含まれている必要があります。 有効とみなされます。
; http://php.net/session.referer-check
session.referer_check =
; ファイルから読み取るバイト数。
; http://php.net/session.entropy-length
session.entropy_length = 0
; セッション ID を作成するためにここで指定します。
; http://php.net/session.entropy-file
;session.entropy_file = /dev/urandom
session.entropy_file =
; http://php.net/session.entropy-length
;session.entropy_length = 16
; HTTP キャッシュの側面を決定するには、{nocache,private,public,} に設定します
; または、アンチキャッシング ヘッダーの送信を避けるために、これを空のままにしておきます。
; http://php.net/session.cache-limiter
session.cache_limiter = nocache
; ドキュメントは n 分後に期限切れになります。
; http://php.net/session.cache-expire
session.cache_expire = 180
; trans sid サポートはデフォルトでは無効になっています。
; trans sid を使用すると、ユーザーのセキュリティが危険にさらされる可能性があります。
; このオプションは注意して使用してください。
; - ユーザーはアクティブなセッション ID を含む URL を送信できます
; 経由で他の人に送信します。 電子メール/irc/など
; - アクティブなセッション ID を含む URL が保存される場合があります
; 公的にアクセス可能なコンピュータ内。
; - ユーザーは同じセッション ID を使用してサイトにアクセスできます
; ブラウザの履歴やブックマークに保存されている URL を常に使用します。
; http://php.net/session.use-trans-sid
session.use_trans_sid = 0
; セッション ID の生成に使用するハッシュ関数を選択します。
; 可能な値
; 0 (MD5 128 ビット)
; 1 (SHA-1 160 ビット)
; http://php.net/session.hash-function
session.hash_function = 0
; 変換時に各文字に何ビットを保存するかを定義します
; バイナリ ハッシュ データを読み取り可能なものに変換します。
; 可能な値:
; 4 (4 ビット: 0-9, a-f)
; 5 (5 ビット: 0-9、a-v)
; 6 (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5
; http://php.net/session.hash-bits-per-character
session.hash_bits_per_character = 5
; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden field with the info which is otherwise appended
; to URLs. If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
; Default Value: "a=href,area=href,frame=src,form=,fieldset="
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; http://php.net/url-rewriter.tags
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
session.cookie_domain =80tao.dev
这个值去掉吧,,你确认需要?
这个是我项目的一个 配置 有影响吗
你说的去掉指的是什么意思
session.cookie_domain =80tao.dev
把这个去掉就可以了
但是为什么啊
session.cookie_domain =80tao.dev
把这个去掉就可以了
但是为什么啊
看命名还不清楚啊,,限制域啦
那个是设置session对应的cookie在什么域有效的
你是本地测试么?是http://localhost这么去访问你的项目的么?是的话就去掉,如果是正式站点,你改成
#注意加的那个点,表明所有子域有效,包括wwwsession.cookie_domain = .80tao.dev
我填写那个域为什么就不行了啊 默认是空的 为什么 给我解释一下吧
那个是设置session对应的cookie在什么域有效的
你是本地测试么?是http://localhost这么去访问你的项目的么?是的话就去掉,如果是正式站点,你改成
PHP code
#注意加的那个点,表明所有子域有效,包括www
session.cookie_domain = .80tao.dev
试下。
这个很奇怪啊,我好像没见过.dev的正式域名,有吗?
session.cookie_domain =80tao.dev
表示 session 只在 80tao.dev 域有效
所以需要也在这个域中测试你的代码
引用 24 楼 的回复:
session.cookie_domain =80tao.dev
把这个去掉就可以了
但是为什么啊
看命名还不清楚啊,,限制域啦
我是本地反问
我填写那个域为什么就不行了啊 默认是空的 为什么 给我解释一下吧
是我本地的虚拟主机 配置的虚拟域名
引用 26 楼 的回复:
那个是设置session对应的cookie在什么域有效的
你是本地测试么?是http://localhost这么去访问你的项目的么?是的话就去掉,如果是正式站点,你改成
PHP code
#注意加的那个点,表明所有子域有效,包括www
session.cookie_domain = .80tao.dev
试下。
这个很奇怪啊,我好像没……
怎么一说还真是,有点奇葩了,我也没见过dev的域名。
这个很奇怪啊,我好像没见过.dev的正式域名,有吗?
是我本地的虚拟主机 配置的虚拟域名
好吧 表示我不知道
これが古い投稿であることは承知していますが、私も最近この問題に遭遇しました。また、session_idは変更されず、ショッピングカートとして利用することはできません。次に、人為的に session_id("特定の値") を使用しましたが、セッションは期限切れになりません。ブラウザをどのように閉じても、前のセッションはまだ残っています。ここで誰かが私に答えてくれることを願っています。ありがとう