忍者ブログ

Syok'n Lab

WEB開発のあれこれ PHP,JAVA,Javascript,Ajax,Flex,Air,Linuxなどなど 最近雑記帳になりつつある・・・

カテゴリー「PHP」の記事一覧
※コメント、トラックバックは認証後表示されますのでご了承下さい

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

[PHP] cakephp+sencha-touchでiphoneWebアプリ開発<停滞章>

iphone(ipod touch)でセッションが保持できないの件は
毎回(AJAX通信含む)のリクエストでセッションIDを生成しなおしているのが原因ぽい
ページリクエスト時のとAJAX時のサーバーのリクエストヘッダを見て判明した。

iphoneのsafariだとリクエストヘッダにCookie: ......がない
のでサーバー側で新たに生成してしまっている

ってことはsenchaの非同期通信機構にバグがあるのか?それともsafariの仕様なのか?

いずれにせよ解決にはまだ時間がかかりそうだ

拍手[0回]

PR

[PHP] cakephp+sencha-touchでiphoneWebアプリ開発<序章その2>

セッションの件はわからないけれど、携帯用にSJIS出力する際のメモ
基本文字コードはUTF-8で統一ですが、一部ガラケーはUTF-8に対応していないので、Shift-JISに変換する必要があります。

app_controller.php(自分の場合はすべてのcontrollerの基底クラスとして定義) 内に以下のメソッドを定義します。

function beforeRender() {
    parent::beforeRender();
    if ($this->RequestHandler->isMobile()) {
      if ($this->__isSmartPhone()) {
          $this->viewPath = 's';
          $this->layoutPath = 's';
      } else {
          $this->viewPath = 'm';
          $this->layoutPath = 'm';
          Configure::write('debug', 0);
          $this->RequestHandler->respondAs('html', array('charset' => 'Shift_JIS'));
      }
    }
  }

※beforeRender内ではレイアウトパスの変更と、文字コードヘッダの指定を(デバッグモードを切っておかないと面倒なようです)
この場合だとviews/layout/s/内にスマホのviews/layout/m/内にガラケー用のレイアウトファイルを配置します
function afterFilter()
  {
      parent::afterFilter();
      if ($this->RequestHandler->isMobile() && !$this->__isSmartPhone()) {
          //header("Content-type: text/html; charset=Shift_JIS");
          //Configure::write('App.encoding', 'Shift_JIS');
          $this->output = mb_convert_kana($this->output, 'rak');
          $this->output = mb_convert_encoding($this->output, 'SJIS-win', 'UTF-8');
          //$this->RequestHandler->respondAs('xhtml', array('charset' => 'Shift_JIS'));
      }
  }

※afterFilter内では出力するhtmlの文字コードを変換します。
後は送信データのコンバートをしないといけない(追記予定)

拍手[0回]

[PHP] cakephp+sencha-touchでiphoneWebアプリ開発<序章>

タイトルのとおり

iphone(ipod touch)のセッション引継ぎがなかなかうまくいかん
ブラウザから認証情報を非同期でpost⇒認証おk⇒セッションに値格納⇒ブラウザにレスポンス返す⇒レスポンスおkならリダイレクト
ってな流れで処理しているのだけど、なぜかiphone版に作った画面では引き継がれない

関係ないかもしれないけど、この問題がクリアになったら是非試したい情報があったのでメモ

認証情報保持時にクッキーの変わりにローカルストレージを使う
http://suin.asia/2009/09/13/iphone_local_strage_for_email_password_remainder

週末までには解決したいなぁ

拍手[0回]

[PHP]CakePHP モデルのfindメソッド等のfield

cakephpではDBアクセスがかなり簡単になっています。
findメソッドを使うだけで長いSQLを書く必要がなくなります。

で、使っていて詰まった所
・fieldを指定する時、エイリアスを使う時のASは大文字で無いと機能しません

以下は動作しません


$data = $this->hoge->find('all',
    array(
        'conditions' => array(),
        'fields' => array(
            'hoge.id as id',
            'hoge.name as name'
        )
    )
);

拍手[0回]

[PHP] PEAR Archive_Tar

PHPからサーバーコマンドを実行出来ない状況下でファイルの圧縮、展開を行いたい場合
PEARに以下のライブラリがあります。

Archive_Zip
Archive_Tar

どちらもPHPを導入する際にzlibを有効にする必要があります。

インストール方法は以下を参照
http://d.hatena.ne.jp/solitary_shell/20090716/1247726269


簡単な使用法
※詳細は公式を参照

// 圧縮

// 圧縮するフォルダへCD
chdir($archiveDir);
// インスタンス生成(ここではtgz形式で)
$obj = new Archive_Tar($archiveFile,  "gz");
// 圧縮対象のファイル配列生成
$targetFiles = array(
    'hoge1.txt',
    'hoge2.txt'
);
// アーカイブ作成
$obj->create($targetFiles);


// 解凍

$obj = new Archive_Tar('archive.tar.gz', true);
$result = $obj->extract('/home/myFolder');

拍手[0回]

免責事項

当ブログに記載している情報に関しては、合法性、正確性、安全性等、いかなる保証もされません。従って、当ブログの情報を元に行う行為については自己責任でお願い致します。

カレンダー

11 2024/12 01
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

最新コメント

[02/10 幸一]
[12/08 yamamoto]
[07/23 Mr.ポテトヘッド]

最新トラックバック

ブログ内検索

Copyright ©  -- Syok'n Lab --  All Rights Reserved

Design by CriCri / Photo by Didi01 / Powered by [PR]

 / 忍者ブログ