Category Archives: Php

弊社ではインターンを絶賛大募集しています!

 
154529369581
実践力が身に付く、超実践型インターン!! 
健康管理サービス『カラダノート』運営企業! 
★企画営業、★エンジニア、★デザイナー、★サービス運営担当 
株式会社プラスアール|短期バイト求人なら大学生アルバイト.com

 
Android担当エンジニアのインターンとして採用されれば、筆者である私とペアを組んで仕事することになります。 
その際には、就職活動のときや入社してからも即戦力として役立つ超実用的な9つのスキルを教えることを約束します! 
 
 

・JAVAを教えます

Android端末のアプリは、JAVAというプログラム言語で動作しています。 
JAVAはスマートフォンアプリ以外でも広く使われている言語で、アプリ開発を通じてJAVAを使いこなせるようになれば、幅広い業務に対応できます。 
関連記事) 
Activityにまたがってグローバルに変数などのオブジェクトを共有するには 
AndroidでWebViewアプリを作る[初心者向け] 
 
 

・PHPを教えます

・HTMLを教えます

・MYSQLを教えます

・Linuxを教えます

弊社はソーシャルアプリを多数リリース用しており、1つのサービスで1日の最大利用者数が5万に達したこともあります。 
PHP、HTML、MYSQLなどをマスターすれば、WEBサイトが開発できるようになり、アプリ開発だけでなく、WEBエンジニアとしての道も開けてきます。 
関連記事) 
Amimoto AMI 網元『から』別のサーバーにwordpressを移転するとき1 
AndroidアプリでUNIX timeを取得 
 
 

・FLASHを教えます

FLASHはWEBサイトやフィーチャーフォン(ガラケー)のサイトでよく利用されている技術です。 
ターゲットとする分野によっては今でも重要視され、簡単な動画編集などもできる専門性の高い技術です。 
関連記事) 
FlashLite1.1でアドベンチャーゲームをつくる 第1回 『タイプライター風に1文字ずつ文字を表示しよう シーン構成編』 
 
 

・PowerPointを教えます

企画や営業の際に必須になるのがPowerPointです。大学のレポート作りにも即役立つ、便利なツールです。 
PowerPointの使い方やちょっとしたコツを、実際に使われているドキュメントを通して教えます。 
 
 

・Excelを教えます

「正直言うとエクセルの使い方がよく解らない……」という人も多いと思います。 
実務では非常によく使われていますが、基本的な部分から教えていくので安心してください。 
また、関数やマクロといった、一歩進んだ使い方まで指導します。 
関連記事) 
Excelで書かれた「ふりがな付き文字列」をHTMLのタグに対応した文字列に自動で変換する 
 
 

・ギターを教えます!

実務とは全く関係ありませんが、ご希望とあらばギターを教えます! 
……あ、いらない? 
関連記事) 
『Golden Age vol.1』 開催決定!! 
 
 
 
自分の現状のスキルに全く自信がない、という方でも、まずはお気軽にオフィスに遊びに来てください! 温かくお迎えします! 
お待ちしていますm(_ _)m 

みなさんこんにちはこんばんは。イッシーです:.゚٩(・ิᴗ・ิ๑)۶:.。+゚

androidのトピックになる予定ですがCakeになりました。さて、日本人はtwitterが大好きですね。そんなご時世なのでtwitterと連携したアプリケーションの開発なんてお話もいっぱいあります。では早速実装しましょう。

【ステップ1】

車輪の再発明は面倒なので既存のモジュールをダウンロードして以下のディレクトリ構成となるように配置します。

./vendors/OAuth/OAuth.php
./vendors/OAuth/oauth_consumer.php
./vendors/OAuth/LICENSE.txt

【ステップ2】

コントローラクラスにインポートします。

App::import('Vendor', 'oauth', array('file' => 'OAuth'.DS.'oauth_consumer.php'));

require_once的な感じです。

【ステップ3】

twitterで登録して取得した情報を元にして以下のメソッドをコントローラに準備します。

class HogeController extends AppController {
    /**
     * _createConsumer
     */

    protected function _createConsumer()
    {
        return new OAuth_Consumer(
            'アプリケーションのコンシューマーキー',
            'アプリケーションのコンシューマーシークレット'
        );
    }
}

【ステップ4】

いよいよtwitterの認証を使います。まず、HogeControllerにリダイレクト用のtwitterアクションを作ります。未認証のリクエストトークンをURLにつけてユーザをリダイレクトさせる部分です。

    /**
     * twitter
     * リダイレクトします
     */

    public function twitter()
    {
        $requestToken = $this->_createConsumer()->getRequestToken(
            'https://api.twitter.com/oauth/request_token',// エンドポイントとも言うんでしょうかね
            'http://hogehoge.plusr.co.jp/users/register'// 自分のサイトのユーザ登録用のURL...(a)
        );
        $this->Session->write('request_token', $requestToken);// セッションにリクエストトークンを保存
        $this->redirect('https://api.twitter.com/oauth/authorize?oauth_token=' . $requestToken->key);// twitter側にリダイレクト
    }

【ステップ5】

twitterの(未認証のリクエストトークンをクエリにつけて訪問した)画面でユーザがOKすると(リクエストトークンが認証され)自分のサイト(a)に戻ってきます。自前サーバで(コンシューマ)承認済みのリクエストトークン、コンシューマキー、コンシューマシークレットで生成したサイン値などをパラメータとして送信し、アクセス・トークンの発行をtwitter(https://api.twitter.com/oauth/access_token)に要求します。このトークンを保存してあげればいいわけです。

    /**
     * register
     * 登録
     */

    public function register()
    {
        $consumer = $this->_createConsumer();
        $token    = $consumer->getAccessToken(
            'https://api.twitter.com/oauth/access_token',
            $this->Session->read('request_token')
        );// セッションに保存してあるリクエストトークンをセットしてアクセストークンを要求
        if($token != ''){
            $twitter = $consumer->get(
                $token->key,
                $token->secret,
                'http://twitter.com/account/verify_credentials.json',
                array()
            );// twitter上におけるユーザの情報を取得(optional)
            $twitter = json_decode($twitter, true);
           
            // 登録 or 更新 (内部でどちらか判定して保存)...(b)
            $registeredId = $this->User->register(array(
                'twitter_id'   => $twitter['id_str'],
                'twitter_name' => $twitter['screen_name'],
                'token_key'    => $token->key,// ユーザのトークン
                'token_secret' => $token->secret,// ユーザのシークレット
            ));
           
            $user['User']["token_key"]    = $token->key;
            $user['User']["token_secret"] = $token->secret;
            $this->Auth->login($user);
        }
    }

上述のようにすることでログインができるようになります。

【ステップ6】

あとは上述の(b)でDBに保存したキーとシークレットを元にしてtwitterのAPIを利用します。

情報をポストする場合

以下のようにすることでユーザの代わりに投稿ができます。

$consumer = $this->_createConsumer();
$consumer->post(
    $token_key,// DBに保存したキー
    $token_secret,// DBに保存したシークレット
    'http://api.twitter.com/1/statuses/update.json',
    array(
        'status' => $content
    )
);

情報を取得する場合

以下のようにすることでユーザがフォローしている人を取得できます。

$consumer = $this->_createConsumer();
$friends = $consumer->get(
    $token_key,// DBに保存したキー
    $token_secret,// DBに保存したシークレット
    "http://api.twitter.com/1/statuses/friends.json?id={$id}"// ユーザのtwitter id
);

いかがでしょうか?既存のプラグインを使うことですごく簡単に実装できました。リファレンスを見るとRESTful APIのURLが載ってますので参考にしてみてください。

こんにちは!イッシーです。最近はnode.jsにキュンキュンしてますʕ→ᴥ←ʔ キュンキュン!

最近、空メールの処理をする機会がありました。以前、やったことがあったんですがすっかり忘れてしまっていたのでちゃんとメモっておくことにします。特にキュンキュンするようなトピックスでもないので、サクっと片付けて皆でnodeにキュンキュンする時間を作りましょう!

では、本題に入りますが、メールサーバに何を使用しているかによって設定ファイルの場所と方法が若干違います。

■qmail

以下のコマンドを実行し設定ファイルを編集します。

vi /var/qmail/mailnames/[domain]/[mailaddress]/.qmail

以下のように記述されていると思います。

| true
| /usr/bin/deliverquota ./Maildir

以下のように記述する事でプログラム(スクリプト)に処理を渡すことができます。

| /usr/bin/php /var/www/vhosts/[domain]/subdomains/[sub]/register.php
| true
| /usr/bin/deliverquota ./Maildir

register.phpの内容については後述します。

■postfix

以下のコマンドを実行し設定ファイルを編集します。

vi /etc/aliases

以下の記述を最後尾に加えます。

user: "| /usr/bin/php /var/www/vhosts/[domain]/subdomains/[sub]/register.php"

以下のコマンドを実行し設定を反映させます。

postalias /etc/aliases

以上でメールサーバの設定が完了しました。register.phpでメールの処理をする準備が整いました。

■register.php

まず、以下のコマンドでログファイルを準備します。

touch /var/www/vhosts/[domain]/subdomains/[sub]/log.txt
chmod 0777 /var/www/vhosts/[domain]/subdomains/[sub]/log.txt

ブラウザでデバッグできないので、まず以下のようにログファイルにエラーを出力するように設定しましょう。

$file = '/var/www/vhosts/[domain]/subdomains/[sub]/log.txt';
$date = date('Y-m-d H:i:s');
file_put_contents($file, "\nreceived - {$date}", FILE_APPEND);

ini_set('log_errors', 'On');
ini_set('error_log', $file);

次にメールの文言を取得します。面倒なのでPEARを使いましょう。パスは環境に応じて置き換えてください。

require_once('/usr/share/PEAR/Mail/mimeDecode.php');

$source = file_get_contents("php://stdin");//標準入力からメールデータをゲットだぜ!
if(!$source){
    echo "fail!\n";
    exit();
}

// メールデータをパースする
$decoder   = new Mail_mimeDecode($source);
$structure = $decoder->decode(array(
    'include_bodies' => true,
    'decode_bodies'  => true,
    'decode_headers' => true,
));
$from = mb_convert_encoding(
    mb_decode_mimeheader(
        $structure->headers['from']
    ),
    'UTF-8'
);
if(preg_match('/<([^>]+)>$/', $from, $regs)){
    $from = $regs[1];
}

$from    = strtolower($from);
$title   = mb_convert_encoding($structure->headers['subject'], 'UTF-8', 'ISO-2022-JP');
$context = ($structure->body)? $structure->body : $structure->parts[0]->body;
$context = mb_convert_encoding($context, 'UTF-8', 'ISO-2022-JP');

この後で取得したデータをDBに格納したりします。ログを確認できるようにすることがいかなる場合も大切ですね。(●´ω`●)