文字化け対策をとして、PHP.iniの設定をutf8にする
文字化け対策はいくつも存在するが、PHP.iniを修正する方法も対策の一つである。php.iniに以下を記述する。
mbstring.http_input = UTF-8 mbstring.encoding_translation = On mbstring.internal_encoding = UTF-8 mbstring.substitute_character = "?" default_charset = UTF-8参照
覚書:php:配列の先頭と最後を取得 | end,reset
//サンプル配列 $ary=array('neko'=>'猫','yagi'=>'山羊','kani'=>'蟹','same'=>'鮫'); //配列の末尾要素を取得 $last = end($ary);// $last→鮫 //配列の先頭用をを取得 $first = reset($ary):// $first→猫
関数 | 説明 | 例 |
---|---|---|
current() |
現在の要素を返す。配列を値込で宣言した場合、内部インデックスは先頭である。 配列に値を追加した場合、内部インデックスは末尾となる。 |
$v=current($ary); |
each() | 現在の要素とキーを返す。 | $res=each($ary);
$resのダンプ例 array( (int) 1 => '鷲', 'value' => '鷲', (int) 0 => 'wasi', 'key' => 'wasi' ) |
reset() | 先頭の要素を返す。また内部インデックスを先頭にする。 | $v=reset($ary); |
end() | 末尾の要素を返す。また内部インデックスを末尾にする。 | $v=end($ary); |
next() | 次の要素を返す。また内部インデックスを1進める。内部インデックスが末尾である場合falseを返す。 | $v=next($ary); |
prev() | 前の要素を返す。また内部インデックスを1戻す。内部インデックスが先頭である場合falseを返す。 | $v=prev($ary); |
PHPのエラー
そのようなファイル、又はディレクトリはありません
failed to open stream: No such file or directory'ファイルのOPEN処理やinclude関数、require関数、unlink関数などで起こるエラー。ファイルが存在しないときに起こる。
参考サイト
一意なハッシュコードを生成 | 照合用のハッシュに・・・
ユニーク(一意)なハッシュコードを作成します。登録確認にメールを介するシステムなど、照合用のハッシュコードとして使えます。
$hash=md5(uniqid(rand(),1));例:$hash→437af5c55e1f5b697845578e37b74f01
その他の例
$test = uniqid(rand(1, 1000)); // 例→ 51360a6084ec3f02
$test = uniqid(); // 例→ 60a6084ec3f42
サーバー名またはホスト名を取得 | $_SERVER['SERVER_NAME']
$server_name=$_SERVER['SERVER_NAME'];ローカル環境である場合、localhostが取得される。
ローカル環境である場合の処理(サーバー名にlocalhostが含まれる場合)
// ローカル環境である場合の処理(サーバー名にlocalhostが含まれる場合) if(strpos($_SERVER['SERVER_NAME'], 'localhost') !== false){ echo('ローカル環境'); }
// ローカル環境ではない場合 if(strpos($_SERVER['SERVER_NAME'], 'localhost') === false){ echo('ローカル環境ではない'); }
Proxyサーバー経由のアクセス元IPアドレスを取得する
$_SERVERでProxyサーバーに関する情報を取得できる。$_SERVERのREMOTE_ADDRにプロキシサーバーのIPアドレスが入る。 プロキシサーバーを使用していないのであるならアクセス元のIPアドレスが入っている。
多くのプロキシサーバソフトはHTTP_X_FORWARDED_FORとHTTP_CLIENT_IPにアクセス元のIPアドレスをセットしている。
HTTP_X_FORWARDED_FORはあくまで正規のプロキシサーバー用なので、 攻撃的なプロキシについて考える場合、$_SERVERの情報をまるごとログとして保存したほうが良いかもしれない。
Proxyサーバーに関する情報
コード | 説明 |
---|---|
$_SERVER['REMOTE_ADDR'] | ProxyサーバーのIPアドレス。プロキシサーバーを使用していない場合はアクセス元IPアドレスが取得できる。 |
$_SERVER['SERVER_ADDR'] | WebサーバーのIPアドレス |
$_SERVER['HTTP_X_FORWARDED_FOR'] | 多くのプロキシサーバーソフトは、ここにアクセス元のIPアドレスをセットする。webProxyの場合は取得できない。 |
$_SERVER['HTTP_SP_HOST'] | |
$_SERVER['HTTP_VIA'] | |
$_SERVER['HTTP_CLIENT_IP'] | 一部のプロキシサーバーソフトはこちらを利用する。偽装されることもあるらしい。 |
$_SERVER['HTTP_FORWARDED'] | |
$_SERVER['HTTP_FROM'] |
参考サイト一覧
プロキシサーバーが設定している値を取得する
多くのプロキシサーバーが設定している値を取得する。ただし合法的なプロキシサーバーのみ。
getValueByProxy()関数のソースコード
サンプル
参考サイト
ユーザーエージェントの取得
ユーザーエージェントはアクセス元のブラウザや端末情報である。PC、スマホ、モバイルで振り分けに利用できる。
ユーザーエージェントは偽装できるようなので過信は禁物である。
最大文字数は512文字とのこと。
ソースコード
$user_agent = $_SERVER['HTTP_USER_AGENT'];
取得値の例
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
ob_startとob_end_cleanによる出力バッファのクリア
「ob_start」と「ob_end_clean」に囲まれた範囲は出力されなくなります。検証
source code
<?php echo 'ねこ<br>'; ob_start(); echo 'やぎ<br>';←出力されない ob_end_clean(); echo 'かに<br>'; ?>
出力
ねこ
かに
かに
サンプル ドキュメント
文字の一致率 | レーベンシュタイン距離 | similar_text
2つの類似する文字列がどのくらい一致しているか、「similar_text」関数により一致率を算出できます。sorce code
$str1="お問い合わせ番号"; $str2="問合番号"; $percent=null;//一致率 similar_text($str1,$str2,$percent);//一致率ポインタを渡す。 echo $percent;// → 66.67...完全の一致の場合、一致率($percent)は100になります。
サンプル
文字の一致率測定ツール | similar_text