Loading....
最近の投稿:

Article

楽天APIのwarningを抑制する

先日アラジンで作成したサイトを観ていたら、
とんでもない問題を発見してしまいましたので、
今回はその問題と対処方法をご紹介します。

その問題とは、デベロッパーIDの流出です。

楽天のデベロッパーIDがあると何が出来るかっていうと、
私の知る限り、楽天ウェブサービス(楽天API)を
利用できることぐらいしか今のところ知りません。

なので、流出によって発生する実際の被害に関しては
私は何も申し上げられません。
・・・何もないのかも・・・

しかし、楽天ウェブサービス規約を見ると、
第5条(デベロッパーID)の中に
下記のような記載があります。

2.利用者は、デベロッパーIDを他人に知られることがないよう責任を
もって管理するものとします。当社は、入力されたデベロッパーID
が当社が発行したものと一致することを所定の方法により確認した場
合、利用者による使用があったものとみなし、それらが盗用、不正使
用その他の事情により利用者以外の者が使用している場合であっても、
それにより生じた損害について当グループは一切責任を負いません。

なので、デベロッパーIDは出来るだけ他人に明かさず
隠しておくべき情報であるといえます。

さて、アラジンで作成したサイトでどのように
デベロッパーIDが流出するかですが、
アラジンで作成したサイトを何度も繰り返し
リロード(F5キー)していると、
商品が表示されなくなる時があります。

これは楽天APIを短時間に規定を超える回数
実行したことによる楽天ウェブサービスの
制限なのですが、このときにサーバーによっては
Warningコードを画面に出力してしまいます。

その中にデベロッパーIDとアフィリエイトIDが
バッチリ表示されてしまうのです。

※テストする際は、ご自身のサイトで確認してください。
くれぐれも他人のサイトや
私のサイトでテストしないでください。(笑)

下図に例を載せます。
上が通常時で、下がワーニング発生時です。

通常時のトップページ


警告時のトップページ

※黒くつぶしている部分に私のIDが表示されています。

ちなみにこのワーニングが表示された状態で
Googleにキャッシュされてしまったサイトも
複数存在するようです。
恥ずかしいので、早めに対処しましょうね。

ワーニングの表示は使用しているサーバーによっても
違うようで、私は二つのサーバーを使用していますが、
ハッスルサーバーでは発生しますが、
エックスサーバーでは発生しません。
(デベロッパーIDを含むワーニングが
表示されないという意味です。)

エックスサーバーでのワーニング発生時の画面がこれです。

Xserverでの警告時
単に商品が表示されないだけです。

多分サーバーのPHPの設定(php.iniや.htaccess)に
よるものだと思いますが、ちゃんと確認していないので、
本ページではアラジンのソースコードを修正する
解決方法をご紹介します。

蛇足ですが、私エックスサーバーやハッスルサーバーに
関するレビューサイトも運営していまして、
もし興味を持たれた方がいらっしゃれば、
下記ページをご覧ください。
他にも60GBの大容量を誇るレンタルサーバーの
レビューなんかも行っています。

エックスサーバーを実際に使ってみて | 独自ドメインで格安・安定サーバー
ハッスルサーバーを選んだ理由 | 独自ドメインで格安・安定サーバー
月額1,800円で60GBのレンタルサーバー | 独自ドメインで格安・安定サーバー

では、修正コードです。

lib\rakutenAPI.php(に対する修正

行番号 : 47,79,116
各行に存在する「file_get_contents」の直前に「@」を追加します。
@file_get_contents」とする訳です。

index\contents.phpに対する修正

行番号 : 20
foreach($p->category as $c){
この行の直前に下記データを追加します。
if($ret == rakutenAPI::OK){
行番号 : 44
$i++」の直後に2行続いている「}」を3行にします。
「}」のみの行を3行にする訳です。

今までPCサイトばかりに修正を行っていましたが、
今回の問題は結構深刻だと思いますので、
同様にモバイルサイトも修正しておきましょう。

lib\mrakutenAPI.php(に対する修正

行番号 : 47,79,116,152
各行に存在する「file_get_contents」の直前に「@」を追加します。

今回の修正で、ワーニングは表示されなくなりますが、
商品を表示/検索できないことには変わりがないので、
本当は楽天APIをキャッシュするなどして、
API発行回数を少なくしてやるのが一番良いのですが、
その修正は大掛かりだったり、サーバーによって
修正方法が異なっていたりと、簡単にご紹介できる
内容ではないため、今回はこのような修正になりました。

キャッシュ化については違う方法で近い内に
公開したいと思っておりますので、ご期待ください。

(2009年3月29日追記)
本記事の改造だけでは、モバイルサイトの
カテゴリーページにて、楽天API制限の影響による
ワーニングが表示されてしまいます。
これに対する対応に関してはこちらをご参照下さい。

人気ブログランキングへ
人気ブログランキングへ参加しています。
応援をお願いします。


Comments (14 comments)

はじめまして。PC初心者の上にアフィリエイト超初心者なのに、アラジンを
ギリギリで購入しちゃいました。

カスタマイズの事がわからなくて検索していて、こちらにたどり着きました。

修正コードの話を読んだり、アラジン自体の購入者ページを見たりしていると「lib\rakutenAPI.php(に対する修正

行番号 : 47,79,116」みたいな表現が出てくるのですが、そんなに沢山の
行があるファイルがどこにあるのかわかりません。

HTMLも勉強し始めたばかりです。

情けない話ですが、どこを探せばよいのか教えていただけないでしょうか。

ちなみに、アラジン本体のファイルでも・FFFTPにアップロードしたファイルや
テキストでも数行の記号の羅列しか見つかりません。

あつかましい質問ですが、よろしくお願いいたします。

ひろ / 3 月 19th, 2009, 05:40

ひろ さん、こんにちは。

購入者ページも本サイトも
アラジンを購入してダウンロードしたファイルを解凍すると出てくる
aladdinディレクトリを起点として説明しています。
これは、同時にftpでサーバーにアップする起点ディレクトリでもあります。

例えば、
「lib\rakutenAPI.php(に対する修正
 行番号 : 47,79,116」
とあった場合は、前述のaladdinディレクトリから見て、
libディレクトリにあるrakutenAPI.phpファイルの
47行目、79行目、116行目を意味しています。

では、頑張って下さい。

チカマオ / 3 月 19th, 2009, 06:31

チカマオさん、早速のお返事ありがとうございます。
じつは、前のコメントを入れてからphpファイルをずっといじってみました。
たとえば「lib\rakutenAPI.php(に対する修正
 行番号 : 47,79,116」 の場合、ファイルの中の行数が4行なんです。
文字が横長に開かれていて、行数が数えられないんです。
それでもがんばって修正コード入れてみたんですが、warningが出た時に
楽天のコードが出てしまいます。

ちなみにサーバーはロリポップです。
phpファイルはnotepadで開いてるのですが・・・・(メモ帳になってます)

行間や行数の変更のしかたが解らないんです。
修正したものも、再度ファイルを開いたら、消えていました。
はぁぁ。。。

先が思いやられますが、がんばります。

ひろ / 3 月 19th, 2009, 07:16

ひろさん、こんにちは。

状況と環境を説明してくれたので、問題が明確に判りました。
まず、アラジンの説明書などにもありますが、アラジンのファイルはnotepadで編集してはいけません。
他の改行コードLF、文字コードUTF-8をサポートしているテキストエディタを使用して下さい。
私はプログラムを使う事が多いことから、「サクラエディタ」なるエディタを愛用しています。
他にはアラジン販売元でも勧めている 「TeraPad」 や、
HTMLタグ挿入やファイル内容比較に便利な 「NoEditor」 等もあります。
それぞれフリーウェアですし、名前で検索すればすぐに見つかりますので、好きなものを使って下さい。色々試して自分に合うものを見つけるのが良いですね。

ひろさんはPC初心者との事なので簡単に説明しますが、コンピュータで扱うテキストには、改行コードや文字コードに種類があります。これらはOS(普通のPCならばWindowsに相当するもの)等と密接に関連しながら、対応するアプリケーションで扱う事ができます。
アラジンはunix/linuxと呼ばれるOSで動作する事を前提としていて、改行コードにはLFを、文字コードにはUTF-8というものを使用しています。それ故、アラジンのソースを編集する場合は、これを扱えるテキストエディタが必要となります。
ちなみにWindowsの標準は改行コードにCR/LF、文字コードにファイルにはSHIFT-JIS、内部ではunicodeというものを使用します。notepadはWindows標準であり、SHIFT-JIS等は扱えますが、改コードLFやUTF-8は扱えないと思います。(最近の高度化したnotepadは判りません。私は使わないので。)
そのため、改行されず、記号(UTF-8が文字化け)が表示されるのです。

ロリポップは詳しく知りませんが、まず問題無いです。

チカマオ / 3 月 19th, 2009, 08:08

ご丁寧にありがとうございました。
ただいま無事にterapadをインストールできました。
やっと、カスタマイズの始めの一歩を踏み出せます!!

OSによって、色々と扱えるソフトがあるんですね。解りやすい説明、感謝です。
これからも、勉強していきたいと思っています。

本当にありがとうございました。
これから、サクサクとアラジンが使えるようにがんばります。

ひろ / 3 月 19th, 2009, 16:03

チカマオ様
はじめまして。アキと申します。チカマオさんのサイトとても参考になります。ありがとうございます。

すみませんが1つ教えて頂きたいのですが、「アラジンで作成したサイトを何度も繰り返しリロード(F5キー)していると、商品が表示されなくなる時があります。」と言うことなのですが、先日、ロリポップでの容量不足を感じチカマオさんお薦め?1のXサーバーを契約したのですがアラジンで作成したサイトをひどいときには2~3度リロードすると商品が表示されなくなります。

同じように作っているロリポップでは何度リロードしても問題ないのですがXサーバーで作っているサイトだけがすぐに商品が表示されなくなることが頻繁にあるのです。このような現象で何かご存知でしたら教えて頂けないでしょうか。 お忙しいところ申し訳ありませんがよろしくお願いします。。

アキ / 3 月 20th, 2009, 04:15

ひろさん、こんにちは。
うまくいったようで、おめでとうございます。
頑張って下さい。

チカマオ / 3 月 20th, 2009, 05:53

アキさん、こんにちは。初めまして。

ロリポップに作ったサイトと、Xサーバーのサイトで、カテゴリーの数は同じでしょうか?
アラジンはトップページにおいて、カテゴリーの数分の楽天APIを実行しますので、カテゴリーの数によって商品が表示されなくなるタイミングは異なります。
なお、これらは楽天APIによるものなので、ロリポップやXサーバーといったレンタルサーバーには影響されない筈です。
考えにくいですが、もしかしたら他のエラーが発生している可能性も考えてみても良いかも知れません。
それを確認する場合は下記修正をして下さい。
lib\rakutenAPI.php の中で 「$result = file_get_contents」を使用している行の直後に下記コードを追加して下さい。

if(!$result){ error_log( date("Y/m/d H:i:s\t")."RakutenAPI Denied!\n", 3, '../lib/rakutenAPI.log'); }

同ファイルで、「if($xml->Header->Status != "Success"){」の行の直後に下記コードを追加して下さい。

error_log( date("Y/m/d H:i:s\t")."{$xml->Header->Status}\n", 3, '../lib/rakutenAPI.log');

エラーが発生すると、「lib\rakutenAPI.log」にログが出力されるので確認して下さい。
楽天APIの制限オーバーであれば、「RakutenAPI Denied!」と記録されます。

あと、Xサーバーを契約との事ですが、「独自ドメインで格安・安定サーバー」経由でご契約されたのでしょうか?
でしたら、楽天APIのキャッシュ化コードをサービス致しますので、下記アドレスに契約日を記載して、「lib\rakutenAPI.php」を添付の上、メールを下さい。
追ってキャッシュ化コードをプレゼントさせて頂きます。
chikamao@u3g.biz
ちなみに、「lib\rakutenAPI.php」を添付頂くのはアラジン購入者である事を確認する為ですので、何卒ご了承下さい。

無事、解決できる事を願っております。

チカマオ / 3 月 20th, 2009, 08:52

チカマオ様
はじめまして。ゆきと申します。
今回のワーニング表示の件、
参考にさせていただいきました。
ありがとうございました。

その上でのご質問、
誠に厚かましいかぎりですが、
モバイルサイト側で、
商品カテゴリを選択した場合に、
新着部分に商品がないのでしょう。
やはりワーニングが表示されてしまうサイトがありました。

phpはチンプンカンプンで、
どこか見落としてしまっているのでしょうか?

お時間が許しましたら、
よろしくご回答いただければ幸いです。

レボリューション期待してます。

ゆき / 3 月 26th, 2009, 11:24

ゆき さん、こんにちは。
本サイトを読んで頂きありがとうございます。
質問大歓迎ですのでお気軽にどうぞ。内容によっては記事のネタにさせて頂きますので。
私の体力が追いつかなくなると、回答が遅延することもありますが、その時はどうか寛大な目で見て下さい。(^^ゞ

ご質問のモバイルサイトの方ですが、私の関心がもっぱらPCサイトに行っている為、モバイルサイトになかなか目が届いていないのが実情です。
で、ゆきさんの件は恐らく、楽天API取得失敗後に画面に出力する際の変数の問題だと思います。
この部分の対応についてモバイルサイトの改造が抜けていました。
近日中に修正しますので、いましばらくお待ち下さい。

チカマオ / 3 月 26th, 2009, 11:33

チカマオ様

ありがとうございます。
よろしくお願いいたします。

ゆき / 3 月 27th, 2009, 09:02

ゆき さん、こんにちは。
返事が遅くなりまして、済みません。

取りあえず、ワーニングメッセージを表示させない改造に関して公開しましたので、ご確認下さい。
続けて適切なメッセージの表示方法も公開しますので、こちらは今しばらくお待ち下さい。
・・・結構改造箇所が多岐に渡るのですよ。

チカマオ / 3 月 29th, 2009, 15:42

こんにちは!てつニャです(^o^)

困っていたので本当に助かりました!
勉強になります♪

応援ぽち☆していきます(=^▽^=)

よろしくです♪

にゃんでもショッピングモール(=^▽^=) / 5 月 16th, 2009, 08:09

こんにちは、てつニャさん。
コメントありがとうございます。

ちょっと色々あり、ここのところ更新が途絶えてしまっていますが、すぐにまた再開しますので、今後も宜しくお願いします。(^^

チカマオ / 5 月 17th, 2009, 21:15

What do you think?

判らないphp命令やhtmlタグ等をここでお調べ下さい。

カスタム検索

緊急告知

本サイトより【アラジン】をご購入頂いた方は、お手数ですが下記アドレスまでメールを頂けないでしょうか。

サポート用メールアドレスのご連絡と、今後大規模改造が完成した際にはご連絡させて頂きます。

※メールには必ずInfotopからの購入完了メールに記載されている【注文ID】をご記載下さい。

chikamao@u3g.biz

QLOOKアクセス解析