記事で詳しく紹介します
PHPのセッション関数については、特にいくつかのエラーといくつかのエラーのない結果があり、適切な答えを見つけることができませんでした。後者は、多くの初心者にとって常に困難でした。ベテランでも時々混乱する人もいる。この記事では、みんなの参考のためにこれらの問題を簡単にまとめます。
1.
エラー メッセージ
警告: セッション Cookie を送信できません - ヘッダーはすでに送信されています
警告: セッション キャッシュ リミッターを送信できません - ヘッダーはすでに送信されています
分析と解決策
この種の問題の原因は、プログラムで PHP を使用していることです。 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: emp に設定します
session.cookie_path = c: emp
その後、c: ディレクトリに一時ディレクトリを作成します。これで完了です
警告: しようとしています
分析と解決策
で初期化されていないセッションを破棄する このようなプロンプトは通常、session_destroy() 関数を直接調整することによって発生します。多くの友人は、session_destroy() 関数が独立して実行できると考えていますが、そうではありません。解決策は、session_destroy() 関数を呼び出す前に、PHP session_start() を使用してセッション関数を有効にすることです。
4. 質問: 現在のセッションの ID 値を取得するにはどうすればよいですか?
SID をエコーする
すぐにわかります。
5. 質問: ヘッダー関数を呼び出す前にプログラムに出力がありません。config.php ファイルが含まれているにもかかわらず、セッションで質問 1 のような結果が報告されるのはなぜですか。同じエラーです。ヘッダーの前に PHP session_start() を使用したためですか?
答え: おそらく、php プログラムを注意深くチェックしましたが、header() を参照する前にエラーはなく、出力もありません。インクルードファイルに!しかし、カーソルキーを使用して、PHP コードの end ステートメントの後にチェックを移動しますか?>?すると、?> の後に空白行またはいくつかのスペースがあることがわかります。これらの空白行またはスペースを削除すると、問題は解決します。
注: この問題は PHP4.1.2 以降のバージョンで発生しますが、テストされていません。
6. 質問: セッションを使用してメイン ページにログインした後、セッションを使用して他のページへのログインを制限するにはどうすればよいですか? 。 。
回答: 最も簡単な方法は<ol class="dp-xml"> <li class="alt"><span><span>session_start(); </span></span></li> <li><span>if(!session_registered<br>('login') <br>││ $login != true) { </span></li> <li class="alt"><span>echo "你没有登陆"; </span></li> <li><span>exit; </span></li> <li class="alt"><span>} </span></li> </ol>
<ol class="dp-xml"> <li class="alt"><span><span>session_start(); </span></span></li> <li> <span>$</span><span class="attribute">ok</span><span> = 'love you'; </span> </li> <li class="alt"><span>session_register('ok'); </span></li> <li><span>header("location : next.php"); </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li> <li><span>next.php </span></li> <li class="alt"><span>session_start(); </span></li> <li><span>echo $ok; </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li> </ol>
解決策:
header関数やwindow.locationなどの関数を使用すると、前のページに登録したセッション変数が簡単に失われます。 この問題については、まだ原因がわかりません。詳細な答え。しかし、解決策はあります。以下に示すように、
header("Location: next.php" ."?" . SID);
次のページにジャンプする場合、セッションの現在の ID がパラメータとして使用され、次のページに渡されます。
8. セッションで配列を渡す方法
<ol class="dp-xml"> <li class="alt"><span><span>session_register<br>('data'); </span></span></li> <li> <span>$</span><span class="attribute">data</span><span>=</span><span class="attribute-value">array</span><span>(1,2,3,4); </span> </li> </ol>
その方法は、最初に登録してから値を割り当てることです
9. 質問 9: $HTTP_GET_VARS['**&apos] のようなメソッドを使用してセッション値にアクセスできますか? ;]?
回答: はい、次のグローバル配列を使用してセッションにアクセスし、Web ページのセキュリティを強化できます
$HTTP_SESSION_VARS$_SESSION
ルーチン:
<ol class="dp-xml"> <li class="alt"><span><span>session_start(); </span></span></li> <li> <span>$</span><span class="attribute">username</span><span> = 'stangly.<br>wrong'; </span> </li> <li class="alt"><span>session_register('<br>username'); </span></li> <li><span>echo $HTTP_SESSION_VARS<br>['username']; </span></li> <li class="alt"><span>echo ' </span></li> <li><span>'; </span></li> <li class="alt"><span>echo $_SESSION<br>['username']; </span></li> <li> <span class="tag">?></span><span> </span> </li> </ol>
質問 10: session_unregister() と session_destroy() の違いは何ですか?
session_unregister() 関数の主な機能は、現在のセッションの登録を解除することです (php.net からの翻訳)
ルーチン:
<ol class="dp-xml"> <li class="alt"><span><span>if(isset($_COOKIE[session_name()])) { </span></span></li> <li><span>session_start(); </span></li> <li class="alt"><span>session_destroy(); </span></li> <li><span>unset($_COOKIE[session_name()]); </span></li> <li class="alt"><span>} </span></li> </ol>
上記は、一部の初心者がよく遭遇する PHP session_start() の問題です。詳細が不明瞭で間違いがあるかもしれませんが、専門家からのアドバイスや批判をお願いします。
http://www.bkjia.com/PHPjc/446083.html
。