目次
あなたのブラウザが Cookie をサポートしていないことを除外するものではありません

phpのsession_idが変化し続ける

Jun 23, 2016 pm 01:58 PM

ページの session_id が変更され続ける理由を教えてください。更新するたびに変更されます。問題の原因は何ですか? (解決策) )

あなたのブラウザは Cookie をサポートしていませんか?

最も可能性が高いのは session.auto_start = 1

session.auto_start = 0

私のブラウザは Cookie をサポートしています


それなら、私は話すコードを投稿するしかありません

RSS。 php

<?php
session_start();

$_SESSION["name"] = "lifffffff4";

echo "<br>";

echo session_id();

? >
最初に上記のファイルにアクセスし、次に次のファイルにアクセスします
Index.php
session_start();
echo $_SESSION["name"]; );

» ["名前"];
echo "<a href="/test/index.php"</a>"
?>
同じ効果


print_r($_COOKIE); を追加
空の配列をすべて出力しました

session_start();
$_SESSION["name"] = "lifffffff4";

echo $_SESSION["name"];

echo session_id(); Index.php">2222</a>";
print_r($_COOKIE)

<?php

echo $_SESSION["name" ]; );
print_r($_COOKIE);
?> ini にセッション関連の設定はありますか?

php.ini を変更していないのですが、どうすればよいですか?

phpsession Cookie がないのはなぜですか?
これは間違いありません。
弱く尋ねます、session_id このプログラムには何か特別な用途がありますか?通常は $_SESSION を操作するだけです

setcookie を使用して Cookie 変数を設定し、それが読み取れるかどうかを確認します

同じコードを他の人のコンピューターに配置することもできます


echo     ini_get(&quot;session.use_cookies&quot;);//这个值多少
ログイン後にコピー

を使用しています。 setcookie を使用して cookie 変数を設定し、再度読み取れるかどうかを確認してみました。問題はありませんでした。エラー メッセージが表示されるかどうかを確認してください。


次に、セッション関連の 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 <input> 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("特定の値") を使用しましたが、セッションは期限切れになりません。ブラウザをどのように閉じても、前のセッションはまだ残っています。ここで誰かが私に答えてくれることを願っています。ありがとう

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles