ホームページ  >  記事  >  バックエンド開発  >  セッションは転送できず、ファイルは保存できますが、mysql は転送できません。

セッションは転送できず、ファイルは保存できますが、mysql は転送できません。

WBOY
WBOYオリジナル
2016-06-23 13:49:22816ブラウズ

セッションに検証コードを保存します。ファイルを使用してセッションを保存すると、ユーザーが登録するときに検証コードをバックグラウンドで読み取ることができます。つまり、正常に渡すことができますが、mysql はセッションを保存する場合、セッションは通常どおり保存できます (データベース内のキャプチャのセッション値を確認できます)。また、検証コードが含まれるページで $_SESSION['captcha'] を使用して値を読み取ることもできます。が生成されますが、ユーザーは登録バックグラウンドの別のページでこの値を読み取ることができません (つまり、渡すことができません)。理由を考えますか?


ディスカッションに返信 (解決策)

セッションがデータベースに保存されている場合、セッションを使用する各ページは対応するコードを読み込む必要があります
完了しましたか?

セッションの問題の詳細な説明は、http://www.php Thinking.com/archives/318 で確認できます。

セッションがデータベースに保存されている場合、そのセッションを使用するすべてのページは次のようにする必要があります。対応するコードをロードします
できましたか?



さて、セッションを使用するたびに、SessionHandler.php ファイルで
if (!isset($_SESSION)){
require_once __DIR__ .
}
対応するコードがありますが、問題は他のページがセッション値を読み取れないことです~
予期せぬ事態を防ぐために

プログラムは無条件に SessionHandler.php をロードする必要があります
そしてインスタンス化されたオブジェクトと session_start() は SessionHandler.php にある必要があります
あなた名前空間も使用するため、新しい障害点のトラブルシューティングにさらに注意を払う必要があります

予期せぬ状況を防ぐために

プログラムは無条件に SessionHandler.php をロードする必要があります
そしてインスタンス化されたオブジェクトと session_start() は SessionHandler 内にある必要があります。 php
名前空間も使用するため、新しい障害点のトラブルシューティングにさらに注意を払う必要があります


条件付き参照と名前空間を削除してもまだ機能しません。
次のように、異なるページについては話さないでください。同じページであっても読み取ることができません。
error_log($_SESSION["captcha"]);
最初の文 error_log($) _SESSION["captcha"]); の $_SESSION["captcha"] は、データベースに保存されているキャプチャの値を読み込むためのものですが、この時点ではデータベースに値はありますが、読み出すことはできません。 「PHP Notice」が表示されます。「未定義のインデックス:キャプチャ」エラー。
SessionHandler クラスの session_read 関数は次のようになります。
function readSession($SID){
$query = "select value from sessioninfo where sid= :sid ";
$stmt = $this->dbLink->prepare($query);
$stmt->bindParam(':sid', $SID);
if($stmt->execute())
{
$value = $stmt->fetch(PDO::FETCH_ASSOC);
/*error_log('sid:'.$SID);*/
/*error_log('value:'.implode(',' , $value)); */
if(!empty($value))
{
return $value; }
}
}
上記のコメントアウトされたコードによって読み取られた $value は有効です。値を読み取りますが、メモリにデシリアライズされていませんか?


予期せぬ状況を防ぐため

プログラムは無条件に SessionHandler.php をロードする必要があります

そして、オブジェクトのインスタンス化と session_start() は SessionHandler.php で実行する必要があります
名前空間も使用するため、トラブルシューティングにさらに注意が必要です 新たな障害ポイント


条件付き参照と名前空間の削除はまだ機能しません。
次のように、異なるページについては話さないでください。同じページであっても読み取ることができません。
error_log($_SESSION["captcha"]);
最初の文 error_log($) _SESSION["captcha"]); の $_SESSION["captcha"] は、データベースに保存されているキャプチャの値を読み取ることを目的としていますが、この時点ではデータベースに値は存在しますが、読み出すことはできません。 「PHP Notice」が表示されます。「未定義のインデックス:キャプチャ」エラー。
SessionHandler クラスの session_read 関数は次のようになります。
function readSession($SID){
$query = "select value from sessioninfo where sid= :sid" ;
$stmt = $this->dbLink->prepare($query);
$stmt->bindParam(':sid', $SID);
if($stmt->execute()) {
$value = $stmt->fetch(PDO::FETCH_ASSOC);
/*error_log('sid:'.$SID);*/
/*error_log('value:'.implode(',', $value)); */
if(!empty($value))
{
return $value; }
}
}
上記のコメントアウトされたコードによって読み取られた $value は有効です。これは、php が読み取ったことを意味します。しかし、値はメモリにデシリアライズされませんか?


ここで問題が発生することがわかりました~

$value を返すのではなく、$value['value']; を返す必要があります
ついに解決しました~ ありがとうございます~


セッションの問題の詳細な説明は次のとおりですhttp://www.php Thinking.com/archives/318 をチェックしてください。

この記事は非常に詳細に説明しています〜素晴らしい記事です〜



セッションの問題について詳しく説明しています。 http://www.php Thinking.com/archives/318 で読むことができます

この記事は非常に詳しく説明しています〜素晴らしい記事です〜
私の個人的なブログを友達にしていただければ幸いです。 541578455

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