PHPでカレントディレクトリを取得する [PHP]
PHPでカレントディレクトリを取得するには、getcwd()関数を使用します。
例:
例:
$cwd = getcwd(); echo "Current Directory is $cwd.";
PHPでGETメソッドやPOSTメソッドを使用した場合のデータの受け取り [PHP]
PHPでは、GETメソッドやPOSTメソッドを使ってHTTPクライアント(ブラウザ等)からのデータを受け取ることができます。
このデータは、$_GETや$_POSTという特別な変数を使って取得します。
URIをhttp://example.com/example/example.phpとすると、
GETメソッドでhttp://example.com/example/example.php?name=miukumaukuとリクエストすると、
で、ブラウザ画面には、
name: miukumauku
と表示されます。
POSTの場合は、$_GETを$_POSTに置き換えれば、OKです。
ちなみに例で書いているisset()関数は、引数の変数が設定されているかどうかを調べるための関数です。
変数が設定されていない場合に、その変数にアクセスするとエラーとなるので、このisset()関数を使ってあらかじめ変数が設定されているかどうかを調査しておきます。
このデータは、$_GETや$_POSTという特別な変数を使って取得します。
URIをhttp://example.com/example/example.phpとすると、
GETメソッドでhttp://example.com/example/example.php?name=miukumaukuとリクエストすると、
if (isset($_GET['name'])) { $name = $_GET['name']; echo "name: $name<br>"; } else { echo "name: No Name<br>"; }
で、ブラウザ画面には、
name: miukumauku
と表示されます。
POSTの場合は、$_GETを$_POSTに置き換えれば、OKです。
ちなみに例で書いているisset()関数は、引数の変数が設定されているかどうかを調べるための関数です。
変数が設定されていない場合に、その変数にアクセスするとエラーとなるので、このisset()関数を使ってあらかじめ変数が設定されているかどうかを調査しておきます。
PHPでファイルを削除する方法 [PHP]
PHPでファイルを削除するには、unlink()関数を使用します。
引数には、パス名(ファイル名)を指定します。
パス名は、相対的指定でも絶対的指定でも可能です。
(urlでの指定も可能のようですが、実際に削除が実行されるか不明です。)
unlink(string filename)
ファイルの削除ではなく、ファイル名の変更あるいは別ディレクトリへ移動には、rename()関数を使用します。
引数には、パス名(ファイル名)を指定します。
パス名は、相対的指定でも絶対的指定でも可能です。
(urlでの指定も可能のようですが、実際に削除が実行されるか不明です。)
unlink(string filename)
$filename = "./data.txt"; unlink($filename);
ファイルの削除ではなく、ファイル名の変更あるいは別ディレクトリへ移動には、rename()関数を使用します。
$filename = "./data.txt"; $newfilename = "./data/data.txt"; rename($filename, $newfilename);
PHPでファイル操作 [PHP]
PHPでのファイル操作は、C言語とほぼ同じなので、分かりやすいです。
ファイルのオープン:
resource fopen(string$filename, string$mode)
ファイルのクローズ:
bool fclose(resource$handle)
ファイルからデータを読み込む:
string fread(resource$handle, int$length)
ファイルへデータを書き込む:
int fwrite(resource$handle, string$string)
ファイルのオープン:
resource fopen(string$filename, string$mode)
ファイルのクローズ:
bool fclose(resource$handle)
ファイルからデータを読み込む:
string fread(resource$handle, int$length)
ファイルへデータを書き込む:
int fwrite(resource$handle, string$string)
$input = fopen($input_filename, "r"); $data = fread($input, $readsize); fclose($output); $output = fopen($output_filename, "w"); fwrite($output, $data); fclose($output);
PDOを使ったデータベースアクセス [PHP]
PHPでは、MySQLやSQLite、PostgreSQLのそれぞれ専用の関数がありますが、それらのラッパクラス的なPDO(PHP Database Object)を使うと便利です。
使い方:
データベースへ接続は、PDOクラスを生成することでできます。
PDO("{データベースの種類}:dbname={データベース名};host={ホストアドレス}', ’{ユーザ名}", "{パスワード}")
SQLコマンドを実行は、query()メソッドやfetch()メソッドを使います。
データベースの接続を切断するには、PDOオブジェクトにnullを設定する。
使い方:
データベースへ接続は、PDOクラスを生成することでできます。
PDO("{データベースの種類}:dbname={データベース名};host={ホストアドレス}', ’{ユーザ名}", "{パスワード}")
try { $pdo = new PDO('mysql:dbname=db01;host=localhost', ’user01", "xxxxxxx"); } catch (PDOException $e) { // エラー処理 }
SQLコマンドを実行は、query()メソッドやfetch()メソッドを使います。
$pdo->query("SELECT * FROM atable WHERE name = 'foo'");
データベースの接続を切断するには、PDOオブジェクトにnullを設定する。
$pdo = null;
PHPのforeachで配列のインデックス操作 [PHP]
PHPにもforeach構文があります。
foreach構文を使って配列のインデックス0から9までを操作する場合は、
以下のようにrange()関数を使うと分かりやすいです。
同じ操作をfor構文で書くと、
foreach構文を使って配列のインデックス0から9までを操作する場合は、
以下のようにrange()関数を使うと分かりやすいです。
foreach (range(0, 9) as $i) { $array[$i] = $i; }
同じ操作をfor構文で書くと、
for ($i = 0; $i < 10; $i++) { $array[$i] = $i; }
PHPでクロスドメインからのアクセスを許可するには [PHP]
JavaScriptでは、クロスドメインでのアクセスがセキュリティ上できないことになっています。
隠しコマンドでクロスドメインを許可する設定ができるブラウザ(Chrome)がありますが、基本はクロスドメインでのアクセスは禁止となっています。
しかし、Web APIをAJAXでアクセスするには、クロスドメインとなる場合がありますので、サーバ側でHTTPヘッダに「Access-Control-Allow-Origin: *%」を付けるとクロスドメインアクセスが可能となります。
隠しコマンドでクロスドメインを許可する設定ができるブラウザ(Chrome)がありますが、基本はクロスドメインでのアクセスは禁止となっています。
しかし、Web APIをAJAXでアクセスするには、クロスドメインとなる場合がありますので、サーバ側でHTTPヘッダに「Access-Control-Allow-Origin: *%」を付けるとクロスドメインアクセスが可能となります。
header("Access-Control-Allow-Origin: *%"); header(‘Access-Control-Allow-Headers: *%’); header(‘Access-Control-Allow-Methods: GET, POST, OPTIONS’); header(‘Content-Type: text/plain’);
PHPでSessionのクッキーの有効期限を設定する [PHP]
PHPでsession_set_cookie_params()を使用してセッションのクッキーの有効期限を設定できます。
クッキーの有効期限を設定しないとデフォルト値は、「0」でブラウザを閉じるまでが有効期限となります。
クッキーの有効期限をiCloudの「サインインしたままにする」をチェックしてサインインした場合のように2週間にしたい場合は、以下のように設定します。
クッキーの有効期限を設定しないとデフォルト値は、「0」でブラウザを閉じるまでが有効期限となります。
クッキーの有効期限をiCloudの「サインインしたままにする」をチェックしてサインインした場合のように2週間にしたい場合は、以下のように設定します。
$lifetime = 60 * 60 * 24 * 14; // 2週間 session_set_cookie_params($lifetime);
PHPのheredoc(ヒアドキュメント)について [PHP]
PHPでもヒアドキュメントが使えます。
ヒアドキュメントとは、文字列リテラルをプログラム文中にそのまま埋め込むための方法の一つです。
改行文字のエスケープシーケンス等を書いたりせずに、自然なプレーンテキストで表記できるので、
便利です。
ヒアドキュメントの書式は、まず開始行として、<<<の次に終端文字列を書きます。
その後に実際の文字列リテラルを書き続けて、
最後に終端文字列;で始まる終端行を書きます。
例:
この場合は、終端文字列は、EOTです。
終端行は、必ず終端文字列で始まり、続いてセミコロンで終わる必要があります。
また、終端文字列とセミコロンの間に空白文字を入れないようにします。
ヒアドキュメントとは、文字列リテラルをプログラム文中にそのまま埋め込むための方法の一つです。
改行文字のエスケープシーケンス等を書いたりせずに、自然なプレーンテキストで表記できるので、
便利です。
ヒアドキュメントの書式は、まず開始行として、<<<の次に終端文字列を書きます。
その後に実際の文字列リテラルを書き続けて、
最後に終端文字列;で始まる終端行を書きます。
例:
echo <<<EOT <p> This is a heredoc sample. The terminal string of this heredoc is EOT. </p> EOT;
この場合は、終端文字列は、EOTです。
終端行は、必ず終端文字列で始まり、続いてセミコロンで終わる必要があります。
また、終端文字列とセミコロンの間に空白文字を入れないようにします。
XAMPPのデフォルトではPHPにOpenSSLモジュールが入っていない [PHP]
XAMPPでPHPサーバを動かしていますが、file_get_contents()関数を使って、httpsプロトコルのファイルへのアクセスができません。
色々調べてみると、どうもPHPサーバにOpenSSLのモジュールが入っていないことが判明しました。
PHPの設定ファイル({XAMPのインストールパス}/php/php.ini)を見てみると、確かに extension=php_openssl.dllがコメントアウトされています。
早速「;」を消去しコメントアウトを止め、php.iniを保存し、XAMPP Control PanelでApacheをStop した後StartさせてPHPを再起動させたら、httpsのファイルにアクセスできるようになりました。
色々調べてみると、どうもPHPサーバにOpenSSLのモジュールが入っていないことが判明しました。
PHPの設定ファイル({XAMPのインストールパス}/php/php.ini)を見てみると、確かに extension=php_openssl.dllがコメントアウトされています。
早速「;」を消去しコメントアウトを止め、php.iniを保存し、XAMPP Control PanelでApacheをStop した後StartさせてPHPを再起動させたら、httpsのファイルにアクセスできるようになりました。