検索
ホームページphp教程php手册PHP セッションの一般的な問題と解決策のまとめ

PHP セッションの一般的な問題と解決策のまとめ

Jun 13, 2016 pm 12:32 PM
phpsessionwarning方法一般要約するヒント解決する間違い

1.
エラー メッセージ
警告: セッション Cookie を送信できません - ヘッダーはすでに送信されています
警告: セッション キャッシュ リミッターを送信できません - ヘッダーはすでに送信されています
分析と解決策
この種の問題、理由それは、プログラムで session_start() を使用すると、実際の HTML コンテンツが以前に出力されていることです。おそらく、私はそれを持っていないので、メッセージをエコーするか印刷するだけだと言うかもしれません。申し訳ありませんが、echo または print ステートメントによって生成される出力は、実際の HTML コンテンツ出力です。この種の問題を解決する方法は、session_start() をプログラムの最初の行に移動することです。
2.
エラー メッセージ
警告: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) が失敗しました
分析と解決策
このようなエラー ステートメントが表示されるのはよくあることです。 session.save_path に関する php.ini が正しく設定されていません。解決策は、session.save_path と session.cookie_path を
session_save_path = c:temp
session.cookie_path = c:temp
に設定することです。 : directory
の下に一時ディレクトリを作成します。 3.
エラー メッセージ
警告:
で初期化されていないセッションを破棄しようとしています。 分析と解決策
このようなプロンプトが表示された場合、通常はユーザーのせいです。 session_destroy() 関数を直接呼び出すことによって。多くの友人は、session_destroy() 関数が独立して実行できると考えていますが、そうではありません。解決策は、session_destroy() 関数を呼び出す前に session_start() を使用してセッション関数を有効にすることです。
4. 質問: 現在のセッションの ID 値を取得するにはどうすればよいですか?
最も簡単な方法は次のとおりです。
echo SID;
すぐにわかります。
5. 質問: ヘッダー関数を呼び出す前にプログラムに出力がありません。config.php ファイルをインクルードしているにもかかわらず、セッションで同じエラーが報告されるのはなぜですか。質問 1、ヘッダーの前に session_start() を使用したためですか?
回答: おそらく、php プログラムを注意深くチェックしましたが、確かに header() を参照する前にエラーはなく、出力もありません。インクルードファイルです!しかし、カーソルキーを使用して、PHPコードのendステートメントの後にチェックを移動しますか?>? ?> の後に空白行またはいくつかのスペースがあることがわかります。これらの空白行またはスペースを削除すると、問題は解決します。
注: この問題は PHP4.1.2 以降のバージョンで発生しますが、テストされていません。
6. 質問: セッションを使用してメイン ページにログインした後、セッションを使用して他のページでのログインを制限するにはどうすればよいですか? 。 。
答え: 最も簡単な方法は
session_start();
if(!session_registered('login') ││ $login != true) {
echo "ログインしていません"; 🎜 > exit;
}
7. 質問: session_register() を使用してセッション変数を登録しましたが、ヘッダーまたは JavaScript リダイレクトステートメントを使用すると、次のページの登録された変数値にアクセスできません。どうやって解決すればいいでしょうか?
問題のプログラムの断片:
session_start();
$ok = 'love you';
session_register('ok'); location : next.php");
?>
next.php
session_start();
echo $ok;
?>
解決方法:
header 関数や window.location などの関数を使用すると、前のページで登録したセッション変数が簡単に失われます。 この問題の詳細な原​​因はまだわかっていません。
しかし、解決策はあります。以下に示すように、
header("Location: next.php" ."?" . SID);
次のページにジャンプするときは、セッションの現在の ID をパラメータとして使用し、次のページに渡します。ページ。
8. セッションで配列を渡す方法
session_register('data');
$data=array(1,2,3,4);
登録してから割り当てる方法です。 value
9. 質問 9: $HTTP_GET_VARS['**'] のようなメソッドを使用してセッション値にアクセスできますか?
回答: はい、次のグローバル配列を使用してセッションにアクセスし、Web ページのセキュリティを強化できます
$HTTP_SESSION_VARS
$_SESSION
ルーチン:
session_start ();
$username = 'stangly.wrong';
echo $HTTP_SESSION_VARS['username']; 🎜> echo $_SESSION['username'];
?>
php ファン サイト http://www.phpfans.net を参照して、このルーチンを次のように変更してください。自分のプログラムに合わせてください。
質問 10: session_unregister() と session_destroy() の違いは何ですか?
session_unregister() 関数の主な機能は、現在のセッション変数の登録を解除することです。ただし、$HTTP_SESSION_VARS または $_SESSION を使用して現在のページのセッション変数を参照する場合は、unset() と連携してセッション変数の登録を解除する必要がある場合があることに注意してください。
そして session_destroy() は現在のセッション環境をクリアします。これは、session_destroy() 関数を使用した後は、session_is_registered() を使用してセッション変数を検出できなくなることを意味します。ただし、グローバル内のセッションをクリアしたり、セッション Cookie を使用したりすることはできないので、session_destroy を使用する前に、セッションにアクセスするために $HTTP_SESSION_VARS $_SESSION を使用しないことをお勧めします。ルーチン:
if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]); }

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

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

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!