はじめに
本日もPHPも学習を続けていきますので、こちらでアウトプットしていきます。
フォームから受け取る処理
フォームの入力から受け取る①
<form action="submit.php" method="get">
<label for="my_name">お名前:</label>
<input
type="text"
id="my_name"
name="my_name"
maxlength="255"
value=""
/>
<input type="submit" value="送信" />
</form>
<pre>
お名前:<?php
print(htmlspecialchars($_REQUEST['my_name']/*ここはname属性に揃える*/,ENT_QUOTES));
?>
</pre>
参考:https://www.php.net/manual/ja/reserved.variables.request.php
第二引数についてはこちらをご覧ください
htmlspecialcharsは、フォームに悪意のあるプログラムを入力したときに、それが反映されないようにする効果があります。
ラジオボタン,チェックボックス,ドロップボタンの場合
まずはラジオボタンについてみていきます。
<form action="submit.php" method="post">
#ラジオボタン
<p>性別:
<input type="radio" name="gender" value="男性"> 男性
/
<input type="radio" name="gender" value="女性"> 女性
</p>
<input type="submit" value="送信する">
</form>
実は受け取り方は上述したパターンと同じになります。
<pre>
#ラジオボタンの情報を受け取る
<?php print(htmlspecialchars($_POST['gender'], ENT_QUOTES)); ?>
</pre>
複数選択可能なチェックボックスやドロップボタン
複数選択可能な場合は、name属性にブラケットを記述する必要があります。
<form action="submit.php" method="post">
<p>ご予約希望日</p>
<p>
<input type="checkbox" name="reserve[]" value="1/1"> 1月1日<br>
<input type="checkbox" name="reserve[]" value="1/2"> 1月2日<br>
<input type="checkbox" name="reserve[]" value="1/3"> 1月3日<br>
</p>
<input type="submit" value="送信する">
php側で複数情報をforeachで展開していきます。
<pre>
<?php
foreach ($_POST['reserve'] as $reserve) {
print(htmlspecialchars($reserve, ENT_QUOTES) . ' ');
}
?>
</pre>
ドロップボタンでも同様の記述をします。
全角数字を半角数字に直す
<pre>
<?php
$age = '20';
$age = mb_convert_kana($age, 'n', 'UTF-8');
if (is_numeric($age)) {
print($age . '歳');
} else {
print('※ 年齢が数字ではありません');
}
?>
</pre>
is_numeric($age)で受け取った情報が数字かどうか確認します。
mb_convert_kanaでは、さまざな変換を行います。今回は数字を全角数字を半角数字に変換してあげます。なお、mb_convert_kanaの詳細については、以下の参考をご覧ください
参考:https://www.php.net/manual/ja/function.mb-convert-kana.php
郵便番号を赤表現でチェック
preg_matchというメソッドを使用して、正規表現によるマッチングを行います。
正規表現については、省略します。
<pre>
<?php
$zip = 'abcabc123-4567';
$zip = mb_convert_kana($zip, 'a', 'UTF-8');#半角へ変換
if (preg_match("/\A\d{3}[-]\d{4}\z/", $zip)) {
print('郵便番号:〒' . $zip);
} else {
print('※ 郵便番号を 123-4567の形式でご記入ください');
}
?>
</pre>
別ページへジャンプ
header() は、生の HTTP ヘッダを送信するために使用されます。
使われ方は様々ありますが、今回は別ページで遷移する場合の処理です。
<?php
header('Location: https://h2o-space.com');
exit();
Locationで別ページに飛ぶことを指示していて、そのあとジャンプ先を提示しています。
剰余算の活用
剰余算を使って、文字の後ろに色をつけたりするプログラムを書きます
<table>
<?php
for ($i=1; $i<=100; $i++) {
if ($i % 2) {
print('<tr style="background-color: #ccc">');
} else {
print('<tr>');
}
print('<td>' . $i . '行目</td>');
print('</tr>');
}
?>
</table>
まあ、至って普通のプログラムですが、個人的な発見としてはprintを使わないと、
が反映されないということですね。まあ考えてみれば当たり前ですが、Railsのerbに慣れていると、書かなくてもなんかいけてしまうような感じがあるんですよね。。
Cookieに値を保存する
Cookie(クッキー)とは、ホームページを訪問したユーザーの情報を一時的の保存する仕組み、またはそのデータです。そのCookieに値を保存するにはsetcookieを使います。
第一引数にキー、第二引数に値,第三引数に保存期間を指定します。
保存期間は今回は、現時点の時間〜14日後にしています。
<?php
$value = '変数に保存した値です';
setcookie('save_message', 'Cookieに保存した値です', time() + 60 * 60 * 24 * 14);
?>
ちなみにCookieの値は以下のように取り出します
<pre>
変数の値:<?php print($value); ?> #この部分は表示されない、あくまでこのページでのvalueとして再定義しないといけない
Cookieの値:<?php print($_COOKIE['save_message']); ?> #前ページから保存されたものがこちらでも表示される
</pre>
sessionに値を保存する
以下のページでsessionを保存します。
<?php
session_start();
$_SESSION['session_message']="sessionに値を保存しました"
?>
そして、記憶した値をこちらで表示します。
<?php
print($_SESSION['sesison_message']); #sessionに値を保存しましたが表示される
?>
sessionはCookieと違って、ブラウザを閉じてしまうと一旦保存したsessionの情報は消えてしまいます。
ちなみに、sessionはサーバ側で記憶するのに対して、Cookieはブラウザ側で記憶されます。
おわりに
一旦ここまでざっとPHPの簡単な基礎について学びました。
一度プログラミングを知っていると、初学であってもかなりすっと対応できるなと感じました。
ここからさらに基礎を深めていきたいと思います。