ホームページ >バックエンド開発 >PHPチュートリアル >セッションは転送できず、ファイルは保存できますが、mysql は転送できません。
セッションに検証コードを保存します。ファイルを使用してセッションを保存すると、ユーザーが登録するときに検証コードをバックグラウンドで読み取ることができます。つまり、正常に渡すことができますが、mysql はセッションを保存する場合、セッションは通常どおり保存できます (データベース内のキャプチャのセッション値を確認できます)。また、検証コードが含まれるページで $_SESSION['captcha'] を使用して値を読み取ることもできます。が生成されますが、ユーザーは登録バックグラウンドの別のページでこの値を読み取ることができません (つまり、渡すことができません)。理由を考えますか?
セッションがデータベースに保存されている場合、セッションを使用する各ページは対応するコードを読み込む必要があります
完了しましたか?
セッションの問題の詳細な説明は、http://www.php Thinking.com/archives/318 で確認できます。
セッションがデータベースに保存されている場合、そのセッションを使用するすべてのページは次のようにする必要があります。対応するコードをロードします
できましたか?
プログラムは無条件に SessionHandler.php をロードする必要があります
そしてインスタンス化されたオブジェクトと session_start() は SessionHandler.php にある必要があります
あなた名前空間も使用するため、新しい障害点のトラブルシューティングにさらに注意を払う必要があります
予期せぬ状況を防ぐために
プログラムは無条件に 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 は有効です。これは、php が読み取ったことを意味します。しかし、値はメモリにデシリアライズされませんか?
ここで問題が発生することがわかりました~
この記事は非常に詳細に説明しています〜素晴らしい記事です〜
この記事は非常に詳しく説明しています〜素晴らしい記事です〜
私の個人的なブログを友達にしていただければ幸いです。 541578455