ホームページ php教程 php手册 PHPセッションに関する警告

PHPセッションに関する警告

Jun 21, 2016 am 08:52 AM
bug php session warn

警告の全文は次のとおりです:

PHP 警告: 不明: スクリプトはセッションの副作用に依存している可能性があります

PHP 4.2.3 までは存在していましたが、セッション拡張は

であることに注意してください。

register_globals が有効でない限り、グローバル変数をデータのソースとして考慮しません。

session.bug_compat_42

を設定することで、この機能とこの警告を無効にできます。

、または session.bug_compat_warn を

の不明でそれぞれオフにします。

この問題については、インターネット上に多くの解決策がありますが、どれも不明瞭な答えを提供しています。では、本当の理由と解決方法は何でしょうか?

まずこれを覚えておいてください。PHP4.2 以降、register_globals はデフォルトで OFF に設定されています。

4.2.3 以降、以前のモードとの互換性を保つために、PHP は bug_compat_42 を導入しました。このオプションが有効になっている場合 (デフォルトで有効)、PHP は SESSION 内の変数を自動的にグローバル変数として使用できるようにします。オプションがオンになっている場合 次に、この機能の使用が報告されます。

コードの一部を見てみましょう、

session_start();

var_dump($_SESSION);

$name = 'ラルエンス';

$_SESSION['名前'] = null;

?>

上記のコードでは、bug_compat_42 がオンで register_globals がオフになっている場合、ページを 2 回リフレッシュする出力は次のようになります:

//初めて:

配列(0) {}

// 2 回目

配列(1) { ["a"]=> 文字列(8) "ラルエンス" }

2 回目に NULL にならないのはなぜですか? bug_compat_42 がオンになっていると、PHP は変数 a が $_SESSION['a'] への参照であると認識し、session_close のときに変数 a の値が書き戻されるからです。 >

このプロセス中に、bug_compat_warn がオンになっている場合、記事の冒頭の警告がスローされます

ということで〜

では、警告が発生する具体的な条件は何でしょうか? これらの条件を知れば、この警告を回避できます

PHPSRC/ext/session/session.c には、必要なすべての答えがあります:

static void php_session_save_current_state(TSRMLS_D) /* {{{ */

{

int ret = 失敗;

IF_SESSION_VARS() {

//セッション配列がある場合

if (PS(bug_compat) && !PG(register_globals)) {

ハッシュテーブル *ht = Z_ARRVAL_P(PS(http_session_vars));

HashPosition pos;

zval **val;

int do_warn = 0;

zend_hash_internal_pointer_reset_ex(ht, &pos);

while (zend_hash_get_current_data_ex(ht

、(void **) &val, &pos) != FAILURE) {

if (Z_TYPE_PP(val) == IS_NULL) { //変数はnullです

if (merge_global(ht, &pos TSRMLS_CC)) {//変数ライトバック

do_warn = 1;

}

}

zend_hash_move_forward_ex(ht, &pos);

}

if (do_warn && PS(bug_compat_warn)) {

php_error_docref(NULL TSRMLS_CC, E_WARNING, "あなたのスクリプトはおそらく

PHP 4.2.3 まで存在していたセッションの副作用に依存しています .....");

//以下の

は省略します

bug_compat_42 を有効にしない場合 (この機能は現在ほとんど使用されておらず、有効にすると混乱が生じる場合があります)、bug_compat_warn を起動しない場合、または register_globals が有効になっている場合、この警告は表示されないことがわかります。 .

さらに、bug_compat_42 を有効にすると、次の通知が発生する可能性があります..

PHP 通知: 不明: セッションのバグ互換性コードは、

を試行しません。

グローバル変数 $324324 は数値的な性質があるため、行 0

の Unknown にあります。

これは、$_SESSION で数値インデックスを使用するときに発生する可能性がある警告です。



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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles