Hi-farm blog

ActionScript 3.0 , AIR , FLEXからCocoa, OpenGL

Archive for the ‘PHP’ Category

先日添付ファイルを扱うメールフォームの仕事があったのですが、その時に気になった事があったので残しておきます。

殆どこちらのサイトに書いている通りなんですが。。。すみません。
iPhone Safariから画像を投稿する方法 – Shin x blog

まず、PCではフォームのファイルアップロード機能

を使っていたのですが、PCではもちろんOKでも、iPhoneでは使う事はできません。じゃあどうするの?ってなったのですが、
これはまあ知っていたのですが、対策方法について、mailto: とか使えば普通に添付できるかというと、そんな事はありません。iPhoneのmail.appでは添付する事ができません。

ではどうするか?というと、sms経由で送信する方法です。
smsを起動するには、mailto:のかわりにsms:にするだけです。

以下、サンプルをおいておきますので実際に試してみて下さい。

通常のフォーム
mailto:による送信方法(宛先はダミーです)
xxxx@xxx.comへメールを送る
smsで送信する(宛先はダミーです)
xxxx@xxx.comへメールを送る
  • 0 Comments
  • Filed under: PHP, iPhone
  • PHP5のこと。

    PHP4のサポートが終了してから、結構な時間が経ち、レンタルサーバーでもPHP4を打ち切るところが出てきましたが、

    変更点の一つが、

    php.iniのallow_url_fopenがデフォルトではoffであることです。

    ってことは、http経由でごにょごにょしている人には、file関数とか、fopenとかに問題がでる恐れがあります。

    それを回避するには、様々な方法がありますが、一つには、socket通信する、という方法があります。

    使い方はこんなふうです。要はPHPでtelnetしてる感覚ですね。

    ちなみに、以下の例では、80番ポートと決めうちしてアクセスしているので、サイトによっては別途ポートを指定する必要があります。

     

    $domain = "www.hi-farm.net"; // 対象ドメイン
    
    $file = "sample.php"; // URL以下のパス(GETも使えます)
    
    $fp = fsockopen($domain, 80, $errno, $errstr, 4); // 80番ポートに接続
    
    $out = "GET /{$file} HTTP/1.1\r\n"; 
    
    $out .= "Host: {$domain}\r\n";
    
    $out .= "Connection: Close\r\n\r\n";
    
     
    
    fwrite($fp, $out);
    
    stream_set_timeout($fp, 4);
    
     
    
    while(!feof($fp))
    
    {
    
    	$file_data0 .= fget($fp);
    
    }
    
    fclose($fp);
    
     
    
    セキュリティうんぬんはわかるので、PHP側での対応はわかるけど、php.iniでしか変えれないのよね。。。
    
    レンタルサーバーやっている業者さんは、単に「変更されますので準備しろ」だけでなくて、テストする環境を用意してくれよ
    
    って思います。。。
    
     
    
    ぐちってしまった。。。
    
  • 0 Comments
  • Filed under: PHP
  • PearのFile/Archive.phpをMODxで

    ちょっと料理名っぽいですが。

    MODxをちょい前から使っているのですが、このMODxは動的にサイトを見せることも可能だし、静的HTMLのエクスポートも可能。

    で、今回は、MODxはサイトのジェネレータとして使う事を考え、エクスポートしたファイルをダウンロードできる仕組みを作成。

    簡単に言えば、

    1. managerから、『サイトのエクスポート』
    2. zipダウンロードするmoduleを作成し、指定階層以下のフォルダをzipにしてダウンロード

    という流れです。

    で、2のところですが、pearのFile/Archive.phpを使いました。

    使い方としては、

    前提としては、$tardir:zipファイルを作成するフォルダ

    File_Archive::extract(
    File_Archive::read( $tardir.’export/’ ),
    File_Archive::toArchive(’Files.zip’, File_Archive::toOutput() )
    );

    でいけるはずなのですが、zipを展開できなかった。(Binaryで見てみると、圧縮しているというよりは、ファイルの頭がHTML宣言だったので、きっと圧縮に失敗している)
    なので、一度サーバでファイルを作成し、ダウンロードしてからzipファイルを削除 という流れに変更。
    変更後がこれ。

    File_Archive::extract(
    File_Archive::read( $tardir.’export/’ ),
    File_Archive::toArchive($tardir.’Files.zip’, File_Archive::toFiles() )
    );

    $params = array(
    ‘file’ => $tardir.’Files.zip’,
    ‘contenttype’ => ‘application/zip’,
    ‘contentdisposition’ => array(HTTP_DOWNLOAD_ATTACHMENT, ‘Files.zip’),
    );

    $ret = HTTP_Download::staticSend($params);

    unlink($tardir.’Files.zip’);

    これで無事zipファイルをダウンロードできました。

    2008年2月13日21:28

  • 0 Comments
  • Filed under: MODx, PHP
  • 今月はオフィスを離れて仕事をする事が増えるだろう、ということで、メインマシンである、MacBookで移動中も開発すべく、ローカルにMAMPをインストール。

    で、PHPMyAdminの画面を開いても、エラーがでる。

    『#2002 – サーバが応答しません (あるいはローカルの MySQL サーバのソケットが正しく設定されていません) 』

    ってね。

    うーん。。。。。とうなってると、原因はどうやら、PHPMyAdminで使うMySQLの設定が違ってたみたい。

    /Applications/MAMP/bin/phpMyAdmin/config.inc.phpのこの箇所をこう記述。
    $cfg['Servers'][$i]['extension'] = ‘mysqli’; 

    無事動く。

    当たり前ですね。MySQLのバージョンが5.0.41なんだから。

    ってかさいっしょっからその設定に変えておいてよ。

    2008年2月3日23:36

  • 0 Comments
  • Filed under: MySQL, PHP, apache
  • PHPでの文字化け

    PHPでの文字化けに対して、詳しい情報を書いているBLOGを見つけました。
    http://hain.jp/index.php/tech-j/2007/02/13/p125

    本文に書いている、

    文字化けが何かというのはご存じのとおり。
    PHPにおいて文字化けが起こる理由は

    勘違い・思いこみ
    これ以外に存在しない。

    という言葉が衝撃的であったが、php.iniのmbstring.internal_encodingが実は内部エンコードではない、ということなどを詳しく説明してくれている。

    初心者向けの書籍などは、詳しく書きすぎても混乱するだけなので省略したり、少々間違っててもわかりやすく記述するのはわかるのだが、internal_encodingなのに『内部エンコード』ではない、というのはちょっと。。。

    他にも、
    自動変換を利用しない
    ということや、php.iniにおいて設定すべき項目、設定すべきではない項目を書いてくれていて、とてもわかりやすかったです。

    2007年9月11日19:36

  • 0 Comments
  • Filed under: PHP