6

サイトの 1 つにログインすると、突然、次のエラーが表示されました。

未定義関数 session_register() の呼び出し

いくつかの調査の後、session_register() は PHP 5.4 以降では非推奨であることがわかりました。ホスティング コントロール パネルを確認したところ、実行中の現在のバージョンは PHP 5.4.19 であることがわかりました。彼らはアップグレードを強制しただけだと思います。それが、この問題が突然発生したように見える理由です。

いくつかのスタック オーバーフローの投稿に目を通し、PHP ドキュメントへのリンクを確認しました。私が収集したものから、session_register() は推奨されておらず、代わりに $_SESSION に置き換える必要があります。

問題は、それらの両方が既に私のコードに表示されていることです。私のindex.phpファイルのコードは次のとおりです。

  53 <? if ($username) {
  54    session_register("ADMIN");
  55    $_SESSION['ADMIN'] = $username;
  56 ?>

したがって、54 行目 (非推奨の部分) を削除するだけで機能するはずですが、そうではありません。私がそれをしたとき、それはコードを壊しました。

HEREHEREを読んだ他の投稿に基づいて、上記の 55 行目にあるコードはそれ自体でうまくいくはずだと言っているようです。だから、なぜうまくいかなかったのか少し混乱しています。誰かが私が使用すべきコードを教えてくれれば、心から感謝します。スクリプトの開発者は実際にはサポートを提供していません。

注: また、ページの最上部で呼び出される session_start() があります。

4

4 に答える 4

5

session_startsession_registerの呼び出しが欠落している可能性があるため、これを自動的に行うため、 $_SESSIONグローバルを使用する前に session_start を呼び出したことを確認するだけです。

ここで詳細を確認できますhttp://www.php.net/manual/en/function.session-register.php

この関数が呼び出される前に session_start() が呼び出されなかった場合、パラメータなしで session_start() への暗黙的な呼び出しが行われます。$_SESSION はこの動作を模倣せず、使用する前に session_start() が必要です。

于 2013-09-17T21:03:33.753 に答える
2

現在のセッションでグローバル変数をその名前で登録するためsession_register('ADMIN') 、コードに $ADMIN 変数がある可能性があるため、それらを見つけて次のように置き換えます。

$_SESSION['ADMIN']

これがお役に立てば幸いです。

于 2013-09-17T21:26:24.113 に答える
1

当たり前のことを見落としていたようです。古い session_register コードを削除するだけで、正しい軌道に乗っていました。

しかし、投稿した元のコードが始まることに注意してください

<?

それ以外の

<?php

于 2013-10-01T22:59:46.207 に答える
0

session_start()コードの先頭に a を追加して、$_SESSION操作または作成します。

于 2013-09-17T21:03:45.193 に答える