ホームページ  >  記事  >  バックエンド開発  >  PHP セッションが失敗して配信されない場合の解決策

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

卡哇伊
卡哇伊オリジナル
2020-07-06 13:43:023278ブラウズ

PHP セッションが失敗して渡されない問題の解決策: まず、「a3358401e79a3858445207450bf7e497」という内容の php ファイルを作成し、それをサーバーに渡して、サーバーのパラメータ設定で、ユーザー ID が識別されたセッションであることを示し、最後にセッションの名前を Havi に割り当て、セッションを出力します。

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

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

##まず php ファイル

a3358401e79a3858445207450bf7e497 を作成し、それをサーバーに渡して、サーバーのパラメーター構成を確認します。 。

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

このパラメータは、透過的な SID サポートを有効にするかどうか、つまり

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

したがって、1 つの方法は、構成ファイル

php.inisession.use_trans_sid の値を 1 に変更することです。

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

2 つの例を使って説明しましょう:

ファイル 1 test1.php

<?php
//表明是使用用户ID为标识的session
session_id(SID);
//启动session
session_start();
//将session的name赋值为Havi
$_SESSION[&#39;name&#39;]=”Havi”;
//输出session,并设置超链接到第二页test2.php
echo “<a href=\”test2.php\”>”.$_SESSION[&#39;name&#39;].”</a>”;
?>

ファイル 2: test2.php

<?php
表明是使用用户ID为标识的session
session_id(SID);
//启动session
session_start();
//输出test1.php中传递的session。
echo “This is “.$_SESSION[&#39;name&#39;];
?>

セッションを開くにはすべてのページを記述する必要があります。そうしないと、依然として正しく動作しません。

##つまり、キーポイント session_start(); の前に session_id(SID); を追加して、ページの変換時にサーバーがserversessionフォルダーに保存されているユーザーを使用するようにします。 セッションは配信の問題を解決します。

ただし、一部の同僚は、複数のユーザーの

session が 1 つの SID に書き込まれている場合、セッションの値は Can' になると報告しています。もう演奏しないでください。したがって、この問題を解決する別の方法があります。session_id(SID);を追加する必要はありません。サーバーの php.ini:# に対する構成権限があることが前提です。

##output_buffering

<span style='font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;'></span><span style='font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;'># を ON にすると真相は不明です。 </span>

2 番目に考えられる理由は、サーバーが

session を保存するフォルダーへの読み取り権限がないため、phpinfo に戻ってください。 php, セッションの保存されたアドレスを表示します: <p style="color: #362e2b; widows: 1; word-wrap: break-word; margin-top: 0.6em; margin-bottom: 0.3em; padding-top: 0px; padding-bottom: 0px; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Calibri, Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati; font-size: 13px; line-height: 16px; background-color: #ffffff;"><code><span style='font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;'>session.save_path: var/tmp</span>

所以就是检查下var/tmp文件夹是否可写。

写一个文件:test3.php来测试一下:

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

如果返回bool(false),证明文件夹写权限被限制了,那就换个文件夹咯,在你编写的网页里加入:

//设置当前目录下session子文件夹为session保存路径。$sessSavePath = dirname(__FILE__).’/session/’;
//如果新路径可读可写(可通过FTP上变更文件夹属性为777实现),则让该路径生效。if(is_writeable($sessSavePath) && is_readable($sessSavePath)){session_save_path($sessSavePath);}

以上がPHP セッションが失敗して配信されない場合の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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