• ベストアンサー

PHPファイルの拡張子について

超初心者な質問でごめんなさい。 ただいまカウンタをHPに設置しようとして苦戦しています。PHPはCGIと違ってhtmlに埋め込めると知りPHPカウンタをとりつけようとするのですがどうもうまくいきません。 ローカルサーバの環境もアパッチ等を教本どおりにを導入してPHPも無事動きます。 PHPをHTMLに埋め込む場合は埋め込みたい位置に 埋め込めばよいとHP等にも説明がありますが、いざHTMLに埋め込むと形がくずれたりHTML表示部分の文字が消えたりしてしまいます。これは何がいけないのでしょうか? それと埋め込む場合、拡張子はPHPにしなければいけないのでしょうか?そうするとサーバにあっぷする場合、index.phpというファイル形式になるのでしょうか? よろしくお願いします。 OS:winXP Apatch 1.8.28 php4

質問者が選んだベストアンサー

  • ベストアンサー
  • jxt
  • ベストアンサー率48% (42/86)
回答No.1

>いざHTMLに埋め込むと形がくずれたりHTML表 >示部分の文字が消えたりしてしまいます。これは何が >いけないのでしょうか? 書き方が間違っているのでしょうね。どのように埋め込んで いますか? >それと埋め込む場合、拡張子はPHPにしなければい >けないのでしょうか?そうするとサーバにあっぷする >場合、index.phpというファイル形式になるのでしょうか? ほとんどの場合そうです。apacheが拡張子に「php」を見つけたら phpのスクリプトエンジンがphpの解析を行うという順番 になるので、拡張子がたとえばhtmlの場合、phpとしての 動作は行われません。 ただし、apacheの設定で拡張子「html」もphpとして評価する という設定を行えば拡張子がhtmlでもソースのphpコード が実行されるようになります。

tibox00
質問者

補足

ご回答ありがとうございます。 >書き方が間違っているのでしょうね。どのように埋め >込んでいますか? 以下ソースです。 <HTML> <HEAD> <TITLE>ハローPHP</TITLE> </HEAD> <BODY> <DIV ALIGN=CENTER><BR> <FONT COLOR="#008040">ハローPHP</FONT><BR> <?php $fp = fopen("counter.dat", "r+"); $count = fgets($fp, 6); $count++; fseek($fp, 0); fputs($fp, $count); fclose($fp); ?> <center> 訪問者数<br> <?php echo $count; ?> <HR><BR> ホームページの内容<BR> </DIV></BODY> これだとカウンタは動くのですが、文字表示の部分が文字化けしてしかも「K」という謎の文字がカウンタの真上に浮かびます。なぜでしょう??あと水平線だけは一本正常に表示されます。 どうぞご教授よろしくお願い致します!

その他の回答 (5)

  • jxt
  • ベストアンサー率48% (42/86)
回答No.6

<?php echo $count; ?> ここを <?php echo sprintf('%04d',$count); ?> こうします。

tibox00
質問者

お礼

ありがとうございました!!

  • jxt
  • ベストアンサー率48% (42/86)
回答No.5

自分だったらカウンターのファイルはいじらずに、 表示側だけいじります。 表示部分を sprintf('%04d',$count); とするといいのではないかと。

tibox00
質問者

補足

ご回答ありがとうございます。 すいません~。 下のソースで言えば具体的に どの位置になるのでしょうか? <HTML> <HEAD> <TITLE>ハローPHP</TITLE> </HEAD> <BODY> <DIV ALIGN=CENTER><BR> <FONT COLOR="#008040">ハローPHP</FONT><BR> <?php $fp = fopen("counter.dat", "r+"); $count = fgets($fp, 6); $count++; fseek($fp, 0); fputs($fp, $count); fclose($fp); ?> <center> 訪問者数<br> <?php echo $count; ?> <HR><BR> ホームページの内容<BR> </DIV></BODY> たびたびお手数かけますが、 よろしくお願いします。

  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.4

自動選択ではなく、文字コードEUC-JP、改行コードが LFにしてみてはどうでしょう。 あと一応 <HEAD>の下に <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> も入れておきましょう。

  • jxt
  • ベストアンサー率48% (42/86)
回答No.3

>秀丸を使用してますが、名前をつけて保存するときに >文字コードは自動選択で、改行も自動になります。 ってことはSJISですよね。ブラウザで見るときも SJISで見てますか? というか問題は文字化けなのか、それ以外の部分に あるのか見当も付かないですか?

tibox00
質問者

補足

ヘッドに追加して文字コードをEUCにしたら正常に表示されるようになりました、どうもありがとうございます。 あともうひとつだけお教えください! 最初から千の位も表示させるように、counter.datファイルに0000の数字を格納してブラウザで表示させると0001ではなく千の位に1がカウントされていきなり1000~1002と始まってしまいます。0001~0002と普通に表示させるにはどうすればよいでしょうか? 格納だけでは無理ですか?ソースの手直しが必要でしょうか?

  • jxt
  • ベストアンサー率48% (42/86)
回答No.2

こちらの環境では問題ないんですけど、 文字コードはどうなってます?

tibox00
質問者

補足

早速のアンサーありがとうございます。 秀丸を使用してますが、名前をつけて保存するときに 文字コードは自動選択で、改行も自動になります。 perlでCGIソースの時はこれでOKだったと思ったのですが・・

関連するQ&A

専門家に質問してみよう