« 2月 2010 3月 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

  • 携帯サイトの簡単ログイン
  • 2010.01.23
  • ドコモの場合は、サイトタグにutn属性をつけると、固体識別番号を送信してもらえます。
    utn属性付加の記述例


    <a href=”URL” utn>
    <form method=”メソッド” action=”URL” utn>


    auやソフトバンクはユーザが識別番号送出を許可していてばタグの追加は必要なし。
    但し、ソフトバンクは初期設定で識別番号を「通知しない」に設定されているので、事前に設定変更の必要があります。


    取得方法は以下の通りなので、事前にキャリアを判別し、それぞれのキャリア用の処理を行えばOK :mrgreen:


    //docomo

    $ua = $_SERVER['HTTP_USER_AGENT'];

    $id = (preg_match(’/ser(\w{11,15})/’, $ua, $matches)) ? $matches[1] : ”;


    //AU

    $id = isset($_SERVER['HTTP_X_UP_SUBNO']) ? $_SERVER['HTTP_X_UP_SUBNO'] : ”;


    //Softbank

    $id = isset($_SERVER['HTTP_X_JPHONE_UID']) ? $_SERVER['HTTP_X_JPHONE_UID'] : ”;


    これで$idに個体識別番号がセットされるので、会員DBに既に登録されている個体識別番号とつきあわせてユーザー認証を行います。

  • 空メールでPHPを起動する
  • 2010.01.21
  • 空メール処理を作成したので、メモします。


    1.空メール送信用メールアドレス作成


    2.受信メールボックスにメールが来たらPHPを起動するため、.qmailを編集。
    使えるネットの場合、/var/qmail/mailnames/自分のドメイン/追加したメールアカウント/に.qmailがあるので、SSHで接続し、該当ディレクトリに移動してmoreコマンドなどで内容を表示してみると


    [root@*********]# more .qmail
    | true
    | /usr/bin/deliverquota ./Maildir


    となっているので、1行目に以下の行を追加。


    | /usr/bin/php -d safe_mode=off /var/www/vhosts/自分のドメイン/private/mail.php 
    ※この例では、privateディレクトリのmail.phpを起動する
    (セキュリティの為、ウェブでアクセス出来ないディレクトリに保存)
    privateディレクトリのパーミッションは705


    3.mail.phpに処理を記述


    と、このような処理になるのだが、動かなくて大分苦労しました。
    結局privateディレクトリのパーミッションが原因だと分かり無事解決 :emoji92:

【この記事のタグ】
, ,
  • 閏年(うるう年)かを判定する
  • 2009.12.19
  • 日付処理を行う場合、閏年(一年が366日ある年、2月29日のある年)があるため、閏年かどうかを考慮しなければならない場合があります。
    閏年は以下の定義のようなので、これさえ分かっていれば処理は簡単です。


    1.4で割り切れる年
    2.100で割り切れる年は、閏年ではない
    3.400で割り切れる

    これを元に、PHP を使って書いてみると・・・
    ※$yearは判定する年


    <?php
    if (($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0) {
    print ‘閏年’;
    } else {
    print ‘閏年ではない’;
    }
    ?>

【この記事のタグ】
  • 複数のRSSを統合し最新情報を取得する
  • 2009.11.19
  • 複数のサイトのRSSを受信し、その中の記事を日付の新しい順に何件か表示する場合、最初にRSSを一つにまとめるか、個別にRSSを受信し、その後統合、ソートとするかだと思いますが、今回はPHPで複数RSSを表示するプログラムを後者の方法で行なってみました。


    PHP用のRSS パーサにはMagpieRSSというものを使用しました。


    以下、プログラムソースです。
    ※カッコが全角になっているので、そのままコピペして使用しないでください。


    <?
    require_once(’./includes/magpierss/rss_fetch.inc’);  //MagpieRSSロード
    define(’MAGPIE_OUTPUT_ENCODING’, ‘UTF-8′);

    //読み込むRSSを配列に格納
    $rssUrl=array(”http://www.abc1.com/feed“,
      ”http://www.abc2.com/feed.rdf“,
      ”http://www.abc3.com/index.rdf“,
      ”http://www.abc4.com/rss.xml
     );

    //表示する記事の件数
    $num=5;

    $HTMLbody =”";

    foreach ($rssUrl as $no => $rss_url) {
     if ($rss_url != ”) {
      //URLからRSSを取得
      $rss   = @fetch_rss($rss_url);
      if ($rss != NULL) {
       for ($i=0; $i<count($rss->items); $i++) {
        //サイトのタイトルをitemsに格納
        $rss->items[$i]["site_title"] = $rss->channel["title"];
       }
       //itemsだけ別配列に格納
       $rssItemsArray[] = $rss->items;
      }
     }
    }

    $concatArray = array();
    if (is_array($rssItemsArray)) {
     for($i=0;$i<count($rssItemsArray);$i++){
      //配列を統合する
      $concatArray = array_merge($concatArray,$rssItemsArray[$i]);
     }

     foreach ($concatArray as $no => $values) {
      $date=$values["date_timestamp"];
      $title=$values["title"];
      $link=$values["link"];
      $site_title=$values["site_title"];
      //記事ごとに必要な項目を抽出
      $rssArray[]=array($date, $title, $link, $site_title);
     }

     //配列をユーザー定義関数でソート
     if ($rssArray) { usort($rssArray, ‘cmp’); }
     if (count($rssArray) > $num) {
      $count=$num;
     } else {
      $count=count($rssArray);
     }

     //必要な件数分だけHTML整形
     for ($i=0; $i<$count; $i++) {
      $date=date(”Y-m-d H:i”,$rssArray[$i][0]);
      $link=$rssArray[$i][2];
      $title=$rssArray[$i][1];
      $site_title=$rssArray[$i][3];
      $HTMLbody .=$site_title.”【”.$date.”】<a href=\”".$link.”\” target=\”_blank\”>”.$title.”</a><br />\n”;
     }
     
    }

     //=======================================================
     // 多次元配列ソート用比較関数
     // この場合は配列の1番目の項目を降順にソート
     //=======================================================
     function cmp($a, $b) {
      if ($a[0] == $b[0]) return 0;
      return ($a[0] > $b[0]) ? -1 : 1;
     }
    ?>
    <?php echo ‘<?xml version=”1.0″ encoding=”UTF-8″ ?>’.”\n” ?>
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
      “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
    <html xmlns=”http://www.w3.org/1999/xhtml”>
    <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
    <title>test</title>
    </head>
    <body>
    <?= $HTMLbody ?>
    </body>
    </html>


    複数のRSSを処理すると、かなり遅いです。
    試しに、perlでRSSを統合するプログラムも制作しましたが、こちらもそれなりのお時間がかかりました・・・ :shock:


    改善策をご存知の方は、是非コメントください。


    ホームページ制作・WEBシステム開発

【この記事のタグ】
, ,
Page Top