php セッションが機能しない場合の解決策: まず、php 構成ファイルを開き、次にセッション関連の構成項目を見つけ、次に新しいセッション ファイルを作成して権限を設定し、最後にファイルを再アップロードします。
推奨: 「PHP ビデオ チュートリアル 」
PHP プロジェクトでのセッション エラーを解決する方法
今日、仕事が終わってシャトルバスに乗りました。駅に着こうとしたところ、前の会社のリーダーからQQメッセージが届きました。これは火事の鎮火を意味します。バスを降りた後、 , 戻ってきて、コンピューターで詳しく尋ねました。リーダーの説明は次のとおりです。
このアドレス、テスト用紙をアップロードしてタスクを公開した後、セッションがいつ消えたのかを教えてください。解答用紙の設定
このプロジェクトの背景は当初すべて私が担当し、一人で開発したため、問題はすぐに発見されました。プロセスは: ユーザーが js コンポーネントを介してテスト用紙をアップロードします。テスト用紙をアップロードする方法では、セッションを使用して、アップロードされたばかりのテスト用紙の詳細情報 (名前、サフィックス、ファイルに保存されている ID など) を保存します。アップロードが成功したら、ページ上の学校、学年、難易度などのその他のオプションをクリックし、最後に送信をクリックします。送信の処理方法では、最初に、アップロードしたばかりのセッション値が存在します。存在しない場合は、テスト用紙のホームページにジャンプします。このメソッドで $_SESSION を出力しましたが、値がありませんでした。これは奇妙でした。以前は正常に動作していました。そこで、いつから始まったのか聞いてみると、午後の仕事を終えようとしたときに先生から電話があり、テスト用紙のアップロードと解答用紙の設定が失敗し、ジャンプが続いているとのことでした。そこで、サーバー環境が変更されたかどうかを再度尋ねましたが、リーダーは「変更していません」と答えました。
問題があるので解決しましょう。この時期にたまたま「PHP Core Technology and Best Practices」という本を読んでいたのですが、セッションとCookieについて詳しく解説されており、両者についての理解も深まりました。そこで、まずphpの設定ファイルを開いてセッション関連の設定項目を探したところ、session.save_pathが/data2/sessionになっていたのですが、以前は/data1/sessionに設定されていた記憶があるのですが、どう変わったのでしょうか?そこで終了してパスを確認しました。最初はディレクトリの権限が不十分だと思いましたが、後でそのようなディレクトリがまったくないことがわかりました。各セッションがページにまたがらないのも不思議ではありません。そこで、新しいファイルを作成し、権限を設定し、再度アップロードすると、すべてが正常に戻りました。
これを書いているので、セッション関連の技術的な点についても話したいと思います。セッションはサーバー側に保存され、デフォルトではファイルに保存されます (session.save_handler = files)。では、セッションはどのように生成されるのでしょうか?セッションは session_start() 関数を通じて生成されます。この関数が実行されると、セッションが保存されているディレクトリにファイルとそれに対応する一意のセッション ID が生成されます。セッション ファイルのデータは、セッション ID を通じて取得できます。 。 session_start() が実行されるたびに新しいセッション ファイルが生成されるため、以前に生成されたセッション ファイルを使用するにはどうすればよいでしょうか? session_id($session_id) だけを使用すると、セッション ファイルは新たに生成されませんが、それに対応するセッション ID は生成されます。セッションファイルが読み取られます。デフォルトでは、セッション ID はクライアント (ブラウザ) の Cookie を使用してセッション ID を保存します (Chrome ブラウザで F12 を押し、Resources-Cookie をクリックするとわかります)。 $_COOKIE['PHPSESSID'] を使用して取得できます。その PHPSESSID はセッション ID のデフォルト名です。php.ini の session.name で設定できます。セッション ID の名前を取得するには、スクリプト内で session_name() を使用します。ブラウザがサーバーと通信するたびに、ブラウザはセッション ID をサーバーに渡し、サーバーは渡されたセッション ID に基づいて対応するセッション ファイルを見つけ、対応する情報を取得し、関連する操作を実行します。クライアント(ブラウザ)が Cookie を無効にすると、サーバーはセッション ID を受信できなくなるため、このときセッション ID を明示的に渡す必要があります。 2 つの方法: URL を通じてセッション ID を手動で渡すか、非表示のフォームを通じてセッション ID を渡します。上記の 2 つの方法では、サーバーの PHP 環境の session.use_trans_sid 値が 1 である必要があります。
これほどくどい話をした後、最終的に出たのは「話は安い、コードを見せて」というライナスの言葉でした。
<?php session_start(); $_SESSION['arr'] = array('name' => 'molaifeng', 'hobby' => 'php'); ?> <a href="testSession.php?<?php echo session_name(); ?>=<?php echo session_id()?>">testSession</a>
<?php session_start($_REQUEST[session_name()]); print_r($_SESSION);
コードは理解できると思いますので、説明は省略します。
最後に、要約すると、クロスページ セッションの失敗は通常、上記の点が原因で発生します。 1. session.save_path が正しくない (権限が不十分であるか、ディレクトリが存在しないなど) 2. サーバー PHP 構成の session.use_trans_sid 値が 0 である; 3. クライアントで Cookie が無効になっている。しかし、最初の状況の頻度はかなり高いはずだと思います。
【2018-05-21更新】
金曜日の夜にオンラインにアクセスすると、別の罠に遭遇しました。このフレームワークは CI を使用し、セッションは MySQL テーブルに書き込みます。最初は、上記の症状と全く同じだったので、sessionディレクトリをリセットし、該当する読み書き権限を与えましたが、何も起こりませんでした。その後、そのテーブルがメモリテーブルであることが分かり、メモリテーブルの最大値を超えていると思い、テーブルをクリアしましたが、問題は解決しませんでした。最後に、2 つのバージョンの違いを比較した結果、セッションを保存するときに 2 つの新しいフィールドが追加されたことがわかりました。そのため、消去法を使用し、最初に両方に注釈を付け、次にそれらを 1 つずつ開き、最終的に問題を特定しました。新しく追加された値は、型テーブルのすべての値を保存するために使用されることがわかりました。最初にテストしたときは、数個の値しかありませんでした。その後、オンラインになると、100 個以上の値が保存されました。同時に、フィールドのサイズは 3000 しかありませんでした。バーストしていたに違いありません。そこで、まずフィールドのサイズを大きくしてオンラインで検証できるようにし、次にテーブル内のすべての値が書き込まれないように関連するロジックを変更しました。
以上がPHPセッションが機能しない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
