PHP関連のことを調べてみた2020年05月27日

PHP関連のことを調べてみた2020年05月27日
目次

SessionとCookieの使い分け

##はじめに
何をどっちに持たせたら良いかわからなくなったので、備忘録として残します

##Sessionとは
1. はじまりからおわりまでの、一連の行動
1. Webサイトにログインアクセスしてそのサイトから出て行くかブラウザを閉じるまでが1セッション
2. sessionスタート時にsession idを発行し、Cookieへ保存する。このidで通信相手(ユーザ)の判別をする。
1. サーバー側にデータを保存する仕組み、またはそのデータ
2. Cookieより改ざんの可能性が低いので、機密情報を保存したい場合はこっち
1. 会議、会期、学期などを表す英単語

##Cookieとは
1. ブラウザ側にデータを保存する仕組み、またはそのデータ
3. ブラウザでCookieへの保存を拒否した場合保存されない
2. 簡単に盗聴・改ざんできるので、機密情報は保存させない
3. 語源は諸説あるようだが、フォーチュンクッキー(fortune cookie:運勢を書いた紙が入ったクッキー)から来ている等

##おわりに
Sessionもすごい安全って

元記事を表示

Laravel MySQL 既に存在するテーブルにカラムを追加する

# 目的

– rollback時の記載を毎回間違えるのでしっかりとまとめる

# 実施環境

– ハードウェア環境(下記の二つの環境で確認)

| 項目 | 情報 | 備考 |
| — | — | — |
| OS | macOS Catalina(10.15.3) ||
| ハードウェア | MacBook Air (11-inch ,2012) ||
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 ||
| メモリ | 8 GB 1600 MHz DDR3 ||
| グラフィックス | Intel HD Graphics 4000 1536 MB ||

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro

元記事を表示

【環境構築】Windows10にXAMMPをインストールする方法

Xamppのインストール方法をご紹介します。画像多めです。

##作業環境
OS:Windows 10
エディション:HOME
バージョン:2004

##XAMPPのインストール方法
###①公式サイトからダウンロード
下記の公式サイトにアクセスします。
https://www.apachefriends.org/jp/index.html
![202005262113.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/0dde21f7-bb06-a07a-2050-860b63fd1a5a.png)
「Windows向けXAMPP」をダウンロードします。
執筆時点(2020/05/26)では、バージョンは7.4.6です。
###②インストールする
ダウンロードが完了したら、ファイルをダブルクリックしてインストールします。基本的にこだわりがなければ、「Next>」を押していくだけです。
![202005262117.png](https://qiita-image-store.s3.ap-n

元記事を表示

システム日時を変更してcurlで証明書検証エラーが出たら–insecureをつける

タイトルの通りです。[結論はこちら](#どうやって解決したか)

# 問題が発生した状況
PHPUnitを利用して、以下のようにexec()でテスト対象のAPIを叩くという内容のテストを作成していました。(デバッグ用のオプションは省略->[こちら](https://qiita.com/ryuichi1208/items/e4e1b27ff7d54a66dcd9)が参考になります)

“`sh
curl -X POST https://[テスト対象APIのURL] -d [POSTするデータ] > [出力先ファイル]
“`

そのテストにおいて、システム日時を変更する必要があったので、

“`sh
date -s “2020-01-01 00:00:00”
“`

とコマンドを実行してコンテナ内のシステム日時を変更する処理を追加しました。
すると、以下のようなエラーが出ました。

“`sh
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details he

元記事を表示

PHPWordテンプレートに改行を含む文字列をセットする

# やりたいこと
[PHPOffice/PHPWord](https://github.com/PHPOffice/PHPWord) のテンプレートに、改行を含む文字列をセットしたい。

# 解決方法
改行文字を `` に置換してセットする。

“`php
“bar\nbuz\n”,
];

foreach ($rawValues as $key => $value) {
// 改行文字を に置換する
$processedValues[$key] = preg_replace(‘/\n/’, ‘‘,

元記事を表示

誰でもなれる自宅警備員入門(IoT)

記事をご覧くださりありがとうございます!
初めまして。AI/IoT分野のプロフェッショナルを目指して修行中の、のぶたんです。?

今回はESPマイコンやセンサーなどを駆使すると遠隔でリモコン操作したり、お家の様子を監視できるので**みんな自宅警備員になれるゾ**とことについて取り扱っている記事です!

#作った基板①
必要な部品
①赤外線LED←リモコン操作用
②抵抗
③CDSセル←部屋の明るさ監視用
④圧電ブザー←起動音・操作音出力用
![IMG_20200526_162838.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580405/e46f01ec-f9a3-2bb9-2897-d53ad991c275.jpeg)

#作った基板②
必要な部品
①圧力センサー←ドアの開閉状況監視用
※画像は省略(基板①のようにESPマイコンにセンサーをつないだだけ)
#作った基板③
必要な部品
⑥水温センサー←カメの水槽温度監視用
※画像は省略(基板①のようにESPマイコンにセンサーをつないだだけ)

#実

元記事を表示

ElasticbeanstalkでAmazon Linux 2のプラットフォームブランチを選択するとebextensionsが動かない

AWS BeanstalkでPHPプラットフォームを選択するとき、最新のプラットフォームブランチだとAmazon Linux2を使うようになっている。
Amazon Linuxのときに使っていた、ebextensionsがそのままだと動かなかったのを書き換えたのでメモ。
`/var/app/ondeck`で動いていた部分を変更。

一応ログを見る限り、composer installは自動で走っているみたいなので、00-composerはいらないかもしれないと思う。
ここのコマンドのエラーログは、`/var/log/cfn-init-cmd.log`に出力される

変更前

“`yaml:.ebextensions/*.config
commands:
01-updateComposer:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update

option_settings:
– namespace: aws:elasticbeanstalk:application:env

元記事を表示

Laravel リクエストログの場所

# 目的

– ログの場所を知ったため忘れない様にメモする。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |

# ログの場所

– ロ

元記事を表示

学習記録PHP#3(クラス)

#PHPにおける関数とクラスについて
##クラスの概要
###クラスとは様々な処理を簡単に行うための道具。
PHPの場合は関数とクラスが混在している。
現在、追加されているのはクラスが主流。
###クラスの中身は2つ
プロパティ:何かを記録するもの(変数)
メソッド:何かの処理を行うもの(関数)
###クラス:設計図
設計図の中には変数(プロパティ)と関数(メソッド)が入っている。
###クラスとインスタンス
クラスとは設計図。
インスタンス(本体・実体)/オブジェクト(物体)
クラスを使う際はクラスから作られたインスタンスを使う。
インスタンスは複数作成可。
###インスタンス化
$変数名 = new クラス名();
インスタンス化:クラスから実際に作られたインスタンスを変数に代入すること。
##クラスの使い方

$ins1 = new Personal();
$ins1 -> name = ‘A太郎’;
$ins1 -> age = 20;
->:アロー関数

インスタンスが代入された変数のデータ型はstring型となる。
print(gettype(変数));でチェック。
#

元記事を表示

【初心者向けハンズオン】WindowsにDockerでPHP/MySQL/Apache環境構築(第2回:PHP動かすところまで)

# 概要

 前回の記事はこちら:

 新人もベテランも本当にエンジニアによくある、「開発環境建てるのめんどくさい問題」を解決する糸口を模索していました。そこで行き当たったWindows環境でDockerを使って開発出来るようにする、という着地に対してアプローチしていくハンズオンです。
 1回1時間程度の作業時間でやるルールにして、記事は細切れに書いて行くスタイル。あと参考にさせていただいた記事はこちらです。
 ※https://qiita.com/hirosnow/items/cbe2a90ba1c6921fea1a

# 目標
* PHP/MySQL/Apacheで古き良きWEBアプリケーションの開発環境を作る
* つくった開発環境を他の人に配布できるようにする
* ↑の「配布された人が簡単に開発環境を作れる手順をまとめる」ところまでがゴール

では行ってみましょう。

# 本日の作業内容
## 作業ディレクトリの作成
参考にした記事に従って、「C:\Users\あなたのPCのユーザー名\home」というディレクトリを作成しました。
※参考との相違点①:「\work」になっていると

元記事を表示

【初心者向けハンズオン】WindowsにDockerでPHP/MySQL/Apache環境構築(第1回:DockerDesktopを入れるまで)

# 概要

 新人もベテランも本当にエンジニアによくある、「開発環境建てるのめんどくさい問題」を解決する糸口を模索していました。何しろ、自分と共通の開発環境つくってもらうのがめんどくさくて仕方がない。
 で、そういった課題への解決策としては当然のように「Docker」が提唱されることになるわけです。
「でも自分の開発環境Windowsなんだよなあ」
 とはいえ行けるかどうか半信半疑で調べてみたら、結構参考記事が上がっていたので「よしじゃあこれも備忘つけながらやってみるか」と思い立った次第です。

 同じく例によって、1回1時間程度の作業時間でやるルールにして、記事は細切れに書いて行くスタイル。長くなると読む側もダレるかなあと思ったというのもあります。

# 目標
* PHP/MySQL/Apacheで古き良きWEBアプリケーションの開発環境を作る
* つくった開発環境を他の人に配布できるようにする
* ↑の「配布された人が簡単に開発環境を作れる手順をまとめる」ところまでがゴール

では行ってみましょう。

# 作業内容
## dockerインストール
こちらからインストール → htt

元記事を表示

PhpStorm pstorm コマンドでターミナルからプロジェクトを開く

PhpStorm をインストールすると `pstorm` コマンドも一緒にインストールされていました。(今日知った)

“`shell-session
$ which pstorm
/usr/local/bin/pstorm
“`

“`shell-session
$ pstorm <プロジェクトのパス>
“`

でプロジェクトを開くことができます。
カレントディレクトリのプロジェクトを開く場合は下記のコマンドで開きます。

“`
$ pstorm .
“`

## 参考

– https://pleiades.io/help/phpstorm/working-with-the-ide-features-from-command-line.html

元記事を表示

Mac Laravel 7 Authを用いたユーザ登録 ログイン ログアウトなどの機能を作成する ver 2.0

# 目的

– すでにQiitaに記事として投稿してある[Mac Laravel 7 Authを用いたユーザ登録 ログイン ログアウトなどの機能を作成する](https://qiita.com/miriwo/items/5d4a94e8d2aa06b61530)よりも簡単に機能を実装できる方法を学んだのでまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用

元記事を表示

PHP インターフェースの検証

インターフェースとはなんなのか、何も知らないところからスタートします。
公式ドキュメントから引用。
“`
オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの種類を、
これらのメソッドの実装を定義することなく、指定するコードを作成できるようになります。
“`

では、実際に書いていきます。

1.基本

理解するのに時間がかかりました。

“`test_sample.php

“`

“`classTest.php

元記事を表示

【PHP8.0】例外をcatchしたいけど何もしたくない

例外をcatchしたいけど何もしたくない。

“`php
try{
foo();
}catch(Throwable $e){
// 何もしない
}
“`

何もしないのにわざわざ変数に受け取るのって無駄じゃありませんか?

というわけで[non-capturing catches](https://wiki.php.net/rfc/non-capturing_catches)というRFCが提出されました。

# PHP RFC: non-capturing catches

## Introduction

今のところ、PHPは例外を明示的に変数でキャプチャする必要があります。

“`php
try {
foo();
} catch (SomeException $ex) {
die($ex->getMessage());
}
“`

しかしながら、ときにはその変数を使わない場合もあります。

“`php
try {
changeImportantData();
} catch (PermissionException $ex) {
e

元記事を表示

初心者がPHPを勉強する方法

# まずは他の言語を始める

PHPは色々な言語をごちゃ混ぜにしたような言語である。
なので、勉強をするなら混ざる前のものから手を付ける方が理解しやすい。

## C言語

C言語は文字列、構造体、ポインタが分かる程度のところまでやる。
関数ポインタまでやる必要はない。JavaやJavaScript等の他の言語をやったあとに戻ってくると何となく理解できるようになっている。

https://php.net/fopen
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/fopen.3.html

https://php.net/strcoll
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/strcoll.3.html

PHPはC言語からそのまま持ってきた関数が多いので、このようにC言語のマニュアルそのままの関数も多い。なので、何故このような関数になっているか?というような関数の成り立ちをPHPの中だけで考えても意味がない。PHPとしてファイル操作のための`fopen`を定義したわけではなく、

元記事を表示

HTML PHP 特殊文字 エスケープ処理

# HTMLの特殊文字とは

HTML上、ただの文字列ではなく、特殊な意味を持つ文字。

# エスケープ処理前と処理後
エスケープすると…(例↓)

– `<` → `<` - `&` → `&` ブラウザがHTLMLをレンダリングするときに、`<`が`<`に変換される。 その他の対応表は例えば以下リンク等に記載されている https://www.benricho.org/symbol/tokusyu_07_mark.html # エスケープ例 ``
を文字列として出力したい場合。

“`php:エスケープ処理
alert(“xssの危険”)‘;

function h($s) {
return htmlspecialchars($s, ENT_QUOTES, “UTF-8”);
}

?>




PHP_CodeSniffer で “Missing file doc comment” エラーが消えない場合の対処法

## 問題

VSCode に phpcs プラグインを導入[^phpcs]して WordPress PHP コーディング規約に PHP コードが準拠しているかのチェックを行っているのだが、以下のようなコードで、“Missing file doc comment” エラーが消えない場合がある。

[^phpcs]: Cf. [VSCodeで「WordPress Coding Standards」に準拠してPHPの自動フォーマットする方法 | HPcode](https://haniwaman.com/vscode-wordpress-format/)

“` PHP

* @license https://www.gnu.org/licenses/gpl-3.0.txt GNU/

元記事を表示

PHPで型宣言

PHP7以降型宣言充実しており
7.4でかなり良くなり、型宣言する機会が増えたので、まとめ

#1.引数の型(タイプヒンティング)

“`php:
// int型のみ
function hoge(int $num)
{
echo $num;
}
// デフォルト値
function hoge(int $num = 0)
{
echo $num;
}
// null許容型
function hoge(?int $num)// int $num = nullも可
{
echo $num;
}

// オブジェクト(ex.Laravel)
function hoge(Request $request)
{
echo $request->hoge;
}

“`

#返り値(戻り値)

“`php:
// int型のみ
function hoge(int $num): int
{
return $num;
}

// null許容
function hoge(?int $num): ?int
{
return $num;
}

// オブジェ

元記事を表示

【Laravel】 ネストしたEagerLoadを書いてみる

# やりたいこと
以下のテーブル構成があったときに、
マンションテーブルの情報から郵便番号テーブルの住所名を取得したいときに、
ネストしたEagerLoadを使用することができたので、残します。

マンションテーブル(apartments)

| 項目名 | カラム名 | 外部キー |
| —— | ———— | ——– |
| id | マンションID | |

マンションの基本情報テーブル(apartment_infos)

| 項目名 | カラム名 | 外部キー |
| ———— | ———————— | ————————- |
| id | マンションの基本情報のID | |
| apartment_id | マンションテーブルのID | apartments.id

元記事を表示

OTHERカテゴリの最新記事