ホームページ >バックエンド開発 >PHPの問題 >PHPセッションが値を渡​​せない場合の対処方法

PHPセッションが値を渡​​せない場合の対処方法

藏色散人
藏色散人オリジナル
2021-09-19 10:36:232807ブラウズ

php セッションが値を渡​​せない問題の解決策: 1. サーバーのパラメーター設定を確認します; 2. 設定ファイル php.ini の「session.use_trans_sid」の値を 1 に変更します; 3. 「var /tmp」フォルダーが書き込みおよび変更できることを確認します。

PHPセッションが値を渡​​せない場合の対処方法

#この記事の動作環境: Windows7 システム、PHP7.1、Dell G3 コンピューター。

PHP セッションが値を渡​​せない場合はどうすればよいですか?

PHP セッションが失敗し、セッションが渡されない場合の解決策

PHP では、セッションを次のページに渡すことができません。通常、次の 2 つの状況が考えられます:

まず、php ファイル を作成し、それをサーバーに渡して、サーバーのパラメーター構成を確認しましょう。

セッション セクションに移動し、session.use_trans_sid パラメーターが 0 に設定されていることを確認します。

このパラメータは、透過的な SID サポートを有効にするかどうか、つまりセッションが URL とともに渡されるかどうかを指定します。私の個人的な理解では、このパラメータを 0 に設定すると、URL ごとにセッションが開始されると考えています。このように、後続のページは前のページのセッションを追跡できなくなり、これを配信不能と呼びます。 2 つのページはサーバー側で 2 つのセッション ファイルを生成しますが、関連性はありません。 (これが正しいかどうかわかりません。アドバイスをお願いします。)

したがって、1 つの方法は、設定ファイル php.ini の session.use_trans_sid の値を 1 に変更することです。

もちろん、誰もが PHP の構成を変更する権限を持っているわけではないことはわかっています。では、間接的な解決策は何でしょうか?

2 つの例を使用して説明します。

ファイル 1 test1.php

//セッションがユーザー ID によって識別されることを示します
session_id(SID);
//セッションを開始します
session_start();

//セッションの名前を Havi に割り当てます
$_SESSION['name']="Havi";
//セッションを出力し、2 ページ目へのハイパーリンクを設定しますtest2.php
echo " ”.$_SESSION['name'].””;
?>

ファイル 2: test2.php

セッションがユーザー ID で識別されることを示します
session_id(SID);
//セッションの開始
session_start( );

//test1.phpで渡されたセッションを出力します。
echo "これは ".$_SESSION['name'];
?>

セッションを開くには、すべてのページに書き込む必要があります。 。そうしないと、依然として適切に動作しません。

したがって、重要な点は、session_start(); の前に session_id(SID); を追加して、ページが変換されるときにサーバーがユーザーがサーバー上に保存したセッション ファイル フォルダー内のセッションにより、送信の問題が解決されます。

ただし、複数のユーザーのセッションが 1 つの SID に書き込まれている場合、セッションの価値が発揮されないと報告する同僚もいます。したがって、この問題を解決する別の方法があります。session_id (SID) を追加する必要はありません。サーバーの php.ini に対する構成権限があることが前提です。

出力バッファリングを ON に変更します。実際は、明確ではない。

考えられる 2 番目の理由は、サーバーがセッション または go を保存する フォルダーに対する読み取り権限がないことです。戻る phpinfo.php で、セッションが保存されているアドレスを確認します:

session.save_path: var/tmp

したがって、var/tmp フォルダーが書き込み可能かどうかを確認してください。

ファイル test3.php を作成してテストします:

echo var_dump(is_writeable(ini_get(“session.save_path”)));
?> ;

bool(false) が返された場合は、フォルダーの書き込み権限が制限されていることがわかります。フォルダーを変更して次の内容を追加します。

//現在のディレクトリを作成した Web ページに設定しますセッション サブフォルダーはセッション保存パスです。

$sessSavePath = dirname(__FILE__).'/session/';

//新しいパスが読み取り可能および書き込み可能である場合 (FTP でフォルダー属性を 777 に変更することで実現できます)、パスが有効になります。

if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{session_save_path($sessSavePath);}

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPセッションが値を渡​​せない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。