スポンサードリンク
無料ブログ作成サービス JUGEM
人気ブログランキング くつろぐ ブログ王
■ Mobile
qrcode
不正アクセス対策手法
以下が有効なのは、.htaccess でのアクセス制限ができるサーバーの場合限定。
※便宜的にここでは半角の「<」が全角の「<」になっているので使う時は直すこと。

1.特定のファイルのブラウザからのアクセスを制限する
例えば.htaccessに
<Files ~ "¥.abc$">
Deny from all
</Files>
と記述すると拡張子が abc のファイルにはブラウザから直接アクセスできなくなる。
(PHPプログラムからは読み込み可能。)
この.htaccess が存在するディレクトリ内で有効。
さらに、そのディレクトリの下層のディレクトリでも有効。

2.制限するファイルの種類を複数指定する
<Files ~ "¥.(gif|jpg|png)$">
Deny from all
</Files>
拡張子が「gif」、「jpg」、「png」のファイルの閲覧を不可に。
複数の場合は「|」で区切る。

3.記号の意味
~:パターンマッチ(決まりごと)
¥:エスケープ文字
*:ワイルドカード
?:1文字ワイルドカード
|:or条件、たとえば(aaa|bbb)では「aaa」または「bbb」のいずれか。
^:ファイル名の先頭であることを指定。<Files ~ "^abc"> と記述すると、ファイル名の先頭が「abc」であるファイルのみが対象。<Files ~ "abc"> と記述すると、ファイル名のどこかに「abc」という文字列が入っていれば対象となる。
$:ファイル名の最後を指定。たとえば<Files ~ "abc$">と記述すると、ファイル名の最後が「abc」となっているファイルのみが対象。「defabc」は対象、「abc.log」や「abcd」は対象外。


[例1]
<Files ~ "^abc?¥.txt$">
Deny from all
</Files>
拡張子が「txt」で先頭が「abc」で始まり続く文字は不問の1文字。

[例2]
<Files ~ "^abc*¥.txt$">
Deny from all
</Files>
拡張子が「txt」で先頭が「abc」で始まり続く文字は不問・文字数も不問。
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
配列要素(特定のkey)が存在するかチェック
値ではなく、配列自体が存在するかの確認。

例えば、$ar_fruits['orange']が存在するかチェックする場合

array_key_exists('orange',$ar_fruits)
「真」なら存在する。

類似の用途で使われることもある「isset」
「isset」は、変数に値がセットされているかどうかを確かめる目的の関数だが、値がnullだと「偽」となる為、
もし、変数の存在確認として使う場合は注意が必要(存在すればnull以外の値を持つという前提時限定)。

参考:指定したデータが配列内(配列の値として)に存在するか確認する関数
in_array
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
日本語利用に関する設定
mbstring.internal_encoding

mbstring.http_input
mbstring.http_output
などの設定について参考になる

phpbook
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
文字列から数値部分のみを取り出す
$str="あい123うえ45678おかき9123456くけ7890こ12さし3456すせ78901そ";

//数値だけ抜き出す・・$ar_suuchiに配列要素としてセットされる
preg_match_all("/[0-9]+/" ,$str,$ar_suuchi);


print_r($ar_suuchi);

Array ( [0] => Array ( [0] => 123 [1] => 45678 [2] => 9123456 [3] => 7890 [4] => 12 [5] => 3456 [6] => 78901 ) )
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
漢字のみかどうかを調べる方法
UTF-8

【方法1】判定がうまくいかない場合あり
if(preg_match("/^[一-龠]+$/u",$str))
{
echo "すべて漢字のみ";
}else{
echo "すべてが漢字ではない";
}

【方法2】文字化けする場合あり・エラー出る場合も
if(preg_match("/^[一-龥朗-鶴]+$/u",$str))
{
echo "すべて漢字のみ";
}else{
echo "すべてが漢字ではない";
}

【方法3】コードを使った判定
if(preg_match("/^(¥xe4[¥xb8-¥xbf][¥x80-¥xbf]|[¥xe5-¥xe9][¥x80-¥xbf][¥x80-¥xbf]|¥xef¥xa4¥xa9|¥xef¥xa7¥x9c|¥xef¥xa8[¥x8e-¥xad])+$/u",$str))
{
echo "すべて漢字のみ";
}else{
echo "すべてが漢字ではない";
}
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
文字列が全てひらがなかどうかをチェック
UTF-8対応

if(preg_match("/^(¥xe3¥x81[¥x81-¥xbf]|¥xe3¥x82[¥x80-¥x9e])+$/",$sstr)){
echo "「ひらがな」のみ";
}else{
echo "「ひらがな」のみではありません";
}
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
文字列が全て全角カタカナかどうかをチェック
UTF-8対応

$sstr = "ゼンカクカタカナ";
if (preg_match("/^(?:¥xE3¥x82[¥xA1-¥xBF]|¥xE3¥x83[¥x80-¥xB6])+$/", $sstr)){
echo "全てが全角カタカナ"."
¥n";
} else {
echo "全てが全角カタカナではない"."
¥n";
}
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
【重要】関数splitはPHP 5.3.0で 非推奨となった
正常動作していると思っていたら・・うわぉ、エラー出まくりだった。

split ― 正規表現により文字列を分割し、配列に格納する
array split ( string $pattern , string $string [, int $limit = -1 ] )
string を、正規表現によって配列に分割

■警告■
split関数はPHP 5.3.0 で 非推奨となりました。 この機能を使用しないことを強く推奨します。

【 split関数の代替案 】
preg_split()…正規表現必要な場合

explode()…正規表現は使えない。
[例]
$sstr = "orange,grape,apple,banana";
$ar_pieces = explode(",", $sstr);
echo $ar_pieces[0]; //orange
echo $ar_pieces[1]; //grape
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
MySQLでの値の加算・減算の方法
[例]フィールドcntに対して
加算
UPDATE tableA SET cnt = cnt+1 WHERE jk = $jk;

減算
UPDATE tableA SET cnt = cnt-1 WHERE jk = $jk;
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
形態素解析
PHPにて使用可能な形態素解析プログラムIgo-php

java版「Igo-Java形態素解析器 (ver 0.4.3)」を、PHPに移植したもの。
辞書は付属しないので、JAVAにてMeCab由来の辞書を生成する。

ダウンロードし、解凍。

辞書の作成は・・
mecab辞書とjarファイルを同一フォルダにし
JAVAでコマンド入力
(JAVAのバージョンアップが必要な場合がある)
java -cp igo-0.4.3.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP

メモリー不足?でエラー時
java -Xmx1024m -cp igo-0.4.3.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
| 愛アース | 備忘録・PHP | comments(0) | trackbacks(0) | pookmark |
4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 103 106 109 112 115 118 121 124 127 130 133 136 139 142 145 148 151 154 157 160 163 166 169 172 175 178 181 184 187 190 193 196 199 202 205 208 211 214 217 220 223 226 229 232 235 238 241 244 247 250 253 256 259 262 265 268 271 274