HTMLからPHPを呼び出す方法とは?

このQ&Aのポイント
  • PHP4で動いていたカウンターを、訳あってPHP3に移植することになりました。
  • HTMLには<img src="hoge.php" width="1" height="1">を埋め込み、hoge.phpファイルのほうには PHPのコードを記述していました。
  • PHP4では問題なく動作していたものが、PHP3ではうまく保存できず、JavaScriptを使った別の呼び出し方法を試したところ、JavaScriptの構文エラーが出るようになりました。
回答を見る
  • ベストアンサー

HTMLからPHPを呼び出すには

PHP4で動いていたカウンターを、訳あってPHP3に移植することになりました。 HTMLには<img src="hoge.php" width="1" height="1">を埋め込み、hoge.phpファイルのほうには <?php $fp = fopen( "/home/sites/home/access/logs/now", "w" ); fwrite( $fp, date("Y年m月d日 A h時i分s秒") ); fclose($fp); ?> としていましたが、PHP4では問題なく動作していたものが、PHP3ではうまく保存してくれませんでした。 そこで <script language="JavaScript" src="hoge3.php"> </script> としてみたら無事保存できるようになったのですが、今度は、JavaScriptの構文エラーが出るようになってしまいました。 他に良い呼び出し方法はないでしょうか? よろしくお願いします。

  • umioyo
  • お礼率78% (172/220)
  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

たとえば、 <? $fp = fopen( '/tmp/now.txt', 'w' ); fwrite( $fp, date("Y年m月d日 A h時i分s秒") ); fclose($fp); header( 'Content-Type: application/x-javascript' ); ?> とか。hoge.phpとほとんど変わらないですが。 HTTP応答として、 HTTP/1.1 200 OK Content-Type: application/x-javascript みたいなのを返せば良いかと。 逆に、エラーになるときの、HTTP応答がどうなってるかを確認してみては。

umioyo
質問者

お礼

うまくいきました~ いたずら防止のために <? $fp = fopen( '/tmp/now.txt', 'w' ); fwrite( $fp, date("Y年m月d日 A h時i分s秒") ); fclose($fp); ?> <HTML> <BODY> File not found </BODY> </HTML> としていたのが、引っかかっていました(^^; お恥ずかしい。。。 本当に助かりました。ありがとうございました。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

hoge3.phpで、適切なJavaScriptコードを返すようにするか、何も送らない(i.e. Content-Lengthが0)ようにしてみては。

umioyo
質問者

お礼

ご回答ありがとうございます。 ちょっと調べたのですが、よくわからなかったのですが、具体的にどのように記述すればよいのかよろしいでしょうか。 よろしくお願いいたします。

関連するQ&A

  • PHPのfrrite関数

    お世話になります。 PHPのfwrite関数について質問です。 下記の様な記述で、アクセスがあった際に$lineをdata.txtに保存する場合、同じタイミングで複数のアクセスがあった場合などにエラーは起きないのでしょうか? エラーが起こりうるのであれば、その対処方法を教えて頂きたいです。 $fp = fopen("data.txt", "w"); fwrite($fp, $line); fclose($fp);

    • 締切済み
    • PHP
  • メールをパイプでPHPへ渡すと複数届く

    レンタルサーバでキャッチオールメールのスクリプト渡しができるとの事で hoge.comへ来たメールをPHPへ渡す実験をしています。 |/(サーバパス)/public_html/test.php と設定し、test.phpには以下を記述しました。 #!/usr/bin/php -q <?php $source=file_get_contents("php://stdin"); if(!$source){ exit; } else{ //メールをファイルに保存 $logfilename="/(サーバパス)/public_html/test.txt"; $fp=fopen($logfilename,"a"); fwrite($fp,$source); fclose($fp); } そしてa@hoge.comへ送信してみると無事に保存されています。 しかし送信先として a@hoge.com,b@hoge.com とカンマ区切りで送信してみると、同じメールが2回保存されます。 3つのアドレスをカンマ区切りで送信すると3回保存されています。 同様にカンマで区切った分だけ同じ内容が保存されます。 これは普通の事なのでしょうか? OSは Linux CentOS 5 となっています。

  • PHP初心者です、教えていただけすか。

    /public_html /test のtest.txtの文字列をtest.phpで表示させたいのですが、 下記の文では表示されません、どこがおかしいのか教えてください。 <?php $fp = fopen ('test.txt', 'w'); $date = "test\n"; var_dump (fwrite($fp, $date)); fclose ($fp); ?>

    • ベストアンサー
    • PHP
  • 【PHP】書き込みできません

    PHP5.3の環境でファイル書き込みのロジックがうまくいかずに困っています。 環境は下記の通りです。 Apache 2.2.2 PHP 5.3.3 コードは下記の通りです。 >>CODE $file_path = "/home/xxxxx/logs/test.txt"; echo file_exists($file_path); echo "file_path1=".$file_path; if ( file_exists($file_path) ) { echo "file_path2=".$file_path; // ファイルポインタ取得 if ( ($fp = fopen($file_path, 'a')) !== FALSE ) { // ログは追記 echo "file_path3=".$file_path; // ファイルポインタに書き込み fwrite($fp, $date."\n"); fwrite($fp, $body); fwrite($fp, "----------------------------------------------------\n"); // ファイルポインタクローズ fclose($fp); $flg = true; } } <<CODE 権限は下記の通りです。 logs 777 test.txt 777 現象は下記の通りです。 echo文のfile_path1は表示されます。 echo文のfile_path2及びfile_path3は表示されません。 $file_path="/home/logs/test.txt";に変更すると、 echo文のfile_path1及びfile_path2が表示されます。 echo文のfile_path3は表示されません。 ファイルが存在することはlsで確認したので間違いありません。 権限も777にしているので、何がおかしいのか困り果ててしまい、初めて投稿させて頂きました。 PHPやApacheの設定ファイル等も問題あるのでしょうか。 どうぞご指摘お願いいたします。

  • PHPで作ったカウンタを任意の位置における

    ようにしたいのですができません counter.php: <?php $data_file = './access.dat'; //データファイル $fp = fopen("$data_file", "r+"); $cnt_num=(string)(fgets($fp, 64)+1); fseek($fp,0); flock($fp,2); fwrite($fp,$cnt_num); fclose($fp); $cnt_num=sprintf("%06d",$cnt_num); $f_pass = './a_gif'; for($i=0;$i<strlen($cnt_num);$i++)$value[]=substr($cnt_num,$i,1); for($j=0;$j<count($value);$j++)echo "<img src=$f_pass/".$value[$j].".gif>"; ?> としてHTMLの任意位置で <img src="./counter.php"/> をおいたのですが×マークが出るだけでカウンタ値が表示されません どうしたらいいでしょうか

    • ベストアンサー
    • CGI
  • phpのエラー

    phpで $fp = fopen("test.txt", a);//ココ1 $jyusin = $_POST['score'];//ココ2 fwrite($fp, $jyusin); fclose($fp); $f = fopen("test.txt", r);//ココ1 echo fgets($f); fclose($f); ココ1の場所でUse of undefined constant...というエラー ココ2の場所でUndefined index...というエラー 上記のエラーはどうしたら直りますか。 因みにissetで隠す方法以外でお願いします。

    • ベストアンサー
    • PHP
  • php+mysql

    書き込み内容保存押した後に空のファイルに保存(作成済み)空ファイル タイトル 本文 書き込み日次 タイトル 本文 書き込み日次こんな形で保存です これをDBに保存したいのですが以下だと↓ファイル保存形式なってしまってます どう変えればいいでしょうか?よろしければ書き込んでいただけると幸いです $fp = fopen('data.txt', 'a'); flock($fp, LOCK_EX); fwrite($fp, implode('<>', array($subject, $text, date('Y-m-d h:i:s'))) . PHP_EOL); flock($fp, LOCK_UN); fclose($fp);

    • ベストアンサー
    • MySQL
  • 実行したスクリプト"自体"をob関数でHTML出力

    スクリプト”自分自身”をob_startなどの出力制御関数を使って HTML出力したいのですが、うまく行きません。 以下のように、hoge1.phpというスクリプトを書いて、 別の hoge2.phpをインクルードしてhoge2.phpを HTML出力することはできますが、 ob_start(); include('hoge2.php'); fopen処理 fwite処理 fclose($fd); ob_clean(); たとえば、インプットフォームに文字を入力して、 受け取る。そして表示。 と同時にHTMLファイルを書き出して保存する場合、 どのようにスクリプトを書けばいいでしょうか。 お手数おかけしますが。お力を貸してください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP5のsimplexml_load_fileで取得した結果をファイルに書き込みたい

    よろしくお願いします。 PHP5でSimpleXMLを利用して得られた結果をファイルに書き込む、つまりキャッシュを保存したいのですが、以下のようにやっても作成されるファイルは空のままです。ディレクトリモードは755です。 $url = "http://hoge.co.jp/index.php?a=123"; $cache_file = md5($url); $xml = simplexml_load_file($url); $fp = fopen($cache_file, 'w'); fwrite ($fp, $xml); fclose($fp); どうかご教授よろしくお願いします。

    • 締切済み
    • PHP
  • PHP

    PHPで書き込みができません。なぜでしょうか? <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $erandayoubi = $_POST['youbi']; foreach($erandayoubi as $youbi){ $youbi2=$youbi2.$youbi. ','; } $youbi3 = rtrim($youbi2, ","); $fp = fopen("/etc/cron.d/autopbxrestart", "w"); fwrite($fp, $_POST['opt'] .$_POST['fun']. " " .$_POST['jikan']. " * * " .$youbi3. " root /usr/local/sbin/auto_pbxrestart.pl"); fclose($fp); } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう