0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP基礎②

Posted at

はじめに

本日もPHPも学習を続けていきますので、こちらでアウトプットしていきます。

フォームから受け取る処理

フォームの入力から受け取る①

index.html
<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>
sample.php

<pre>
お名前:<?php
 print(htmlspecialchars($_REQUEST['my_name']/*ここはname属性に揃える*/,ENT_QUOTES));
?>
</pre>

参考:https://www.php.net/manual/ja/reserved.variables.request.php
第二引数についてはこちらをご覧ください

htmlspecialcharsは、フォームに悪意のあるプログラムを入力したときに、それが反映されないようにする効果があります。

ラジオボタン,チェックボックス,ドロップボタンの場合

まずはラジオボタンについてみていきます。

index.htm

<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>

実は受け取り方は上述したパターンと同じになります。

submit.php
<pre>
  #ラジオボタンの情報を受け取る
    <?php print(htmlspecialchars($_POST['gender'], ENT_QUOTES)); ?>
</pre>

複数選択可能なチェックボックスやドロップボタン

複数選択可能な場合は、name属性にブラケットを記述する必要があります。

index.html
<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で展開していきます。

submit.php
<pre>
    <?php
    foreach ($_POST['reserve'] as $reserve) {
        print(htmlspecialchars($reserve, ENT_QUOTES) . ' ');
    }
    ?>
</pre>

ドロップボタンでも同様の記述をします。

全角数字を半角数字に直す

sample.php
<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というメソッドを使用して、正規表現によるマッチングを行います。
正規表現については、省略します。

sample.php
<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 ヘッダを送信するために使用されます。
使われ方は様々ありますが、今回は別ページで遷移する場合の処理です。

sample.php
<?php
header('Location: https://h2o-space.com');
exit();

Locationで別ページに飛ぶことを指示していて、そのあとジャンプ先を提示しています。

剰余算の活用

剰余算を使って、文字の後ろに色をつけたりするプログラムを書きます

sample.php
<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日後にしています。

index.php
<?php
$value = '変数に保存した値です';
setcookie('save_message', 'Cookieに保存した値です', time() + 60 * 60 * 24 * 14);
?>

ちなみにCookieの値は以下のように取り出します

sample.php
<pre>
    変数の値:<?php print($value); ?>  #この部分は表示されない、あくまでこのページでのvalueとして再定義しないといけない
    Cookieの値:<?php print($_COOKIE['save_message']); ?> #前ページから保存されたものがこちらでも表示される
</pre>

sessionに値を保存する

以下のページでsessionを保存します。

index.php

<?php
session_start();
$_SESSION['session_message']="sessionに値を保存しました"

?>

そして、記憶した値をこちらで表示します。

sample.php
<?php
 print($_SESSION['sesison_message']); #sessionに値を保存しましたが表示される
?>

sessionはCookieと違って、ブラウザを閉じてしまうと一旦保存したsessionの情報は消えてしまいます。

ちなみに、sessionはサーバ側で記憶するのに対して、Cookieはブラウザ側で記憶されます。

おわりに

一旦ここまでざっとPHPの簡単な基礎について学びました。
一度プログラミングを知っていると、初学であってもかなりすっと対応できるなと感じました。
ここからさらに基礎を深めていきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?