どうも、isamです。
前回のサニタイズに引き続き、今回はフォームの入力値の入力チェックを簡潔化する関数を紹介します。
使い方はブロックを参照!
/**
* フォームの値をルールに従い走査しエラーがあった場合、エラーキー配列を返す
*
* <code>
* $key_func = array(
* 'id' => array("is_numeric" => array("%%_val_%%", array('error' => "数字以外の文字が入力されています"))),
* 'pid' => array("is_numeric" => array("%%_val_%%", array('error' => "数字以外の文字が入力されています")))
* );
*
* $error = queryValidateCheck($_REQUEST, $key_func);
* </code>
*
* @param $request [...]
こんにちわ、isamです。
今日はフォームの値をサニタイズする自作関数の紹介!
使い方はブロックを参照!
/**
* 配列を再帰的にサニタイズフィルタリング
*
* <code>
* $filter_func = array(
* 'trim' => array("%%_val_%%"),
* 'htmlspecialchars' => array("%%_val_%%", ENTQUTOES),
* 'str_replace' => array("\0", "", "%%_val_%%")
* );
*
* $key_func = array(
* 'id' => array("intval" => array("%%_val_%%")),
* 'pid' => array("intval" => array("%%_val_%%"))
* );
*
[...]
こんにちわ!isamです。
今日のエントリは忘れっぽい自分へのメモです。
PHPインストール(ソース)編(Fedora, CentOS)
PHPを落としてきていると仮定して話を進めます。
まず先にPHPのインストールと実行に必要な各種ライブラリをyumで落とします。
[]# yum -y install flex libxml2-devel
[]# yum -y install zlib-devel libpng-devel
[]# yum -y install libjpeg-devel
PHPのインストールを開始します。
[/usr/local/src/php-5.x.x]# ./configure –prefix=DIR \
> –enable-mbstring –enable-ftp \
> –with-apxs2=DIR/bin/apxs \
> –with-gd –with-zlib –with-jpeg-dir \
> –with-pgsql=DIR –with-mysql=DIR \
> –with-pear=DIR
[/usr/local/src/php-5.x.x]# make && make install
以上でPHPのインストールは完了!
どうもisamです。
今日はjavascriptな気分って言う事で自分用のユーティリティライブラリを作ってみます。
いい悪いは取り敢えず別にして簡潔にかけるものというテーマで作っていきます。
ではコード!
var $ = {
id : function(id) {
return document.getElementById(id);
},
name : function(name) {
return document.getElementsByName(name);
},
tag : function(tag) {
return document.getElementsByTagName(tag);
},
event : function(obj, func, type) {
if (obj.addEventListener) {
//Netscape等
obj.addEventListener(type, func, false);
} else if (obj.attachEvent) {
//IE
obj.attachEvent(‘on’+type, func);
}
},
create : function(tag, obj, text) {
var t = document.createElement(tag);
for(var o in obj) {
t.setAttribute(o, obj[o]);
}
if(text != “”) {
t.appendChild(document.createTextNode(text));
}
return t;
},
add : function(obj, child) {
obj.appendChild(child);
}
}
使い方はこんな感じ
<form name="test_ie" action="./" method="get">
<select name="pull">
<option [...]
久々の更新!
どうもisamです。仕事場が変わって忙しくしておりました。。。
やっと落ち着いてきたのでできるだけ更新するように頑張ります。
それでは今日はPHPネタでいこうと思います。
今日のお題はこちら!
■Formの処理を楽にする関数を作成してみよう!
PHPだと$_GETや$_POSTや$_REQUESTのグローバル変数からFormの値を取得します。
その際、一旦バリデートして変数に入れたりすると思いますが、毎回trimだhtmlspecialcharsだと連続で書いたりするのは面倒だと思います。
また面倒くさくてバリデートなしでグローバル変数をそのまま使ったりなどあるかと思います。
そんな時に関数を作っておくと楽チンになります。
それでは早速コードにいってみましょう!
<?php
/**
* Formの値をバリデートして取得する
*
* @param string $key 取得したいキー
* @param array $func 適用したい関数の関数名配列
* @param string $type どのグローバル変数を使うか (g=$_GET:p=$_POST:r=$_REQUEST)
* @return string $val キーの値
*/
function param($key, $func, $type) {
switch($type) {
case "g" :
if(isset($_GET[$key])) {
$val = $_GET[$key];
}else{
return '';
}
break;
case "p" :
if(isset($_POST)) {
$val = $_POST[$key];
}else{
return '';
}
break;
case "r" :
default:
if(isset($_REQUEST[$key])) {
$val = $_REQUEST[$key];
}else{
return '';
}
break;
}
if(is_array($func)) {
foreach($func as $function) {
if(function_exists($function)) {
$val = $function($val);
}
}
}else{
if(function_exists($function)) {
$val = $function($val);
}
}
return $val;
}
使い方は至って簡単で取得したいキーとバリデート用関数名とグローバル変数の種類を指定するだけ!
<?php
//URLのクエリが?str=<html><body></body></html>%0D%0Aだった場合で
//エスケープと末尾の空白を削除したい場合
$str = param("str", array("trim", "htmlspecialchars", "g"));
echo $str;
//ouput:
//<html><body></body></html>
ユーザ定義関数も指定できますので色んなバリデートが可能です。
これを利用してセキュリティを強くしましょう!
ではまた!
どうも、お久しぶりのisamです。
今日は今仕事でやっているVBのお話です。
今までPHPとかPerlで例外処理とかあんましていないんですが(やれよっ!)、VBをやるようになって
かなり使うので自分用にメモ。
ファイルを開く時にファイルがない場合やメモリ不足の時には例外がスローされます。
ファイルがない場合はFileNotFoundException
メモリ不足の場合はOutOfMemoryException
それ意外に例外にもありますが、割愛します。
これらの例外を捕捉するために
Try~Catch~Finally~End Try
Try~Using~End Using~Catch~End Try
構文を使います。
まずTry~Catch~Finally~End Tryの例
Imports System
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
[...]
どうも、isamです。
PHPとjqueryを使ったwebノート「Sticky notes」をダウンロードしてみました。
次のURLよりzipファイルがダウンロードできるのでダウンロードして解凍してFTPでサーバの任意の箇所にアップロードしてください。
ダウンロードURL:本家 http://demo.tutorialzine.com/2010/01/sticky-notes-ajax-php-jquery/demo.zip
編集機能追加バージョンURL:http://php.iklv.net/note/demo.zip
設置が終わったらデータベースを作成してdemoフォルダに入っているtable.sqlのSQL文を使ってデータベースにテーブルを作成してください。文字コードはUTF-8で。
あとはconnect.phpにデータベースの情報をいれて再アップし直せば使えます。
編集機能追加バージョンはノートをダブルクリックすると編集できるようになっています。あとは編集して更新ボタンを押せばOKです。
本家のscript.jsとadd_note.htmlを変更しています。また編集機能用のサーバ側のファイル、update_post.phpを追加しています。
編集機能がついたdemoはこちらから
マニュアルは本家のを(英語)みてみてください。
時間があったらデリートも実装してみようかな!
ではまた!
お久しぶりのisamです。
今日はSmarty用のテンプレート関数プラグインを紹介します。
今回はここにコードはのせませんが下記リンクよりコードを公開していますのでよかったら見てみてください。
アップデートは随時していきます。よろしければ感想や意見頂けるとありがたいです。
SmartyからTwitterの自分のお友達のタイムラインを簡単に取得するプラグイン
Google Code for twitter-by-php
SmartyからTwitterの自分のタイムラインを簡単に取得するプラグイン
Google Code for twitter-by-php
各プラグインの使い方はこちらに書いています。
ではまた!
また長らく間があがってしまいましたが、外国為替のレートをつぶやくtwitter_botを作って見たのでご紹介します。
followは下記より。
follow by @currency_rater
wordpressのプラグインのCurrencyTickerを解析して得たAPIのURLをcurlでたたきに行って
結果をtwitterのAPIを介してつぶやきます。為替APIの都合上15分間隔更新にしています。
※一分おきに取得しに行くとアクセス拒否されるのでもしCRONなど動かす場合は最低でも15分間隔にしてください。
以下コードです。
#!/usr/bin/php
<?php
$url = "http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=%s&ToCurrency=%s";
$fromCode = array("USD", "EUR", "CNY", "KRW", "TWD");
$toCode = "JPY";
$running=null;
$ch = array();
$chUrl = array();
$chBody = array();
$mh = curl_multi_init();
$push = array();
foreach($fromCode as $code) {
$chUrl[$code] = sprintf($url, $code, $toCode);
$ch[$code] = curl_init(trim($chUrl[$code]));
curl_setopt($ch[$code], CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch[$code], CURLOPT_HTTPGET, TRUE);
curl_setopt($ch[$code], CURLOPT_TIMEOUT, 10);
curl_multi_add_handle($mh,$ch[$code]);
}
do {
curl_multi_exec($mh,$running);
} while ($running > 0);
foreach($fromCode as $code) {
$chBody[$code] = trim(strip_tags(curl_multi_getcontent($ch[$code])));
curl_multi_remove_handle($mh,$ch[$code]);
curl_close($ch[$code]);
}
curl_multi_close($mh);
foreach($chBody as $key => $val) {
$code = $key;
$rate = strlen($val) < 1 ? "" : (float)($val);
if($rate == "") {
$push[$key] = "-";
continue;
}
switch($code) {
case "KRW" :
$push[$key] = round($rate, 4);
break;
default :
$push[$key] = round($rate,2);
break;
}
}
$data = "";
$update_time = date("Y-m-d H:i:s");
foreach($push as $key => $val) {
$data .= "JPY > ". $key ." : ". $val . " ";
}
$data .= " generate_time => " . $update_time;
$url = "http://twitter.com/statuses/update.xml?";
$username = "username";
$password = "password";
$params = "status=". rawurlencode($data." #followmeJP");
$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array(
"method" => "POST",
"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
)
)));
自分用に作成した場合は、$data = "";以下を修正してください。
こんばんわ。isamです。
長らく更新できませんでした。
仕事で外国為替の両替システムを作っていていっぱいいっぱいになっていました。
twitterにも浮気をしていました。
もし良かったらフォローしてください。笑
_isam_
次回は外貨為替のレートを表示するスクリプトを紹介します。
wordpressのプラグインでもあるんですが(wp currency ticker)単体で動くものを紹介します。
またダウンロードできるようにしておきます。
それではまた!