警告: セッション Cookie を送信できません- ヘッダーはすでに送信されました
警告: セッション キャッシュ リミッターを送信できません - ヘッダーはすでに送信されました
分析と解決策:
その理由は、プログラム内でsession_start()を使用しているためです
、以前に実際に練習したことがあるhtmlの内容が出力されます。もしかしたら、私はメッセージを持っていない、メッセージを
エコーするか印刷するだけだ、と言うかもしれません。申し訳ありませんが、echo
またはprint ステートメントによって生成された出力は、実際の html コンテンツ出力です。この種の問題を解決する方法は、 session_start() をプログラムの最初の行 に調整することです。 2. エラーメッセージ警告: open(F:/689phpsessiondatasess_66a39 376) b873f4daecf239891edc98b5, O_RDWR) が失敗しました
分析と解決策
:
このエラー ステートメントは、通常、php.ini
のsession.save_path 項目が適切に設定されていないことが原因です。解決策は、
session.save_pathを変更することです。 session.cookie_path 設定は
session_save_path = c:temp session.cookie_path = c:temp に設定されています次に、c:でtempディレクトリ下の
3.
エラーメッセージ 警告: の初期化されていないセッションを破棄しようとしています
分析と解決策
:
このようなプロンプトは通常、session_destroy()関数を直接調整することによって発生します。多くの友人は、
session_destroy() 関数は独立して実行できると考えていますが、そうではありません。解決策は、
session_destroy()関数を調整する前に、session_start()を使用してsession関数
をオンにすることです。 4.質問:現在のセッションのid値を取得するにはどうすればよいですか?
最も簡単な方法は: echo SID; session_id('0-2-c-d-e ');session_start( );
$_SESSION['is_admin'] = 'はい'
;
エコーSID; ?>
:私のプログラムは header 関数を呼び出しています。以前は
config.phpファイルを に含めましたが、config.php ファイルには出力がありませんでした。 sessionでも問題1と同じエラーが発生しました。
headerの前にsession_start()を使用したためですか?
答え:おそらくphpプログラムを注意深くチェックしましたが、header()を引用する前に出力はなく、includeファイルにも出力はありません。まったく出力されません!しかし、カーソルキーを使用して、?>このPHPコードの終了ステートメントの後にチェックを移動しますか?次に、?>の後に空白行またはいくつかのスペースがあることがわかります。これらのいくつかの空白行またはスペースを削除すると、問題は解決されます。
注: この問題は PHP4.1.2 以降のバージョンで発生するため、テストされていません。
6
?の答え: 最も簡単な方法は Session_start (); です。 isterEd ('ログイン') │ │ $ ログイン! = True) { エコー "ログインしていません"
7.ask
:me session_register()
を使用してsession変数を登録しましたが、headerを使用したり、
javascriptのリダイレクトステートメントを使用したりすると , すると次のページで session
登録されている変数値にアクセスできません。どうやって解決すればいいでしょうか? [テストが成功しませんでした
]
問題のプログラムの断片: session_start(); $ok = '愛しています' header("location : next.php"); next.php
echo $ok; >
解決策:
header関数やwindow.location
のような関数を使用すると、前のページVariablesに登録されたsessionは簡単に失われます。この問題の理由への答え。
しかし、解決策はあります。以下に示すように
header("Location: next.php" ."?" . SID); 次のページにジャンプするときは、
セッションの現在のを変更します。 id
はパラメータとして使用され、次のページに渡されます。
8.session配列
session_register('data');の渡し方$data=配列(1,2,3, 4 ; RS['**']
セッションにアクセスするには?
答え: はい、次の global
配列を使用してsession にアクセスし、Web ページ
$HTTP_SESSION_VARS を強化できます $ _SESSION ルーチン
:session_start(); $username = 'stangly.wrong' ; session_register('ユーザー名');
echo $HTTP_SESSION_VARS['ユーザー名'];
エコー $_SESSION['ユーザー名'];
?>このルーチンを参照して、独自のニーズに合わせてプログラムを変更してください。
質問 10: session_unregister() と session_destroy() の違いは何ですか?
session_unregister() 主な関数は、現在の session 変数の登録を解除することです。ただし、$HTTP_SESSION_VARS または $_SESSION を使用して現在のページの session 変数を参照する場合は、unset() と連携する必要がある場合があることに注意してください。 session変数を削除します。
そしてsession_destroy()は現在のsession環境をクリアします。これは、session_destroy() 関数を使用した後は、session_is_registered() を使用して session の変数を検出できなくなることを意味します。ただし、globalのsessionをクリアしたり、session.でsession cookieを使用したりすることはできないので、session_destroyを使用する前に行うことをお勧めします。使う$HTTP_SESSION_VARS $_SESSION セッションにアクセスします (はphp.netから翻訳)
ルーチン:
if(isset($_COOKIE [セッション名() ])) {
session_start();
unset($_COOKIE[session_name() ]);)
session_start();
$_SESSION['is_admin'
] = 'はい'
; $is_admin = 'いいえ
;
echo $_SESSION['is_admin'
];?> 脆弱性の説明:
php.iniが入っている場合、register_globals = Onの場合、定義された変数は
sessionと同じ名前に変更されます。 sessionを使用してログインすると、カジュアルログインの問題が発生します。
以上、SESSION の落とし穴をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。