PHPの基本事項。
■データベースの接続と文字コード ・MySQL $connect = mysql_connect($db_host, $db_username, $db_password); mysql_query("set names 'utf8'", $connect); $sqlid = mysql_query($query, $connect); $result = mysql_num_rows($sqlid); ・PostgreSQL $connect = pg_connect("dbname=$db_service user=$db_username"); pg_query($connect, "set names 'utf8'"); $sqlid = pg_query($connect, $query); $result = pg_num_rows($sqlid); ・その他 mysql_set_charset('utf8'); というのもある。 ■日付 ・現在の日付取得 $updatedate = date("Y-m-d H:i:s"); ・日付が正しいかチェック 正しければtrue、存在しない日付ならfalse checkdate($month, $day, $year); ・日付の書式をタイムスタンプにする 2005-09-24T00:00:00などの日付を1127487600という数値(タイムスタンプ)に変換する ・例 strtotime("2005-09-24T00:00:00+09:00"); strtotime("Thu, 21 Jul 2005 14:46:19 +0900"); ・例 取得した日付の書式が違っても、一度タイムスタンプに変更し、任意の書式に変更できる $date2 = date("Y-m-d H:i:s", strtotime($date)); ■エラー出力回避(エラーメッセージを出さない) ・error_reporting 0だとエラー非表示になる それ以外だと数字に応じてエラーがメッセージが異なる error_reporting(0); ・関数、変数などの前に@マークをつける @fopen($test, "r"); ■スリープ、処理を意図的に遅延させる ・sleep(秒数); sleep(5); ・usleep(マイクロ秒数); ■ループの強制終了、タイムアウト時間 ・set_time_limit(秒数) set_time_limit(90); ■ブラウザを閉じても処理を続行する ・ignore_user_abort() 戻り値は、現在の設定値。0か1。 ・通信が切れても処理を続ける ignore_user_abort(1); ・通信が切れたら処理が中断される ignore_user_abort(0); ■コマンドを実行する ・exec(コマンド, 配列, 変数) コマンドを実行し、実行結果の最終行を返す 配列には実行結果を代入可能。省略可。 変数には実行コマンドのステータスを代入可能。省略可。 ・system(コマンド, 変数) ・例 $command = '/usr/local/bin/php /htdocs/test.php'; exec(escapeshellcmd($command)); ・コマンドラインの引数を取得 $command = '/usr/local/bin/php /htdocs/test.php test sample'; exec(escapeshellcmd($command)); のようにコマンドを実行した場合 test.phpでは、$_GET[]ではなく、$argv[]で取得する 「実行コマンド 実行プログラム 引数1 引数2 ・・・・」という形式でコマンドを書く 「/usr/local/bin/php /htdocs/test.php test sample」の場合 print $argv[0] . "\n"; print $argv[1] . "\n"; print $argv[2] . "\n"; は、 /htdocs/test.php test sample という結果になる ■型の取得・判別 ・キャスト (bool) $value; (boolean) $value; (int) $value; (integer) $value; (float) $value; (double) $value; (string) $value; (array) $value; ・型を指定して値を取得 floatval($value); doubleval($value); intval($value); strval($value); ・型を判別 is_bool($value); is_int($value); is_integer($value); is_long($value); is_float($value); is_double($value); is_string($value); is_array($value); ・型の取得 戻り値 = gettype($value); 戻り値:boolean、integer、double、string、array ・型の変更 settype($value, bool); settype($value, boolean); settype($value, int); settype($value, integer); settype($value, float); settype($value, double); settype($value, string); settype($value, array); ■セッション ・ログインするとき ・セッション開始 session_start(); ・セッションID print session_id(); ・セッション変数の設定 $_SESSION["password"] = $password; print $_SESSION["password"]; ・ログアウトするとき ・セッション変数の破棄 $_SESSION = array(); ・セッションの破棄 session_destroy(); ・その他 session_cache_limiter('private'); ■Cookie (クッキー) ・Cookieが空かどうか調べて、空でなければ値を取得 if(!empty($_COOKIE["sample"])){ $sample = $_COOKIE["sample"]; } ・Cookieをセットと値の取得 //セットする時は、ページ出力の前に行う //setcookieした後、同じページでCookieをすぐに取得できない //ページをリロードすると取得できる //すぐに反映したいときは、sessionを使う setcookie("sample", "あいうえお"); ・Cookieの値の取得 print $_COOKIE["sample"]; ・1つのCookieに複数の値を入れる //配列を入れるとエラーになる //$result = setcookie("sample_array", $sample_array); $sample_array[0] = "あ"; $sample_array[1] = "い"; $result = setcookie("sample_array[0]", $sample_array[0]); $result = setcookie("sample_array[1]", $sample_array[1]); $sample_array_out = $_COOKIE["sample_array"]; if(!empty($sample_array_out)){ foreach($sample_array_out as $key => $value){ print $key . " / " . $value . "<BR>"; } } ■GD ・情報表示 旧バージョンでは、gd_info()が使えない。 get_extension_funcs()でgd_info()があるか確認する。 $gdinfo = gd_info(); foreach($gdinfo as $key => $value){ print $key . " / " . $value . "<BR>"; } ・利用可能な関数の表示 $funcs_list = get_extension_funcs("gd"); foreach($funcs_list as $key => $value){ print $key . " / " . $value . "<BR>"; } ・imagecreatetruecolor PHP 4.0.6で追加され、GD 2.0.1以降で利用可能 ■メール送信 mb_language("Japanese"); mb_detect_order("auto"); ini_set("mbstring.http_input", "auto"); mb_http_output("auto"); mb_internal_encoding("SJIS");//またはEUC-JPなど mb_substitute_character("none"); $mail_to = "oshima@aaa.com"; $mail_from = "info@aaa.co.jp"; $mail_cc = $mail_from; $mail_from_title = mb_encode_mimeheader("登録通知")."<".$mail_from.">"; $mail_xmailer = "PHP-" . phpversion(); $mail_subject = mb_encode_mimeheader("タイトル"); $mail_body = "****様\n"; $mail_encode = "SJIS"; $mail_body = mb_convert_encoding($mail_body, $mail_encode); $mail_header_array["X-Mailer"] = $mail_xmailer; $mail_header_array["From"] = $mail_from_title; $mail_header_array["Cc"] = $mail_cc; foreach($mail_header_array as $key => $value){ $mail_header .= $key . ": " . $value . "\r\n"; } $mail_result = @mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header, "-f" . $mail_from); if(!$mail_result){ die("メールを送信できません\n"); } ■クラス include "mailsend.php"; $obj_mailsend = new MailSend("SJIS"); //登録通知メール $mail_to = $mail; $mail_from = SERVICE_ADMIN_MAIL; $mail_cc = $mail_from; $mail_from_title = SERVICE_NAME; $mail_xmailer = "PHP-" . phpversion(); $mail_subject = SERVICE_NAME . " - 登録通知"; $mail_body = $company1 . " 様\n\n" . SERVICE_NAME . "へのご登録ありがとうございます。\n"; $mail_result = $obj_mailsend->mail_send($mail_to, $mail_from, $mail_cc, $mail_from_title, $mail_xmailer, $mail_subject, $mail_body); ・mailsend.php /* メール送信処理 */ Class MailSend{ public $mail_encoding; //コンストラクタ function __construct($mail_encoding){ $this->mail_encoding = $mail_encoding; mb_language("Japanese"); mb_detect_order("auto"); ini_set("mbstring.http_input", "auto"); mb_http_output("auto"); mb_internal_encoding($this->mail_encoding); mb_substitute_character("none"); } //メール送信 function mail_send($mail_to, $mail_from, $mail_cc, $mail_from_title, $mail_xmailer, $mail_subject, $mail_body){ $mail_from_title = mb_encode_mimeheader($mail_from_title) . " <" . $mail_from . ">"; $mail_subject = mb_encode_mimeheader($mail_subject); $mail_body = mb_convert_encoding($mail_body, $this->mail_encoding); $mail_header_array["X-Mailer"] = $mail_xmailer; $mail_header_array["From"] = $mail_from_title; $mail_header_array["Cc"] = $mail_cc; foreach($mail_header_array as $key => $value){ $mail_header .= $key . ": " . $value . "\r\n"; } $mail_result = @mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header, "-f" . $mail_from); return $mail_result; } }