PHP
基礎知識
文字列の結合
| <?php $a = "ポアソン" ; $b = "分布" ; // $aと$bを結合する $c = $a . $b; // 結果の出力 print($c); ?> |
文字列を結合するには.(ドット)を用います。文字列の結合は複数でも可能です。
| 出力結果 ポアソン分布 |
関数定義
関数はfunction 関数名(引数){記述文}で定義できます。
返り値の型がない代わりにfunctionがついたC言語の関数と考えれば特に難しくはありません。
関数の例は以下のとおりです。
関数の例は以下のとおりです。
| <?php // 文字列の出力関数 function Disp($string) { print($string); } // 文字列を返す関数 function GetString() { $string = "GetStringの文字列" return $string; } ?> |
条件文のtrueとfalseの省略記述
システムにより依存はありますが、基本的にtrue = 0以外, false = 0です。
if文などでよく if($isExist){...} などと変数名(ここでいう$isExist)のみの記述があります。
これは、$isExistがtrueならば実行すると言う意味です。
この意味はwhile文の無限ループを思い出してもらえれば簡単だと思います。
無限ループは、while(1){...} のように記述します。別に条件文が1である必要はありません。0以外の数値であればよいのです。
つまり、これはwhile(true)を意味しています。
ですので、$isExistがtrueの場合、if($isExist){...} は if(true){...}と解釈されます。
if文などでよく if($isExist){...} などと変数名(ここでいう$isExist)のみの記述があります。
これは、$isExistがtrueならば実行すると言う意味です。
この意味はwhile文の無限ループを思い出してもらえれば簡単だと思います。
無限ループは、while(1){...} のように記述します。別に条件文が1である必要はありません。0以外の数値であればよいのです。
つまり、これはwhile(true)を意味しています。
ですので、$isExistがtrueの場合、if($isExist){...} は if(true){...}と解釈されます。
MDB2
データベースへの接続
| <?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2::connect( "mysql://ユーザ名:パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR::isError($mdb2)) { die($mdb2->getMessage()); } // データベースへの接続を切る $mdb2->disconnect(); ?> |
データの取得
| <?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2::connect( "mysql://ユーザ名:パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR::isError($mdb2)) { die($mdb2->getMessage()); } // クエリを実行 $res =& $mdb2->query( "SELECT * FROM データベース名" ); // エラー処理 if(PEAR::isError($res)) { die($res->getMessage()); } // テーブルの最初の要素を出力する while( ($row = $res->fetchRow()) ) { print($row[0]. "<br>" ); } // データベースへの接続を切る $mdb2->disconnect(); ?> |
テーブルの要素を求めるにはqueryを使用します。
$res = $mdb2->query("SELECT 必要な情報を取り出す記述");
上記の例では全ての要素を取り出しています。
また、while文では1行ずつ要素を取り出し、1列目の要素を出力しています。
この配列の表記法($row[0],$row[4]等)の他に、文字列による表記法も存在します。
これを連想配列といいます($row["angle"], $row["apple"]等)。
また、while文では1行ずつ要素を取り出し、1列目の要素を出力しています。
この配列の表記法($row[0],$row[4]等)の他に、文字列による表記法も存在します。
これを連想配列といいます($row["angle"], $row["apple"]等)。
| // テーブルの最初の要素を出力する while( ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) ) { print($row[ "id" ]. "<br>" ); } |
データベースの行の要素を連想配列で取り出す場合は、$res->fetchRow()の引数にMDB2_FETCHMODE_ASSOCをいれます。
引数を指定しない場合は、デフォルトとしてMDB2_FETCHMODE_ORDERED が入ります。
引数を指定しない場合は、デフォルトとしてMDB2_FETCHMODE_ORDERED が入ります。
この他に、MDB2_FETCHMODE_OBJECTとすることでオブジェクトとして要素を取り出せます。
| // テーブルの最初の要素を出力する while( ($row = $res->fetchRow(MDB2_FETCHMODE_OBJECT)) ) { print($row->id. "<br>" ); } |
データの書換え
| <?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2::connect( "mysql://ユーザ名:パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR::isError($mdb2)) { die($mdb2->getMessage()); } // データベースの内容を変更する $sql = "update データベース名 set カラム = " . $mdb2->quote(セットしたい値, '型' ) . "WHERE 条件"; $res =& $mdb2->exec($sql); // エラー処理 if(PEAR::isError($res)) { die($res->getMessage()); } // データベースへの接続を切る $mdb2->disconnect(); ?> |
検出数
| <?php // ライブラリの読込み require_once "MDB2.php" ; // データベースへ接続 $mdb2 = MDB2::connect( "mysql://ユーザ名:パスワード@ホスト/データベース名" ); // エラー処理 if(PEAR::isError($mdb2) ) { die($mdb2->getMessage() ); } // クエリを実行 $res =& $mdb2->query( "SELECT * FROM データベース名 WHERE 条件" ); // エラー処理 if(PEAR::isError($res) ) { die($res->getMessage() ); } // 検出数を出力 print( "条件に合致したものは" . $res->numRows() . "個でした" ); // データベースへの接続を切る $mdb2->disconnect(); ?> |
暗号化
hash関数
| <?php // 文字列をハッシュ関数で暗号化 $hsh = hash( "アルゴリズム" , "文字列" ); // 結果を出力 print($hsh); ?> |
hashで使用できるアルゴリズムは、hash_algos()で見ることができる。
また、sha1やmd5については突破方法や効率の良い攻撃法が見つかっているため使用は避けた方がよい。
また、sha1やmd5については突破方法や効率の良い攻撃法が見つかっているため使用は避けた方がよい。
hash_algos()の出力結果は以下である。
| Array ( [0] => md4 [1] => md5 [2] => sha1 [3] => sha256 [4] => sha384 [5] => sha512 [6] => ripemd128 [7] => ripemd160 [8] => whirlpool [9] => tiger128,3 [10] => tiger160,3 [11] => tiger192,3 [12] => tiger128,4 [13] => tiger160,4 [14] => tiger192,4 [15] => snefru [16] => gost [17] => adler32 [18] => crc32 [19] => crc32b [20] => haval128,3 [21] => haval160,3 [22] => haval192,3 [23] => haval224,3 [24] => haval256,3 [25] => haval128,4 [26] => haval160,4 [27] => haval192,4 [28] => haval224,4 [29] => haval256,4 [30] => haval128,5 [31] => haval160,5 [32] => haval192,5 [33] => haval224,5 [34] => haval256,5 ) |
crypt関数
| <?php // 暗号化する $cpt = crypt( "文字列" , "暗号化用文字列" ); // 結果出力 print($cpt); ?> |
cryptは、暗号化用文字列saltを指定することで暗号化方式を決定します。
引数を指定しない場合は標準のDESベースの暗号化となります。
ですが、標準のDESベースの暗号化の場合、文字列は8文字までしか使用しないため、
最初の8文字が同じ文字列は同じ暗号文が出力されてしまうので注意が必要です。
暗号化方式は以下のとおりです。
引数を指定しない場合は標準のDESベースの暗号化となります。
ですが、標準のDESベースの暗号化の場合、文字列は8文字までしか使用しないため、
最初の8文字が同じ文字列は同じ暗号文が出力されてしまうので注意が必要です。
暗号化方式は以下のとおりです。
暗号化文字列が2文字の場合、標準のDESベース暗号化方式
暗号化文字列が9文字の場合、拡張のDESベース暗号化方式
暗号化文字列が12文字で&bold(){$1$}で始まる場合、MD5暗号化方式
暗号化文字列が16文字で&bold(){$2$}または&bold(){$2a$}で始まる場合、Blowfish暗号化方式
セッション
セッションの基本
| <?php // セッション開始 session_start(); // セッション変数に値を格納 $_SESSION[ "num" ] = 1; $_SESSION[ "char" ] = 'c' ; $_SESSION[ "string" ] = "test" ; $_SESSION[ "bool" ] = true; // 変数の破棄 unset($_SESSION[ "char" ]); // セッション変数の破棄 session_unset(); // セッション終了 session_destroy(); ?> |
セッションは、ページ間に渡って特定のユーザであることを認識させるために用いられます。
一般に、ユーザがログインしていることを認識させるために使われます。
一般に、ユーザがログインしていることを認識させるために使われます。
Smarty
Smarty基本
| <?php // Smartyのパスは環境により変わります。(Pearからインストールした場合、このパスになります) require_once "Pearified/Smarty/smarty.class.php" ; // Smartyオブジェクトの生成 function CreateSmartyObj() { $smarty = new Smarty(); // パスの設定 $smarty->template_dir = "template" ; // テンプレートディレクトリのパス $smarty->compile_dir = "compile" ; // コンパイルディレクトリのパス return $smarty; } $smarty = CreateSmartyObj(); // Smartyオブジェクトの生成 // 変数testにアボーン(´・ェ・`)を入れる $smarty->assign( "test" , "アボーン(´・ェ・`)" ); // テンプレートファイルを画面出力する $smarty->display( "index.tpl" ); ?> |
テンプレートファイルの中身
| <html> <body> test is {$test}. </body> </html> |
実行結果
| test is アボーン(´・ェ・`) |