PHP

情報


役立った書籍


PHPによるWebアプリケーションスーパーサンプル 第2版

ウェブ


画面遷移なしでファイルアップロードする方法
http://groundwalker.com/blog/2007/02/file_uploader_and_safari.html
ファイル・アップロードの進行状況を追跡する方法
http://www.ibm.com/developerworks/jp/opensource/library/os-php-v525/
http://zilcaroy.blogdns.org/index.php?e=58
http://blog.enjoitech.jp/detail.php?aid=148
http://cl.pocari.org/2008-04.html

バッチ処理
http://d.hatena.ne.jp/sourcehoge/20060205/1139144533
マルチスレッド
http://techblog.ecstudio.jp/tech-tips/php-multi.html

すべての漢字を取り出す
http://phpspot.org/blog/archives/2005/11/php_17.html

検索エンジンを自作する
http://gihyo.jp/dev/serial/01/make-findspot

オープンソース


クローラークラス
http://sourceforge.net/projects/phpcrawl/

ソース


  • 逆引き
    • POST値をまとめて変数に
    • POST値まとめてエスケープ
    • 値の暗号化
  • Fucntion
    • オートリンク
    • 画像を生成(GDライブラリ)
    • ファイル全て読み込み
    • 新規ファイルの作成
    • ファイルの最後に追記
    • ファイルの最初に追記


逆引き


POST値をまとめて変数に

■パターン1
extract($_POST);

■パターン2
if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach($_POST as $k => $v){
$v = htmlspecialchars($v);
$$k = $v;
}
}

POST値まとめてエスケープ

foreach($_POST as $k => $v){

if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}

値の暗号化

■一方向(変換元はわからない)
crypt()
md5()
sha1()

■双方向
base64エンコードの利用

function my_base64_encode($str, $cnt = 2) {
for ($i = 0; $i < $cnt; $i++) {
$str = base64_encode($str);
}
return $str;
}

function my_base64_decode($str, $cnt = 2) {
for ($i = 0; $i < $cnt; $i++) {
$str = base64_decode($str);
}
return $str;
}

Functions


オートリンク

function autolink($mes){
return preg_replace(
"/(https?)(:\/\/[\w\+\$\;\?\-\/\.%,!#~*:@&=]+)/",
"<a href=\"$0\" target=\"_blank\">$0</a>", $mes );
}

画像を生成(GDライブラリ)

function createImage($create_img,$source_img,$img_width){

list($c_width, $c_height, $c_type, $c_attr) = getimagesize($source_img);
$ratio = $img_width/$c_width;
$finfo = pathinfo($create_img);
$ext = $finfo["extension"];

$jpg = array("jpg",jpeg,JPEG,JPG);
$png = array(png,PNG);
$gif = array(gif,GIF);

if(in_array($ext, $jpg)){
$src_im = ImageCreateFromJPEG($source_img);
}else if(in_array($ext, $png)){
$src_im = ImageCreateFromPNG($source_img);
}else if(in_array($ext, $gif)){
$src_im = ImageCreateFromGIF($source_img);
}else{
return false;
}
$dst_im = imagecreatetruecolor($img_width, $c_height * $ratio);
imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $img_width, $c_height * $ratio, $c_width, $c_height);

if(in_array($ext, $jpg)){
$im = ImageJPEG($dst_im, $create_img);
}else if(in_array($ext, $png)){
$im = ImagePNG($dst_im, $create_img);
}else if(in_array($ext, $gif)){
$im = ImageGIF($dst_im, $create_img);
}
ImageDestroy($dst_im);
ImageDestroy($src_im);

return $im;
}

ファイル全て読み込み

function readAllFile($fpath){
if($file = @fopen($fpath,"r")){
flock($file, LOCK_SH);
$string = @fread($file,filesize($fpath));
flock($file, LOCK_UN);
fclose($file);
return $string;
}
return false;
}

新規ファイルの作成

function createNewFile($nCreateFileName,$nInputString){
if($file = fopen($nCreateFileName, "w")){
flock($file, LOCK_EX);
fputs($file, $nInputString);
flock($file, LOCK_UN);
fclose($file);
return true;
}else{
return false;
}
}

ファイルの最後に追記

function addPostFile($nAddLogFile,$nInputString){
if($file = fopen($nAddLogFile, "a")){
flock($file, LOCK_EX);
fputs($file, $nInputString);
flock($file, LOCK_UN);
fclose($file);
return true;
}else{
return false;
}
}

ファイルの最初に追記

function addHeadFile($nAddLogFile,$nInputString){
$lines = file($logfile);

if($file = @fopen($nAddLogFile,"w")){
flock($file, LOCK_EX);
fputs($file, $nInputString));
for($i=0; $i<count($lines); $i++)
fputs($file, $lines[$i]);
flock($file, LOCK_UN);
fclose($file);
return true;
}else{
return false;
}
}