モバイルサイトのxhtmlでPHPを動かす方法と注意点

このQ&Aのポイント
  • モバイルサイトでPHPを動かすためには、.htaccessファイルに適切な設定を追加する必要があります。
  • AddType application/x-httpd-php .htmlを.htaccessに追加し、PHPのコンテンツを記述します。
  • しかし、.htaccessではAddType application/x-httpd-php .htmlだけ記述し、HTTPヘッダでMIMEタイプを指定するためにPHPにて、header()関数で指定する必要があります。
回答を見る
  • ベストアンサー

モバイルサイトのxhtmlでPHPを動かすときの.htaccess

ご質問です。 モバイルサイトで、ドコモの対応のために「.htaccess」で「AddType application/xhtml+xml .htm .html」を設定していました。 問題なく稼動していましたが、アクセス解析のために「PHP」を動かせるようにする必要がでたため、xhtml内で「<?php print "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>"; ?>」を記述し、「.htaccess」に「AddType application/x-httpd-php .html」を追加しました。 「.htaccess」には下記のように記述されています。 AddType application/x-httpd-php .html AddType application/xhtml+xml .htm .html しかしこれでは、「PHP」がうまく動かず、 AddType application/xhtml+xml .htm .html AddType application/x-httpd-php .html の順で記述すると「xhtml」がおかしくなります。 調べていると「.htaccessではAddType application/x-httpd-php .htmlだけ記述し、HTTPヘッダでMIMEタイプを指定するためにPHPにて、header()関数で指定する」とありました。↓ header("Content-type: application/xhtml+xml" ); しかし、どこにどう記述してよいのかわからないでいます。 動かしたい「PHP」の内容は以下の通りです。 <?php function rt_tag($aqid){ $ref = getenv('HTTP_REFERER'); $ref = urlencode($ref); $my_url = urlencode("//".getenv('SERVER_NAME').getenv('SCRIPT_NAME')); if (!empty($my_url)) $rt_param[] = "/2=$my_url"; if (!empty($ref)) $rt_param[] = "/4=$ref"; $tag = "<img src=\"http://t7.aqtracker.com/cgi-bin/asp/tagx/h/$aqid"; foreach ($rt_param as $val) $tag .= $val; $tag .= "/blank.gif?guid=on\">"; echo $tag; } $_aqid = "5T555ELHERSGN664E86A"; rt_tag($_aqid); ?> どう記述を追加すればよいのか教えてくださいますか? またこれでやりたいことはできるのでしょうか? よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

header関数は、原則的にあらゆる出力より前にコールされる必要があります。 参考: http://www.php.net/manual/ja/function.header.php 逆にいえば、出力が開始される前ならどこに記述しても大丈夫です。 どのように記述するかですが、これは質問内容にある内容のままプログラムに挿入すればよいです。

smarudesu
質問者

補足

ありがとうございました。 その後数日の間、検証してみましたが問題なく稼動しているようです。 ちなみに「body」タグのすぐ下に <?php header("Content-type: application/xhtml+xml" ); ?> としておいて、そこからXHTMLでコンテンツを組み「/body」の直前の「div」 タグの中に <?php function rt_tag($aqid){ $ref = getenv('HTTP_REFERER'); $ref = urlencode($ref); $my_url = urlencode("//".getenv('SERVER_NAME').getenv('SCRIPT_NAME')); if (!empty($my_url)) $rt_param[] = "/2=$my_url"; if (!empty($ref)) $rt_param[] = "/4=$ref"; $tag = "<img src=\"​http://t7.aqtracker.com/cgi-bin/asp/tagx/h/$aqid";​ foreach ($rt_param as $val) $tag .= $val; $tag .= "/blank.gif?guid=on\">"; echo $tag; } $_aqid = "5T555ELHERSGN664E86A"; rt_tag($_aqid); ?> <?php $UH2url = '​http://b01.ugo2.jp/?u=5015024&h=6b8f46&ut=2&...​ $UH2url .= urlencode(isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'').'|Az|'.(int)($_SERVER['SERVER_PORT']); $UH2url .= '|'.urlencode($_SERVER['HTTP_HOST']).'|'.urlencode($_SERVER['REQUEST_URI']); $UH2url .= '|H|&amp;ch=SJIS&amp;sb='.urlencode('[ドイツ式フットケアサロンのボディキューブ]'); print '<img src="'.$UH2url.'" alt="携帯アクセス解析" width="1" height="1" border="0" />'; ?> とふたつ「PHP」のプログラムを入れましたがアクセス解析は問題なく動いています。 こういったやり方は問題ないのでしょうか? 稼動しているとはいえちょっと心配です。 他にいい方法があれば教えていただけますでしょうか? よろしくお願い致します。

関連するQ&A

  • 携帯サイト作成する場合の.htaccess処理で困っています。

    携帯サイト(XHTML+CSS)の作成方法を勉強している最中で.htaccessファイルを作成していたのですがうまく動かない部分がありますのでお手数ですが対応方法をお教え頂けますでしょうか。 .htaccessでapplication/xhtml+xmlの情報を送り、さらにPHPファイルをhtmlの拡張子で動作できればと思い、いろいろなサイトの情報を集めて下記内容を作成しアップロードしたところ、Content-Typeがapplication/xhtml+xmlにならずにtext/htmlのままPHPプログラムが動作しました。(AddTypeを無視しているようです) [.htaccess] AddHandler x-httpd-php442 .php .html AddType "application/xhtml+xml; charset=Shift_JIS" .html AddHandlerの".html"を消すと今度はContent-Typeがapplication/xhtml+xmlになりますがPHPが動作しなくなります。 AddHandler x-httpd-php442 .php .htmlの1行を.htaccessに記述し、 HTMLファイル内に<?=header("Content-type: application/xhtml+xml");?>を入力すれば表示されるのですが、できれば.htaccess一つで済めばと思います、、、。 サーバーはKDDIウェブコミュニケーションズ(CPI)のX10プランを使用しています。このサーバーは注意事項として"弊社サーバーでは .htaccessファイルにてphp_valueおよびphp_flag はご利用いただけません"との文言がありました。(※php.iniの修正は可能のようです) 良い書き方があればお教え頂ければ幸いです。 何卒宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPをHTMLで出力したい。

    PHPを使い、 仮にaaa.htmlの中にbbb.htmlというデータをインクルードして、 aaa.phpではなく、aaa.htmlとして出力したいのですが、うまくいきません。 .htaccessを 調べたらよく出てくる AddType application/x-httpd-php html を入れて 同じ階層にアップしてもうまくいきません。 具体的にどうなるかというと、~~/aaa.htmlと打つ(URL欄に)とダウンロードになってしまいます。(ページのaaa.htmlをデータをダウンロード) ブラウザはサファリです。 これはaaa.htmlのデータをxhtmlと宣言しているからでしょうか? AddType application/xhtml+xml html もいれて AddType application/xhtml+xml html AddType application/x-httpd-php html ともしてみたのですが、結果は同じです。 ちなみにaaa.phpでは問題なく表示されます。 レンタルサーバーでもphpは対応しています。 AddType application/xhtml+xml html AddType application/x-httpd-php html (改行) でもダメです、調べた限りをつくしました。。 解決策の程、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • htaccessのAddTypeが使えないサーバで.phpファイルを.htmlとして表示させる方法は?

    利用サーバではhtaccessのAddTypeが使えない機能制限があるそうで、サーバで.phpファイルを.htmlとして表示させることが、以下のhtaccessへの記述ではできません。 AddType application/x-httpd-php .php .html どこかに書いてあったので以下も試しましたがダメでした。 <FilesMatch "html$"> ForceType application/x-httpd-php </FilesMatch> どうにかして代替方法が欲しい状態でが何か良い方法がないでしょうか。 どうぞ宜しくお願い致します。

    • 締切済み
    • PHP
  • .htaccessの中身が php5 CGI版で動かない

    拡張子htmlファイルをphpファイルと認識させる為に、 .htaccessで AddType application/x-httpd-php .html AddHandler x-httpd-php .html と書いて対応していました。 今まではサーバーのphpのバージョンがPHP4(DSO版)だったのですが、昨日サーバーのバージョンがPHP5(CGI版)になってから、上記のような.htaccessが機能しなくなってしまいました。 order deny,allow deny from all ↑ これはちゃんと動くので、.htaccess自体が拒否されてるみたいなことはないと思います。 AddType application/x-httpd-php .html AddHandler x-httpd-php .html ↑ このプログラムがPHP5 CGI版にて意図した動作とならないのです。 何か分かる方いらっしゃいましたら、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • phpのダウンロード画面が出てしまう

    IE6からphpにアクセスするとダウンロード画面が出てきてしまいます。 ダウンロード画面を出さないようにするにはどうすればいいでしょうか。httpd.confは編集できない環境です。 .htaccessは下記のどちらにしてもDL画面が出てきます。 AddType application/x-httpd-php .xhtml AddType application/xhtml+xml .php index.php; <?php header("Content-Type: application/xhtml+xml"); echo "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" > <head> <meta http-equiv="ContentType" content="application/xhtml+xml" /> <meta content="i-mode7_FOMA" /> <title>タイトル</title> </head> <body> <?php readfile("./numbers3/n3temp.txt"); ?> </body> </html>

    • ベストアンサー
    • CSS
  • .htaccessによるmimeタイプについて

    携帯用のサイトを作成中です。 DOCOMOでi-cssを適用させたいので .htaccessに「AddType application/xhtml+xml html」と入力し、改行して保存しました。 FFFTPでアップしたあと、DOCOMOの携帯から閲覧してみると、無事i-cssは適用されていました。 急きょ「php」も使いたくなり .htaccessに「AddType application/x-httpd-php html」を付け加え、改行して保存しました。 FFFTPでアップしたあと、DOCOMOの携帯から閲覧してみると phpは適用されましたが、i-cssが反映されなくなりました。 試行錯誤してみましたが、どうしても解決できませんでした。 .htaccess、もしくは別の方法で i-cssとphpを同時に扱えるようにする方法をご存知の方は ぜひご教授のほど、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • .htaccessで、DOCOMOでのxhtml使用を可能(AddType application/xhtml+xml .html)にするとバグが・・・

    DirectoryIndex index.html index.shtml index.cgi index.php Options -Indexes Options ExecCGI Includes ErrorDocument 404 http://www.○○○○○.com/ AddType application/xhtml+xml .html 現在、通常のページがあり、モバイルサイトを構築中なのですが、DOCOMO端末でのxhtml使用ができず、.htaccessでAddType application/xhtml+xml .htmlの記述を入れてアップすると、PCサイトで閲覧するとIEでの表記でリンクのバグ(絶対パスではバグはでないが、相対パスだとダウンロードしますか?のような表記です)が出ます。 このような状況の回避方法など、もしご存知であれば、知恵をすこしお貸し下さい。宜しくお願い致します。 m_m

    • ベストアンサー
    • HTML
  • htaccessを使って、~.htmlというファイル名でphpを実行さ

    htaccessを使って、~.htmlというファイル名でphpを実行させようとしてうまくいかず困っています。 状況は、 htaccessに、AddType application/x-httpd-php .htm .html を追加したところ、 ieだと、『ファイルのダウンロード - セキュリティの警告』というダイアログボックスが出てきます。 firefoxだと、『を開く』というダイアログボックスが出てきて、『次のファイルを開こうとしています:』『ファイルの種類 application/x-httpd-php』ということが書かれています。 対処方法を教えてください。

    • 締切済み
    • PHP
  • .htaccessでAddTypeを並べることは禁

    .htaccessでAddTypeを並べることは禁止されているのでしょうか? 現在、海外のサーバーを利用しています。 文字化けがひどいので、.htaccess内に ---------------------- AddType "text/html; charset=Shift_JIS" .html ---------------------- と記述して利用していました。 今回新たに、htmlファイルでphpを動作させたいと思い、次のような記述を追加しました。 ---------------------- AddType "text/html; charset=Shift_JIS" .html AddType application/x-httpd-php .php .html ---------------------- どちらか一行であれば、phpも動作しますし、文字化けも起こりません。 いろいろと調べてみましたが、ギブアップです。 AddTypeを重ねることが禁止の場合、どのように書き直せば良いか、ご教授頂ければと思います。

  • .htaccessでの設定について

    はじめまして。 .htaccessの設定で質問があります。 .htaccessで「AddType application/x-httpd-php .html」と設定し、 PHPのファイルをhtmlの拡張子で表示するようにしています。 全てのファイルで.htmlがPHPとして動作しないように、 <Files index.html> AddType application/x-httpd-php .html </Files> としています。 上記の設定でindex.htmlだけPHPとして動作すると思いますが、 これをあるDirectoryのindex.htmlだけに限定することはできないのでしょうか。 具体的には、 /htdocs/index.html では、PHPとして動作し、 /htdocs/test/index.html では、PHPとして動作しないようにしたいのです。 よろしくお願いします。

専門家に質問してみよう