前提・実現したいこと
現在PHPでログイン機能を持つ掲示板を作成しているのですが、Cache_Liteというライブラリを用いてキャッシュによる表示を実現したいです。
具体的には、キャッシュが存在しなければfile_get_contents()でURLを読み込み表示し、キャッシュが存在すればキャッシュを用いて表示するという仕組みにしていますが、ログイン時にログインしたユーザーの名前をセッションで保持し、掲示板ページで表示するようにしていたのですが、file_get_contents()でページを読みこんだ際にセッションが引き継がれなくて困っています。
ページ構成はa.php(ログインページ)、b.php(掲示板ページ)、c.php(キャッシュによるページ表示)となっています。ログイン後にb.phpに直接飛ぶのではなくc.phpに飛び、b.phpを呼び出すという形を検討していますがその他の方法がありましたらご提示いただけると幸いです。
該当のソースコード
a.php
PHP
1ここでセッション変数$_SESSION[NAME]に値を代入 2ログイン後c.phpへheader()で飛ぶ
b.php
PHP
1掲示板処理
c.php
PHP
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <title>c.php</title> 6</head> 7<body> 8<?php 9 10session_start(); 11if(!$_SESSION[NAME]){ 12 header("location:a.php"); 13} 14 15require_once('Cache/Lite.php'); 16 17$id = '123'; 18 19$options = array( 20 'cacheDir' => 'Cache/tmp/', 21 'caching' => 'true', 22 'lifeTime' => 600, 23 'automaticSerialization' => 'true' 24); 25 26 27$Cache_Lite = new Cache_Lite($options); 28 29$cache_data = $Cache_Lite->get($id); 30$type = gettype($cache_data); 31if ($type === string){ 32 $content = $cache_data; 33 echo 'キャッシュがありました!'.'<br>'; 34 35}else{ 36 $get_data = file_get_contents("b.php"); 37 $content = $get_data; 38 $Cache_Lite->save($content); 39 echo 'キャッシュが無かったのでキャッシュを保存しました!'.'<br>'; 40} 41echo($content); 42 43?> 44</body> 45</html>
試したこと
この問題について検索しましたが、解決策はみつかりませんでした
補足情報(FW/ツールのバージョンなど)
PHP Version 5.2.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/15 12:31
2019/06/15 13:39 編集
2019/06/15 13:55
2019/06/15 14:07
2019/06/15 16:46