PHP のセッション関数は、多くの初心者にとって常に難しいものでした。ベテランでも時々混乱する人もいます。この記事では、みんなの参考のためにこれらの問題を簡単にまとめます。
1. エラーメッセージ
引用
コードは次のとおりです | コードをコピー |
警告: セッション Cookie を送信できません - ヘッダーはすでに送信されています |
分析と解決策
この種の問題が発生する理由は、プログラム内で session_start() を使用するときに、実際の HTML コンテンツが以前に出力されていることです。おそらく、私はそれを持っていないので、メッセージをエコーするか印刷するだけだと言うかもしれません。申し訳ありませんが、echo または print ステートメントによって生成される出力は、実際の HTML コンテンツ出力です。この種の問題を解決する方法は、session_start() をプログラムの最初の行に移動することです。
2. エラーメッセージ
引用
コードは次のとおりです | コードをコピー |
警告: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) が失敗しました |
分析と解決策
このエラー ステートメントは通常、php.ini の session.save_path 項目が正しく設定されていないために発生します。解決策は、session.save_path と session.cookie_path の設定を
引用
コードは次のとおりです | コードをコピー |
session_save_path = c:temp |
次に、c: ディレクトリに一時ディレクトリを作成するだけです
3. エラーメッセージ
引用
コードは次のとおりです | コードをコピー |
警告: の初期化されていないセッションを破棄しようとしています |
分析と解決策
この種のプロンプトは通常、session_destroy() 関数を直接呼び出すことによって発生します。多くの友人は、session_destroy() 関数が独立して実行できると考えていますが、そうではありません。解決策は、session_destroy() 関数を呼び出す前に session_start() を使用してセッション関数を有効にすることです。
4. 質問: 現在のセッションの ID 値を取得するにはどうすればよいですか?
最も簡単な方法は次のとおりです:
エコー SID;
分かるでしょう。
5. 質問: ヘッダー関数を呼び出す前にプログラムに出力がありません。config.php ファイルに出力がありません。1 引き続き同じエラーが報告されます。ヘッダーの前に session_start() を使用したためですか?
答え: おそらく、php プログラムを注意深くチェックしたのでしょうが、確かに header() を参照する前に出力がなく、インクルード ファイルにも出力がありません。しかし、この PHP コードの ? >end ステートメントの後にカーソル キーを使用してチェックを移動しますか?その後、? > の後に空白行またはいくつかのスペースがあることがわかります。これらの空白行またはスペースを削除すると、問題は解決します。
注: この問題は PHP4.1.2 以降のバージョンで発生するため、テストされていません。
6. 質問: セッションを使用してメイン ページにログインした後、セッションを使用して他のページへのログインを制限するにはどうすればよいですか?
答え: 最も簡単な方法は
コードは次のとおりです | コードをコピー |
セッション開始();
if(!session_registered('login') ││ $login != true) { エコー「ログインしていません」 ; 出る } session_start(); if(!session_registered('login') ││ $login != true) { echo "ログインしていません"; 終了します; } |
7. 質問: session_register() を使用してセッション変数を登録していますが、javas スクリプトのヘッダーまたはリダイレクト文を使用すると、次のページでセッションによって登録された変数値にアクセスできません。どうやって解決すればいいでしょうか?
問題のプログラム スニペット:
コードをコピー | |
コードをコピー
セッション開始(); エコー $ok ? > session_start(); | |
?>
|
コードをコピー
header("場所: next.php" ."?" .SID); header("場所: next.php" ."?" . SID); |
コードは次のとおりです | コードをコピー |
session_register('データ');
$data=配列(1,2,3,4);
session_register('データ');
|
9. 質問: $HTTP_GET_VARS['**'] のようなメソッドを使用してセッション値にアクセスできますか?
回答: はい、次のグローバル配列を使用してセッションにアクセスし、Web ページのセキュリティを強化できます
$HTTP_SESSION_VARS
$_セッション
ルーティン:
コードをコピー | |
コードは次のとおりです
コードをコピー
http://www.bkjia.com/PHPjc/632221.html | www.bkjia.com