- ベストアンサー
adsense広告がphp出力できない
- adsense広告のPHP出力に問題があり、広告が表示されません。
- 広告のscript内でwidth,heightの値が0になってしまっており、表示されない原因と考えられます。
- PHPのコードを直接htmlに貼り付ければ、広告は正常に表示されます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1です。 >PHPにてechoしているのでphpカテゴリに質問しているだけです。 了解しました。そういうことであれば(私は)以降スルーします。JavaScriptカテで質問して「動作する外部JSファイル」を仕上げるのが先だと思いますので。
その他の回答 (4)
- shimix
- ベストアンサー率54% (865/1590)
ANo.1です。 >>PHPを直接叩き、document.write等を削除したものを >>直接htmlに貼り付ければ、広告は表示されます。 いやいや「document.write等を削除したもの」ってそれは違うでしょう。「外部JSとして」動くソースは確認出来ているんですかと。下記ソース(提示されたソースが返すものです)を外部JSとして読み込んだら動作するのは確認済みですか? test.js document.write("<div align='center'>"); document.write("<p>"); document.write("<script type='text/javascript'><!--"); document.write("google_ad_client = 'hogehogeID';"); document.write("/* 200*200 */"); document.write("google_ad_slot = 'slotnumber';"); document.write("google_ad_width = 200;"); document.write("google_ad_height = 200;"); document.write("//-->"); document.write("</script>"); document.write("<script type='text/javascript'"); document.write("src='http://pagead2.googlesyndication.com/pagead/show_ads.js'>"); document.write("</script>"); document.write("</p>"); document.write("</div>"); 上記内容をtest.jsとして読み込んで動作しないのであれば、静的な外部JSファイルで返そうがphpで動的に生成して返そうが同じです。それは「JavaScriptとしておかしい」のであって、php云々以前の問題です。
補足
うーん。伝えるのは難しいですね。 >それは「JavaScriptとしておかしい」のであって、php云々以前の問題です。 質問に「PHPをhtmlからjavascriptにて呼び出してます。」と書いてまして 結果的に表示されないという質問なんです。 php云々以前というよりは 私としてみればPHPだろうとJavaScriptだろうとどっちでも良いんです。 htmlに直書きして出る=JavaScriptが悪さをしているのは明白ですし 値が渡せていない=JavaScriptが悪さをしているのは明白です。 PHPでは何も処理していないので。 ただ、手法としてPHPにてechoしているのでphpカテゴリに質問しているだけです。 ありがとうございました。
- shimix
- ベストアンサー率54% (865/1590)
ANo.1です >>content-typeをtext/plainにして表示させた内容 >上記内容にしても何も表示されないのです・・・ それは「あり得ない」です。そう変更したphpスクリプトにアクセスしていますか(そういう意味で書きましたが・・)。 そもそも提示された内容が外部jsとして動作することは確認できているのでしょうか? 本来、外部jsとして動作することを確認した上で、それを(何らかの動的に生成した部分があるので)phpスクリプト化するという手順のハズです(∴ 提示されたソースに動的な部分が存在しないのが不思議です)。
補足
何度もありがとうございます。 >それは「あり得ない」です。そう変更したphpスクリプトにアクセスしていますか(そういう意味で書きましたが・・)。 あっ、PHPファイルに直接アクセスすれば表示されています。 最初の質問にも書いてます。 >>PHPを直接叩き、document.write等を削除したものを >>直接htmlに貼り付ければ、広告は表示されます。 >そもそも提示された内容が外部jsとして動作することは確認できているのでしょうか? もともとHTML上に記載していたものをPHPファイルに書き、共通化しようというのが 目的で、HTML上で動作確認しているものを書いています。 ちなみに・・・もともとの実行結果が以下になっています。 <div align="center"><p><script type="text/javascript"><!-- google_ad_client = 'hogehogeID'; /* 200*200 */ google_ad_slot = 'hogeID'; google_ad_width = 200; google_ad_height = 200; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><ins style="display:inline-table;border:none;height:nullpx;margin:0;padding:0;position:relative;visibility:visible;width:nullpx"><ins id="aswift_6_anchor" style="display:block;border:none;height:nullpx;margin:0;padding:0;position:relative;visibility:visible;width:nullpx"><iframe allowtransparency="true" hspace="0" marginwidth="0" marginheight="0" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&&s.handlers,h=H&&H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&&d&&(!d.body||!d.body.firstChild)){if(h.call){i+='.call';setTimeout(h,0)}else if(h.match){i+='.nav';w.location.replace(h)}s.log&&s.log.push(i)}" vspace="0" id="aswift_6" name="aswift_6" style="left:0;position:absolute;top:0;" frameborder="0" height="null" scrolling="no" width="null"></iframe></ins></ins></p></div> ↓ここに値が渡ってないと思うんですが・・・ height="null" scrolling="no" width="null
- t_ohta
- ベストアンサー率38% (5292/13826)
なぜ、単純に文字列を書き出しているだけなのに scho 命令を使用しているのでしょうか。 <?php header("Content-type: application/x-javascript"); ?> document.write("<div align='center'>"); document.write("<p>"); ・・・・・ とするだけでいいと思うのですが。 どうしても echo を使わなければいけない理由があるのであれば、 echo "document.write(\"<div align='center'>\")\n"; を echo "document.write(\"<div align='center'>\");\n"; と、全ての document.write の閉じ括弧の後ろに ; を付けるようにしてください。 たぶん ; が無いためJavaScriptの実行時に命令文の区切り位置が分からずエラーになっているのだと思われます。
補足
ご回答ありがとうございました。 上記どちらもダメでした。
- shimix
- ベストアンサー率54% (865/1590)
#headerでのContent-typeはtext/javascriptの方が・・・ とりあえず問題を切り分けてください。content-typeをtext/plainにして表示させた内容を(外部jsファイルとして)保存したものを使ってもダメなら、phpの問題ではありません。 というか、JavaScriptでJavaScriptのソースをdocument.writeする(しかもfunctionでなくそのまま動かす)ってどうなんですかねぇ・・・
補足
ご回答ありがとうございました。 >content-typeをtext/plainにして表示させた内容 上記内容にしても何も表示されないのです・・・ ただ、phpファイルを呼び出したhtmlを表示させて 選択範囲のソース表示を行うと、質問内容にあるような状態が確認できます。 おそらく「http://pagead2.googlesyndication.com/pagead/show_ads.js」に IDやサイズを渡しているんだと思うのですが これがうまく渡っていないんですよね。。
お礼
>JavaScriptカテで質問して「動作する外部JSファイル」を仕上げるのが先だと思いますので。 その方が早そうですね。 技術カテは広く精通している方が多いので期待しましたが 絞って質問したいと思います。 ありがとうございました。