Posts Tagged ‘php’

このページの目次

Services_Twitter0.5.0を使ってみてつまづいたところ

月曜日, 3月 1st, 2010

こんにちは、なかわけです。

PHPのPearライブラリ『Services_Twitter』を使ってみました。
基本的にとても簡単です。
が、0.4.0から使ってた人は仕様が変わったのでコードをちょこっと書き換えないといけません。
(さらに…)

Google Analyticsのモバイル版のga.phpにバグがあったので直した

金曜日, 2月 5th, 2010

こんにちは、なかわけです。

Google Analyticsのモバイル版が公開されたことを知って、
ちょうどモバイルの仕事をしていたので導入してみました。
が、動きませんでいた。
Analyticsの管理ページからコピペするコードと
ダウンロードするga.phpにバグがたくさん潜んでました。
隣のエンジニアに協力してもらって直しました。
(さらに…)

magic_quotes_gpcにハメられる

木曜日, 8月 27th, 2009

こんにちは、なかわけです。

FlashからPOSTしたデータをサーバに保存する仕組みを作ったときに保存されたデータになぜか\(バックスラッシュ)が入ってしまって悩んでました。

使用していたライブラリのせいなのかなーと思いながら(ちなみに先日のas3corelibです)、そのときはそれをやり過ごすようなプログラムを書いて対処しました。

後日、隣のエンジニアが閃いて教えてくれました。

サーバにはmagic_quotes_gpcという設定があるようで、これがONになっていると、”(クォート)を勝手にエスケープして\”にしちゃうそうです。

.htaccessに

php_flag “magic_quotes_gpc” 0

と書いて該当ディレクトリに置いて解決しました。

も~、知らんがな~。

GDグラフィックライブラリーの不具合について

木曜日, 7月 16th, 2009

こんにちは、なかわけです。

今日はGDの話。また仕事のメモです。
GDについてはウィキペディアなどで調べてください。

かなり特殊なケースですが、GDで扱う画像データの中に特定のバイナリが含まれていると処理が完了せず、エラーになります。

Corrupt JPEG data: 520 extraneous bytes before marker 0xd9

こんな感じのエラー。

調べてみたところ、あるバージョン以下ではGDのプログラムにバグがあるようです。
外人さんは自分で直してました。
参考:http://www-personal.umd.umich.edu/~dennismv/corruptjpeg.html

会社の提供しているサービスでは手で修正するにはリスクがあるので上記の方法は採りませんでした。
新しいバージョンではこのバグは修正されているようなのでアップグレードすれば直るようです。
(会社のサービスで使用してるサーバはそもそもApach(?)のバージョンが古かったせいでアップデートできなかったですけど)

PHPでPOSTしつつページを移動する

木曜日, 7月 2nd, 2009

こんにちは、なかわけです。

今日はPHPの話。また仕事中にした作業のメモです。

AページからBページ(別サイト)にPOSTしたいのだけど、

  1. Aページの文字コードはUTF-8で、BページにはShift-JISでPOSTしなければいけない。
  2. またAページの文字コードをUTF-8からShift-JISに変更することができない。
  3. さらにBページのウィンドウをJavascriptで開かないといけないという環境でした。

エンジニアに相談したらcURLを使ったら?とアドバイスをもらったんだけど、cURLはPOST先のhtmlを取得することはできるんだけど、ページ自体を遷移(移動)することができなかったので、ボツでした。

考えた挙句、1ページはさんでそのページではJavascriptで自動的にFormをBページへPOSTするようにしました。つまり、

Aページ → A’ページ →Bページ

という流れです。A’ページの文字コードはShift-JISです。

具体的にはこんな感じでした。本当はもっと複雑な処理してますが、わかりやすく簡単にまとめます。

Aページ(UTF-8)

<form action="A'ページ" method="post" target="aDashPage">
    <input type="input" name="chocolate" value="ビターが好き" />
    <input type="submit" value="A'ページへ" onclick="window.open('', 'aDashPage')" />
</form>

送信ボタンのJavascriptではウィンドウ名を「aDashPage」とurlを指定しないで空白のページを開きます。そして、そのウィンドウに対してFormをPOSTするようにします。

A’ページ(Shift-JIS)

<script type="text/javascript">
    window.onload = function(){
        document.postForm.submit();
    }
</script>

<form action="Bページ" method="POST" name="postForm">
    <input type="hidden" name="chocolate" value="<?=mb_convert_encoding($_POST&#91;'chocolate'&#93;, 'SJIS', 'UTF-8')?>" />
</form>

A’ページではメンドクサイですけど、もう一度フォームを作っていますが、type=”hidden”にして表示しないようにしています。また、window.onloadでページの読み込みが完了したらFormをPOSTするようになっていますので、環境によりますが1秒くらいでBページに自動POSTされBページが表示されます。

PHPの言語仕様としてPOSTしてリダイレクトすることはできないようですね。なんかいろいろ問題あるみたい。調べてた記事がどこいったかわからなくなっちゃった・・・。