fputsで書き込みを行う際に、includeを使用したいです。
phpの初心者です。
どうぞよろしくお願いします。
ユーザーがクリックしただけでページが生成されていくといったような
サイトを現在作成しています。
以下、構造です。
index.php
regist.php
footer.inc
page(dir)---a(dir)-------index.php
└b(dir)-------index.php
└c(dir)-------index.php
動作としては、index.php(TOP階層)でリンクをクリックするとregist.phpにジャンプし、
regist.phpのプログラムの中で、page(dir)の中にa,b,c,d,e…とディレクトリが
自動生成されて、中にindex.phpファイルを生成します。
regist.phpの最後でheader("Location:")を使用し、生成されたページに自動的にジャンプします。
生成されたページのフッターに今までクリックされたリンクという紹介のようなものがあります。
そこの記述が
regist.php内の記述///////////////////
ob_start();
include("footer.inc");
$footer = ob_get_contents();
ob_end_clean();
fputs($fp, "$footer");
footer.inc内の記述///////////////////
<?php
$arr = scandir('./page/', 1);
foreach($arr as $key => $dir){
//リンク名を日本語に変換
$dir = str_replace("http://".$domein."/page", "http://".$domein."/page/", "$dir");
print "<a href=\"http://".$domein."/page/".$dir."/\">$dir_url</a> \n";
}
?>
上記のようなプログラムですと、a,b,c,d…x,y,zと順番にディレクトリとページが生成されていった場合に
aの中のindex.phpではリンクなし。
bの中のindex.phpではaへのリンク。
cの中のindex.phpではaとbへのリンク。
dの中のindex.phpではaとbとcへのリンク。
eの中のindex.phpではaとbとcとdへのリンク。
一つずつリンクが増えていくようになってしまってます。
これを、自動生成されたページでは、常にクリックされたすべてのリンクが出るようなものにしたいというのが希望です。
aの中のindex.phpではaとbとcとdへのリンク。
bの中のindex.phpではaとbとcとdへのリンク。
cの中のindex.phpではaとbとcとdへのリンク。
dの中のindex.phpではaとbとcとdへのリンク。
eの中のindex.phpではaとbとcとdへのリンク。
なのでregist.phpの記述を…
修正後:regist.php内の記述///////////////////
fputs($fp, "<?php include(\"../../footer.inc\"); ?>");
こちらですと、読み込み形式になり常に新しい情報が入るかな?と思い試したのですが思うように動きません。
修正前:regist.php内の記述///////////////////
ob_start();
include("footer.inc");
$footer = ob_get_contents();
ob_end_clean();
fputs($fp, "$footer");
上記ですと、テキストを書き込む形になりますので、常に新しい情報ではありません…。
分かる方、ご回答頂けますと幸いです。
よろしくお願いします。
お礼
私にとっては貴重な動作報告、ありがたく思います。 httpd.confの、文字コードに関連するようなところをいじっていたら、解決しました。 他人の動作確認は心の支えになりますm(_ _)m ありがとうございました! <参考> <IfModule mod_encoding.c> EncodingEngine On SetServerEncoding shift_jis # SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS </IfModule> ※一行コメントアウトし、その直前の文を追加、で解決しましたm(_ _)m