$_SESSION を使用すると php でエラーが発生するのはなぜですか?
//session1.php:
//session1.php
session_start();
echo "ようこそ: 最初のページ
";
$_SESSION [ 'myword']="私は張三です";
$_SESSION["myage"]="18";
$_SESSION["mysex"]="男性";
echo "クッキーmyword の値は: ".$_SESSION['myword']."
";
echo "次のページ";
?>
//session2 .php
//session2.php
session_start();
echo "ようこそ: ページ 2
";
echo "名前:".$_SESSION[ ' myword']."
";
echo "年齢:".$_SESSION["myage"]."
";
echo "性別:".$_SESSION["mysex"] 。 "
";
echo "次のページ";
?>
session1.php を開いて
を出力します---------- -- ------------------------
ようこそ: 最初のページ
クッキー内の myword の値は次のとおりです: 私は Zhang San です
次のページ
----------------------------------------
「次のページ」をクリックして session2.php の出力を開きます
--------------------------------- - -
ようこそ: 2 ページ目
注意: 未定義のインデックス: R の myword:Program FilesAppServwwwsessionsession2.php の 5 行目
名前:
注意: 未定義のインデックス: R の myage :Program FilesAppServwwwsessionsession2.php 6 行目
年齢:
通知: 未定義のインデックス: R の mysex:Program FilesAppServwwwsessionsession2.php 7 行目
性別:
次のページ
- - ----------------------------------
設定の問題でしょうか? 私のphp.iniのセッション構成は次のとおりです:
session.save_handler = files
session.save_path = "R:/Program Files/AppServ/php5/session_tmp"
; session.save_path = "N;MODE;/path"
session.save_path = "R:/Program Files/AppServ/php5/session_tmp"
(セッションは 3 つあります。 save_path)
session.cookie_domain = Cookies
(その他は一つ一つ記載していません)
------解決策------ ---------------
session.cookie_domain =
これをこれに変更するか、コメントアウトして、サーバーを再起動します
この状況は、Cookie PHPSESSID が読み取られていないことが原因であると思われます。print_r($_COOKIE) を使用して、存在するかどうかを確認できます。 PHPSESSIDです
------解決策---------
1 階を参照、セッションを台無しにしないでください.cookie_domain 設定、バインドされたドメイン名をローカルでテストして何を行うか。
------解決策------------------
セッションの問題の概要を送信します:
PHP のセッション関数については、適切な答えを見つけることができませんでした。特に、いくつかのエラーといくつかのエラーのない結果が最も恐ろしいのは後者であり、多くの初心者にとって常に当惑させられてきました。ベテランでも時々混乱する人もいます。この記事では、みんなの参考のためにこれらの問題を簡単にまとめます。
1.
エラー メッセージ
警告: セッション Cookie を送信できません - ヘッダーはすでに送信されました
警告: セッション キャッシュ リミッターを送信できません - ヘッダーはすでに送信されました
分析と解決策
この種の問題が発生する理由は、プログラム内で session_start() を使用するときに、実際の HTML コンテンツが以前に出力されていることです。おそらく、私はそれを持っていないので、メッセージをエコーするか印刷するだけだと言うかもしれません。申し訳ありませんが、echo または print ステートメントによって生成される出力は、実際の HTML コンテンツ出力です。この種の問題を解決する方法は、session_start() をプログラムの最初の行に移動することです。
2.
エラー メッセージ
警告: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) が失敗しました
分析と解決策
このようなエラー ステートメントは通常、php によって発生します。 ini の .save_path 項目が正しく設定されていません。解決するには、session.save_path と session.cookie_path を
session_save_path = c: emp
session.cookie_path = c: emp
に設定してから、一時ディレクトリを作成します。
3.
エラー プロンプト
警告:
分析と解決策で初期化されていないセッションを破棄しようとしています。
このようなプロンプトは、通常、ユーザーが直接引き起こしたものです。 session_destroy() 関数を呼び出します。多くの友人は、session_destroy() 関数が独立して実行できると考えていますが、そうではありません。解決策は、session_destroy() 関数を呼び出す前に session_start() を使用してセッション関数を有効にすることです。
4. 質問: 現在のセッションの ID 値を取得するにはどうすればよいですか?
最も簡単な方法は次のとおりです:
SID をエコーする
それがわかります。
5. 質問: ヘッダー関数を呼び出す前にプログラムに出力がありません。config.php ファイルに出力が存在しないのはなぜですか?質問 1 と同じエラーが報告されます。ヘッダー
の前に session_start() を使用したためでしょうか?回答: PHP プログラムを注意深くチェックしたのかもしれませんが、header() を参照する前に出力がなく、インクルード ファイルにも出力がありません。しかし、カーソルキーを使用して、 ?> PHP コードの end ステートメントの後にチェックを移動しますか? ?> の後に空白行またはいくつかのスペースがあることがわかります。これらの空白行またはスペースを削除すると、問題は解決します。