3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

PHP開発

(PHP)PDOで、SQLiteにアクセスしてみた

PHPで多分初めてSQLiteを使おうと思ってます。 SQLiteドライバから直接クエリを投げてもいいんですが、PDO(PHP Data Object)というDBアクセスの抽象化レイヤがあるみたいで、これを使うとどのデータベースを使っているかを気にすることなく使え、DBを移行…

(PHP)セッションと認証の仕掛け

PHPでログイン画面を使って、ログインし後はセッションを使って認証状態を確認するような、いわゆる普通の会員向けのページを作ってます。 で、久しぶりのPHPでだいぶセッションやら認証やら忘れてました。 とりあえず、テンプレートエンジン Smarty を使っ…

(PHP)print_r 関数で配列情報デバッグする時に見やすくするには

PHPで配列の値をデバッグするときは、print_r関数を使うと思います。 しかし、普通に print_r(配列変数) だけでは結構見にくいです。 1次元配列なら、まだいいんですが、多次元配列になると何が何やら といった感じになってしまいます。(特にPHPはDBからのク…

(PHP)配列に要素があるかどうかの存在チェック

PHPで配列に要素があるかどうかの存在チェックです。 今回はスーパーグローバル変数 $_POST に、'key' という要素があるかどうかのチェックをしたいと思ってます。 この場合、array_key_exists 関数を使うといいようです。 if (array_key_exists('key', $_PO…

(PHP)レンタルサーバで文字コード固定されている時の文字化け回避法

現在作成中のPHPスクリプトを複数のレンタルサーバに配備する予定です。 テンプレートエンジンに、Smarty を使い、テンプレートファイル(HTML),PHPファイル共に文字コードは UTF-8 を使用予定で、その文字コードで記述しています。 で、とあるレンタルサーバ…

(PHP)header関数使ってBasic認証するときのphp.iniの注意点

phpでベーシック認証 - bnoteを参考にし、PHPのheader関数を使って、Basic認証をするコーディングをしてたんですが、どうもうまくいきません。 WWW-Authenticate ヘッダ送信後に認証ダイアログが表示されるべきなのですが、そこをスルーし401のヘッダ送信部…

(PHP)XServerでXOOPSが真っ白に。。。

レンタルサーバのXServer上で動かしてるXOOPSが真っ白になっているということで調査開始しました。 まず、PHPエラーを調べるために、phpMyAdmin で MySQL の xoops_config テーブル conf_name列= debug_mode レコードの conf_value の値を1にします。 これで…

(PHP)携帯電話から取得したGPS位置情報から半径xxKm内のデータを探したい

(PHP)携帯電話でGPS位置情報取得したいの続きです。 最終的にしたいことは、携帯から取得したGPS座標から任意の距離内にある施設(DBに登録)を探したいということです。 DBに置いておく施設情報には、位置情報が入っていないといけないため、緯度、経度を入れ…

(PHP)携帯電話でGPS位置情報取得したい

携帯電話でのGPS位置情報の取得方法です。(ほとんど参考元リンクまんまですが。。) まず、Net_UserAgent_Mobile という PEAR クラスライブラリを使って、キャリア毎にGPS位置情報送信リンクを作成してやります。 今回は Docomo なら FOMA かつGPS機能付き携…

(PHP)echoで変数デバッグしようとするとauで「リクエストされたページは表示できません」って怒られた

PHPでSmartyを使った携帯向けページを表示してたんですが、変数デバッグをしたいと思い、Smarty表示前に echo で変数をauの携帯で表示さすと、「リクエストされたページは表示できません」って怒られれます。 (PCでは普通に表示されます。) で、調べてみると、…

(PHP)XServerにPEARインストール

(PHP)携帯のキャリア振り分け方法で書いたように、PEARのNet_UserAgent_Mobileパッケージをレンタルサーバ上で使う予定です。 しかし、今回使用予定の共用レンタルサーバ(XServer)は PEAR が入っていません。 ということで、共用レンタルサーバへのPEARイン…

(PHP)携帯のキャリア振り分け方法

ユーザーエージェントを使って、各キャリアを判断したいと思ってます。 できれば、GPSのありなしや 3G かどうかなども知りたいと思ってます。(今回の要件が、位置情報取得用のリンクを張るというものなので。。) 手で書く方法もあるんですが、面倒なので Ne…

(PHP)XSSとSQLインジェクション対策

今回 PHP と Smarty でモバイル向けWEBサイト作ってるんですが、やはりセキュリティ対策は講じないといけません。 とりあえず、XSS,SQLインジェクション対策としてサニタイズをしようかと思います。 (まぁモバイル機上ではスクリプト動くことはあんまりない…

(PHP)連想配列の特定のキーがあるかどうかを確認

isset() と array_key_exists() とが使えるようです。 isset() の場合、キーがあっても値が null だと false が返るようなので、 array_key_exists() を使ったほうがいいようです。 詳しくは、参考先を。。。 参考: kotori::log 連想配列のキーチェック そふ…

(PHP)MySQLへの接続時SET NAMESは使わないほうがいい

(cakePHP)MySQL保存時に文字化けしないようにする。でも書いたんですが、MySQL接続時のクライアント文字コードをしていする SET NAMES クエリですが、これはSQLインジェクションにつながる可能性があるらしく、使わないほうがいいらしいです。 変わりに、5.2…

(PHP)Smartyで連想配列をアサインした場合

PHP側からDBで取得した値を2次元連想配列としてアサインしたときに、Smartyテンプレートにどう書くかです。 ドットで(.)で連想配列名(クォーテーションなし)でアクセスできるようです。 ●テンプレート側 {section name=iCnt loop=$inputAry} 1列目:{$inputAr…

(PHP)Smartyインストール,使い方メモ

ひさしびりのPHPです。 Smartyを使って簡単なモバイルサイトを作ることになりました。。 ということで、今まで何回もやったけど時間経つと忘れる Smarty のインストールメモです。 まず、Smarty公式サイトからダウロード。 そして、ダウンロードしたアーカイ…

Windows環境に OPEN PNE 2.14.1をインストールしてみた

新しい案件でオープンソース SNS で定番らしい OPEN PNE を使うかもしれないので、実行環境作ってみました。 まず、OpenPENダウンロードページからダウンロードします。 今回使ったのは安定版となっていた、 OpenPNE Ver.2.14.1 です。 解凍した中の setup/O…

(PHP)ページ遷移ありで違うサーバからファイルをダウンロードさせる方法

(PHP)PHPでファイルをダンロード(アクセス制限付き)とかぶってる内容ありです。 現在下記のような感じでダウンロードページを構築していました。 ダウンロードボタン押下→サンクスページに遷移→ファイル保存ダイアログが開く。 ちょうど、ベクターのダウロー…

(CakePHP)findAllでのレコードの取得順序の指定方法

久しぶりにメンテのため CakePHP 触ったのですが、使い方ほとんど忘れかけてますorz とりあえず、DBの商品テーブルから取得した項目に対して価格順に並べ変えて欲しいという依頼だったので、調べたら、findAllの引数で指定できるんですね。 下記のように第三…

(CakePHP)1.2RC へのバージョンアップ

(cakePHP)コントローラからモデルにアクセスで、1.2RCへのバージョンアップメモを書くと書いたまま忘れてたので、いまさらですが、upしときます。 と、いっても当時(10か月前)の作業メモがちょっとしかなかったので、そこに書いてる範囲内のないようです。 …

(CakePHP)Sanitize::clean($this->data)はバリデート使ってるときはやめた方がいい!?

(CakePHP)$form->textareaはサニタイジングしてくれない!?の追記で $this->data 全体をSanitize::cleanしてましたが、どうやらこれはバリデート使っている時はまずいみたいです。 たとえば、バリデートでメールのチェックを定義し、Sanitize::clean($this->d…

(CakePHP)$form->textareaはサニタイジングしてくれない!?

CakePHP1.2 CakePHPは基本的に $form->input 等でデータを入力するときは htmlspecialchars() でサニタイズしてくれます。 が、なぜかテキストエリアをする $from->textarea() だけはサニタイズしてくれません。 なので、容易にクロスサイトスクリプティング…

(CakePHP)ヘルパーの$htmlAttributesの意味

CakePHPのポケットリファレンス見てるとヘルパーのところでメソッドの引数に「$htmlAttributes=array() 要素の属性」とあるヘルパーが結構あります。 CakePHP ポケットリファレンス たとえば link ヘルパーの定義は下記のようになっていますが、やっぱり htmlA…

(CakePHP)ビューでループや条件分岐がしたい

コントーラー側で findAll で複数のレコードを取得しそれをそのままビューに渡したときにビューでループ処理できないと不便ですよね。 また、これはあんまり好ましくないかもしれませんが、条件分岐もビューでできるようです。 下記のような感じになります。…

(PHP)今のURLを取得したい

現在のURL(ドメインよりも下の)を取得する方法です。 下記の環境変数で行けるみたいです。 $_SERVER['REQUEST_URI'] /download.php みたいな値が帰ってきます。 ちなみに、PHPでURLを取得するによると、実行してるスクリプトのパスを取り出すためには、 $_SE…

(cakePHP)ビューにて、日付を指定したフォーマット表示する

通常のphpだと date("Y年 n月 j日" , $timestamp) というようにタイムスタンプの値をdate関数に渡してやれば指定したフォーマットの文字列が帰ってきます。 で、cakePHPでは日時は文字列で持っているので、 strtotime 関数で一旦日付をタイムスタンプ型に戻…

(CalePHP)日付で初期値を空白にさせる

CakePHP1.2 $fomm->inputヘルパー で'type'=>'date' で日付を入力するコンボボックスを作れますが、デフォルトだと値が本日の日付となってしまいます。 これを選択されていないように空とするには下記のようにすればOKです。 echo $form->input('Member.mem_…

(CakePHP)携帯電話でもセッションを使えるようにする

最近のauやソフトバンクならクッキーを使える(ゲートウェイでクッキーつけてるっぽい?)ので問題ないのですが、厄介なのはドコモです。 ドコモはクッキーも使えませんし、HTMLのほうも、CSSが全く利用できません。 つくづく、独自規格をいくキャリアですね。…

(PHP)携帯電話のキャッシュを無効にする

CakePHPで携帯向けのサイト作っていたのですが、データを登録してもページ更新しない限りは表示内容が更新されません。 調べるとやはり、キャッシュっぽいです。 ということで、携帯電話のキャッシュを無効にする方法です。 こちらを参考にさせてもらいまし…