PHP勉強始めますpart.2
・ファイル読み込み
$news = file_get_contents('../../news_data/news.txt');
$news = "2021-2-20 本日は夜にご飯へ行きます\n" . $news;
file_put_contents('../../news_data/news.txt', $news);
print($news);
file_get_contentsメソッドで2階層上のファイルからnews.txtを読み込み、
そこへ文章をfile_put_contentsで書き込み、printメソッドでブラウザへ出力。
・テキストデータから任意のテキストを抽出
$data = file_get_contents('/json/');
foreach ($json->items as $item):
・<a href="<?php print($item->url); ?>"><?php print($item->title); ?></a>
endforeach;
json方式のテキストデータをfile_get_contentsで内容を抽出し、
json_decodeメソッドでjson形式のデータをPHPのオブジェクト形式で処理。
itemプロパティは配列の形式であるから、foreach構文で繰り返し処理し、1つ1つを$itemに格納。
配列の中のurl要素とtitle要素を抽出し、urlにaタグ属性を付与しリンクで出力。
・formで入力された情報を受け取る
お名前: <?php print(htmlspecialchars($_REQUEST[my_name], ENT_QUOTES); ?>
htmlspecialcharsはセキュリティ目的で使用。
これがないとhtmlタグがそのまま反映されるため危険。
パラメーターは2つあり、1つ目に何をエスケープするのかを指定し、2つ目にどのようにエスケープするのかを指定する。
$_REQUESTはフォームの値を受け取るためのプログラムであり、グローバル変数。
htmlでmethod属性がgetのとき、REQUESTとGETが対応。
パスワードや暗号にREQUESTを使うとパスに表示されるため注意が必要。
ENT_QUOTESは変換パターンの1つであり、',",<,>といった記号等をエスケープしクロスサイトスクリプティング対策として講じる1つの手段。
・複数選択可能なチェックボックスの値を受け取る
foreach ($_POST['reserve'] as $reserve) {
print(htmlspecialchars($reserve, ENT_QUOTES) . ' ');
}
複数選択可能なチェックボックスの値を受け取る場合は配列の為、foreach構文を使用。
htmlで設定したチェックボックスのname属性(reserve)を1つ1つ$reserveへ格納。
PHPではformのname属性にブラケット[ ]必要となるので注意。
・全角数字を半角数字に修正し、それ以外はそのままにする
$age = 20;
$age = mb_convert_kana($age, 'n', 'UTF-8');
if (is_numeric($age)) {
print($age . '歳');
} else {
print('※年齢が数字ではありません');
}
mb_convert_kanaは文字を全角・半角に変換する。
'n'で全角数字を半角数字に直してから$ageに再読み込みし変換している。
is_numericは数字であるかを判断し、数字であれば半角に修正されているので入力された数字が全角であろうと半角数字で出力され、数字以外であればエラー文が出力される。
・剰余算の性質を利用した曜日出力
$week = array('日', '月', '火', '水', '木', '金', '土');
for ($i=1; $i<31; $i++) {
print($week[$i%7] . "\n");
}
・Cookieに値を保存する
setcookie('save_message', 'Cookieに保存した値', time() + 60 * 60 * 24 * 14);
Cookieの値: <?php print($_COOKIE['save_message']); ?>
setcookieは('cookieのキー', 'cookieに保存したい内容', そのcookieをいつまで保存したいか)を設定し活用する。cookie情報は$_COOKIEというグローバル変数に格納され、キーを指定することで呼び出し可能であり、保存したcookie情報は検証ツールのApplicationから確認可能。
・sessionに値を保存する
session_start();
$_SESSION['session_message'] = '値をセッションに保存';
<?php print($_SESSION['session_message']);
sessionを使用するときは、文頭にsession_start();の記述が必要。
sessionに保存した値はブラウザが閉じられた、移動したタイミングで消えるのに対し、
cookieは定めた期間中保存される。
sessionはWebサーバーに保存され、サーバーに保存された情報がどのブラウザに保存された情報なのかを判断するためにsessionIDを発行する。
sessionIDをWebブラウザはcookieに保管し、そのsessionIDをもとにsessionの内容を受け渡す仕組み。
cookieに直接パスワードを保存するよりは安全性が高いが、sessionIDが盗まれるとそこからパスワードを盗まれるセッションハイジャックされる危険があるため注意。