初めに
phpのvalidationについて学習した内容のoutput用記事です。
※内容に間違いなどがある場合はご指摘をよろしくお願いします。
※こちらの記事はあくまでも個人で学習した内容のoutputとしての記事になります。
前回の記事:
https://qiita.com/redrabbit1104/items/a6e57aa1fd1771ef90ff
https://qiita.com/redrabbit1104/items/a3eaf2bba51fac0b3c51
https://qiita.com/redrabbit1104/items/6e9c85c7503ed9043f38
emailとurl入力フォームを追加
メールアドレスとホームページの入力欄を追加します。
メールアドレス
<input type="email" name="email"
value="<?php if (!empty($_POST['email']))
{echo sp_chars($_POST['email']);} ?>">
<br>
ホームページ
<input type="url" name="url"
value="<?php if (!empty($_POST['url']))
{echo sp_chars($_POST['email']);} ?>">
また、確認画面の方にも入力したメールアドレスとホームページが見れるようにします。
メールアドレス
<?php echo sp_chars($_POST["email"]); ?>
ホームページ
<?php echo sp_chars($_POST["url"]); ?>
そしてhiddenタイプで入力した値を渡すようにします。
<input type="hidden" name="email"
value="<?php echo sp_chars($_POST['email']); ?>">
<input type="hidden" name="url"
value="<?php echo sp_chars($_POST['url']); ?>">
これで準備完了です。
#filter_var()関数
メールアドレスやemailなどの値が予め用意されているフィルター(入力規則)に合っているかどうかをチェックする関数。戻り値はtrueまたはfalseになります。
filter_var("対象の値", "適用するフィルタ", "オプション")
フィルタにはたくさんの種類がありますが、emailとurlのvalidationで使うフィルタとしては
FILTER_VALIDATE_EMAILとFILTER_VALIDATE_URLを使います。
メールアドレスは入力されていない場合と入力内容が正しくない場合にメッセージが表示されるようにします。
if (empty($filter_value['email']) ||
!filter_var($filter_value['email'], FILTER_VALIDATE_EMAIL)) {
$messages[] = '正しい形式のメールアドレスを入力してください。';
}
ホームページは入力されなかった場合を除いて、正しく入力されたかをチェックしたいのでif文の中にif文を用意してvalidationを掛けます。
if (!empty($filter_value['url'])) {
if (!filter_var($filter_value['url'], FILTER_VALIDATE_URL)) {
$messages[] = '正しい形式のホームページを入力してください。';
}
}
emailやurlはhtml側で独自のvalidationが掛かりますので、php側のvalidationを確認するためには入力画面のinput欄のtypeをtextに変更する必要があります。
メールアドレス
<input type="text" name="email" //typeをemailからtextに変更
value="<?php if (!empty($_POST['email']))
{echo sp_chars($_POST['email']);} ?>">
<br>
ホームページ
<input type="text" name="url" //typeをurlからtextに変更
value="<?php if (!empty($_POST['url']))
{echo sp_chars($_POST['email']);} ?>">
参考サイト
https://www.php.net/manual/ja/function.filter-var.php
https://www.php.net/manual/ja/filter.filters.validate.php