- 1. Composerの仕組み
- 2. 手順
- 2.3.1. Cockpit (CMS) の初期設定の注意点
- 2.3.2. PHP セキュリティ攻撃・対策
- 2.3.3. Paiza[構造体の更新 PHP編]
- 2.3.4. Laravel 11でMariaDBがサポートutf8mb4_uca1400_ai_ci🫨🫎🫏🪽🐦⬛🪿🪼🪻🫚🫛🪭🪮🪇🪈🪯
- 2.3.5. Laravel11 アップデートが来たった!!
- 2.3.6. Laravel 11のアーティさん【php artisan make:class/enum/interface/trait】
- 2.3.7. PHPer kaigi2024 初参加してきた
- 2.3.8. 【Laravel】PHP CodeSniffer を使ってコーディングチェクをする
- 2.3.9. 【Laravel】PHPStanをGitHub上でDockerの中で実行する
- 2.3.10. Laravel Reverb 101
- 2.3.11. Laravel OctaneをDockerで動かす
- 2.3.12. Vue.js でPHPの連想配列を出力するときのたった一つのコツ
Google Authenticatorでの2段階認証実装
# はじめに
昨今、様々なログイン時に使用されている2段階認証の実装備忘録です。PHPでの実装にあたり、[PHPGangsta/GoogleAuthenticator](https://github.com/PHPGangsta/GoogleAuthenticator)を使用している方を見つけたので、参考に組んでみました。
# 認証の流れ
フロントでAPIを呼び出し、
返却されたQRコードを画面に表示する手法で実装しました。大まかな流れは以下になります。
1. ユーザー登録
同時に秘密鍵をDBに登録
2. ログイン後、認証ページに移動
3. QRコードを表示
4. Google Authenticatorで読み取る
5. 表示された6桁のコードを入力して認証# 実装の手順
## ➀Composerインストール
“`shell
composer show –available phpgangsta/googleauthenticator
composer require –prefer-dist phpgangsta/googleauthenticator:de
【Laravel】GitHubのPush時にPHP CodeSnifferでテストする
# はじめに
こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。前回の記事
https://qiita.com/keitaMax/items/4196188be54f46cbd232
今回は前回作成したPHP CodeSnifferをGitHubActionsでGitHubにPull Requestを出した時に、テストできるようにしようと思います。
# GitHubActionsを作成
以下のように`phpcs.yml`ファイルを`.github/workflows`フォルダ配下に作成しました。
“`yml:phpcs.yml
name: phpcson: [pull_request]
jobs:
phpcs:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./src
steps:
– uses: actions/checkout@v2
– name: docker-compose up
Laravel(PHP)でOpenAI APIを使用する
ハッカソンで、Laravel(PHP)からOpenAIのAPIをたたく機会がありました。
OpenAI APIのドキュメントにはPython、node.js、curlの呼び出し形式がありますが、PHPからの呼び出し形式はなかったので、備忘録として書き残します。
# 目次
– [テキストからテキスト](#テキストからテキスト)
– [テキストから画像](#テキストから画像)
– [画像からテキスト](#画像からテキスト)
– [APIリクエストの実装方法](#APIリクエストの実装方法)## テキストからテキスト
https://platform.openai.com/docs/guides/text-generation
エンドポイント:`https://api.openai.com/v1/chat/completions`
~~~php
[
‘model’ => ‘gpt-4’,
‘messages’ => [
[
“role” => “user”,
“content”
PHPの変数と関数について。初学者がなんとなく理解するに至ったイメージ
## 前書き
変数と関数について解説していきます。
バックエンドでPHPが一番最初に触れることが多いかと思います。
前知識がない状態で記事などをみても、「変数 関数 クラス…」と言われても意味がわからないはずです。
現場にでて理解するに至ったイメージや考え方を残します。理解しやすそうな順序で書いたつもりです。
色々な記事を見て、そんな説明でわかるか!となったので、よくある記事とは違う角度で説明できたらと。前提として頭に入れておいて欲しいことが、PHPはバックエンドといってデータベース(以下:DB)とやり取りするための言語です。
– DBからもってくる
– DBに登録する
– 今入力されたパスワードほんとにあってんのかよ…
– 調べてやるか…的な動きをしてくれます。
画面上ではなくて、裏で色々やってくれてる内部的な動きのお話です。DBから持ってきたデータをいじくり回す、いじくりまわしたデータをDBに持っていく、のが醍醐味の言語です。### htmlの勉強からPHPの勉強に切り替え方
初学者の方は、index.htmlというファイルを使っていると思います。
そいつ
『PHPカンファレンス 関西』に参加してみた!
## はじめに
2022年7月〜SES企業でプログラマーをしている、みつです。
使用言語は主にC#やJavaで、普段は業務システムの開発に携わっています。
2024年2月11日にグランフロント大阪で開催されたPHPカンファレンスに参加してみたので、感想をまとめてみました!https://2024.kphpug.jp/
## 参加理由
・しばらくはPHPを業務でしようすることはなさそうですが、この先PHPで開発する可能性があるため、勉強しておいて損はないと思った。
・PHPは業務で2週間程しか触ったことがないですが、『これからPHPを勉強したい人にも参加資格があります』とのことだったので、自分でも参加できるかなと感じた。
・コロナなどもあり、関西で開催されるのは6年ぶりということを聞き、参加してみたいと思った。
(・シールが欲しかった:relaxed:)## 参加したセッションと感想
・[Laravelでミニマム開発からスタートして個人サービスを利益化するまでの経験談! ](https://fortee.jp/phpcon-kansai2024/proposal/8c1e
AtCoderの過去問100問解いて得たこと
はじめまして!CREとしてエンジニアをやってますkazuです🦌
AtCoderの問題を2023年12月から解き始めて、2024年3月で100問に到達したので、自分の振り返りも兼ねて中間報告をすることにしました。
![スクリーンショット 2024-03-16 19.30.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2597943/a3085edc-94d6-7f57-32b3-ea01c4afaab7.png)
# やり始めた経緯
CREというポジションは、コードをガッツリ書く事が少なく、顧客から上がってきた仕様の確認や調査の依頼などの対応が多いため、プライベートでコードを書く時間を増やしたいなと思い始めたのがAtCoderでした。
たまに、改修タスクをこなすのですが、実装する際の思いつく処理のパターンが少ないこと、処理を書く前の言語化があまりできていないこと、PHPの関数をそもそも知らないなどこういった課題もあったため、とりあえず始めてみました。
# やってみてよかったこと
上
OSSの形態素解析システム【MeCab】を使う①
MeCabについて
https://taku910.github.io/mecab/
1.MeCabのインストール
“`
sudo apt update
sudo apt install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8
“`2.PHPのMeCabラッパーパッケージのインストール
“`
sudo apt install php-mecab
“`MeCabをどのように使っていくかはまた後程!
PHPでのライブラリの導入方法
PHPでは Composer(PHPの依存管理ツール)を使うと便利!
https://getcomposer.org/
Composerの仕組み
▼composer.jsonファイル
プロジェクトで使用するライブラリを記述したもの
▼composer.lockファイル
実際にどのライブラリのどのバージョンをダウンロードしたのかをひとまとめにしたもの。
※実際の開発現場では上記二つのファイルを共有して開発する。
チーム開発時に使用しているライブラリがバラバラだとそれが原因でエラーになることもある。手順
①GitHubでインストールしたいライブラリを検索する
②composer.jsonを作成(プロジェクトの初期に1度実行)
“`
$ composer init
“`(今回はDockerのappコンテナ内に入れたいので以下のコマンドで実行しました。↓)
“`
$ docker-compose exec app com
Cockpit (CMS) の初期設定の注意点
# Cockpit (Headless CMS)
フロントエンドはスクラッチで開発したい場合、ヘッドレスCMSを使うことになりますが、小規模なサイトだと `Strapi` では仕掛けが重すぎたり、リクエストが多いXserverなどのレンタルサーバーへの設置だとPHPで動くものの方が良かったりします
`Wordpress` をヘッドレスCMSとして利用しても良いのですが、そもそもなぜフロントエンドはスクラッチで開発となったのか考えた時、若干の疑問が生じてきます
弊社では `Strapi` で実装できない場合や小規模サイトの場合、動作と仕掛けが軽いので、`Cockpit` (Linuxの管理システムではないコックピット) を採用してます
ただ、そのまま設置するとセキュリティ上の疑念が出てくるため、その初期設定についてここでまとめて公開します(まとめてと言うほどたいそうなことではないですが、備忘録に近いです)
ちなみにいま `Cockpit` について興味を持たれた方や簡単な使い方は、他の記事を参考にしてください
https://codit.pages.dev/notes/avg
PHP セキュリティ攻撃・対策
# ①XSS (Cross Site Scripting)
:::note info
#### 概要
– 入力フォームにJavaScriptなどのScriptを仕込むことができる
::::::note warn
#### 対策
– 各formにサニタイズの処理を行う。
– サニタイズ = 特殊な文字を別の文字に置き換えること。
消毒、無害化、エスケープとも言う。
– 関数「htmlspecialchars」を使用する
:::# ②クリックジャッキング
:::note info
#### 概要
– 通常のボタン上に、悪意のあるボタンを透明にして設置する
::::::note warn
#### 対策
– サーバーまたはPHP上に「X-FRAME-OPSIONS:DESY」を記述する
– PHPの場合は、header(’X-FRAME-OPSIONS:DESY’)を記述
:::# ③CSRF (Cross Site Request Forgeries)
:::note info
#### 概要
– シーサーフと読む
– 「formが存在するページ」をForg
Paiza[構造体の更新 PHP編]
解いたので記録として載せておく。
最適解かどうかはわからない。https://paiza.jp/works/mondai/class_primer/class_primer__change
“`PHP:result.php
$input_line = fgets(STDIN);
$users = [];
$update_list = [];
$first_line = explode(” “, $input_line);
$people_num = $first_line[0];
$update_num = $first_line[1];
$sum_line = $first_line[0] + $first_line[1];for ($i = 0; $i < $sum_line; $i++) { $s = fgets(STDIN); $s = str_replace(array("\r\n","\r","\n"), '', $s); $s = explode(" ", $s); if($people_num > $i){
Laravel 11でMariaDBがサポートutf8mb4_uca1400_ai_ci🫨🫎🫏🪽🐦⬛🪿🪼🪻🫚🫛🪭🪮🪇🪈🪯
https://laravel.com/docs/11.x/releases#mariadb
# MariaDB のサポートの改善
Laravel 11 には、MariaDB のサポートが改善されました。以前の Laravel リリースでは、Laravel の MySQL ドライバー経由で MariaDB を使用できました。ただし、Laravel 11 には、このデータベース システムにより良いデフォルトを提供する専用の MariaDB ドライバーが含まれています。
Laravel のデータベースドライバーの詳細については、[データベースのドキュメント](https://laravel.com/docs/11.x/database)を参照してください。
Laravel 11 では、専用の構成オプションを導入し、推奨される照合順序を採用することで、MariaDB との互換性を強化しています。
主な変更点:
個別の構成: MariaDB には、MySQL とは別に、カスタマイズされた設定のための独自の構成セクションが追加されました。
照合順序の更新:
MySQL のデフォルトの
Laravel11 アップデートが来たった!!
# Laravel11 アップデート
Laravel11 がリリースされたので色々な記事を参考に自分なりにまとめていきます。
ReleaseNote : https://laravel.com/docs/11.x/releases
## 前提情報
PHP8.2 以上
## スリム化された構成
> 新しいアプリケーション構造は、Laravel 開発者がすでによく知っている概念の多くを保持しながら、より無駄がなく、より現代的なエクスペリエンスを提供することを目的としています。
“`
app/
├── Http/
│ └── Controllers/
│ └── Controller.php
├── Models/
│ └── User.php
└── Providers/
└── AppServiceProvider.php
bootstrap/
├── app.php
└── providers.php
routes/
├── console.php
└── web.php
“`※今回は上記の 7 ファイルについて記述していきます。
#
Laravel 11のアーティさん【php artisan make:class/enum/interface/trait】
Laravel 11で追加されたartisanの挙動を確認しよう!
https://laravel.com/docs/11.x/releases#new-artisan-commands
# Laravel 11のインストール
Laravel 11はPHP8.2以上が必要です
“`bash
composer create-project laravel/laravel:^11.0 example-app
cd example-app
“`# php artisan make:class
“`bash
$ php artisan make:class HogeINFO Class [app/Hoge.php] created successfully.
“`“`php:example-app/app/Hoge.php
PHPer kaigi2024 初参加してきた
初めてPHPer kaigiに参加してみたので感想です。
カンファレンスというより、フェスって感じの企画&熱量でした…楽しかった…# 参加してみようと思った理由
私は主に以下動機で参加を決めました。
– 去年以前の参加レポ見て楽しそうだった
– 産休前の人脈作り(5月から産休予定で会社から1年弱離れるので、技術キャッチアップのためにPHPerと知り合いになってSNSで繋がったりしておきたかった)
– PHPコミュニティに入ってみたかった
– 雑魚ペチパーを卒業したい気持ち(7-8年くらいPHPerなのにPHPに詳しくなさすぎる:weary:)チケット代が8,000円で参加にはちょっと勇気が要りましたが、結果的に行って本当に良かったです。
# カンファレンス中
Day0はオンライン、Day1,2は現地会場参加しました。
特にPHPerの知り合いがいない状態でしたが、幸い所属会社のさくらインターネットがブースを出していたのでそこに突撃して自己紹介したりして、完全ボッチからは抜け出せました。
最初は慣れず、ブース見るのに気が取られてうっかり聞きたかったセッションに遅
【Laravel】PHP CodeSniffer を使ってコーディングチェクをする
# はじめに
こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。
今回はPHP CodeSnifferを使ってみようと思います。
https://zenn.dev/yokozawa_0701/articles/4d1816b9e5b2c9
この記事を参考に行っていきます。
# インストール
以下のコマンドで各ライブラリをインストールします。
“`
composer require –dev squizlabs/php_codesniffer
composer require slevomat/coding-standard –dev
composer require sirbrillig/phpcs-variable-analysis –dev
“`# phpcs.xmlの作成
そして、プロジェクトディレクトリ配下に`phpcs.xml`を作成します。
内容は記事で紹介されているものをそのまま使ってみます。
“`xml:phpcs.xml
【Laravel】PHPStanをGitHub上でDockerの中で実行する # はじめに
こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。
前回、PHPStanをGitHubActionsでGitHubにPull Requestを出した時に、テストできるようにしました。
前回の記事
https://qiita.com/keitaMax/items/46102fd5a07e7c86168c
ymlファイルでGitHubのテスト環境のPHPバージョンなどの記載をしたら、PHPバージョンアップの対応をした時に修正し忘れそうだ思ったので、
今回は、それをGitHub上でDockerを立ち上げて、PHPStanがDocker上で動くように修正したいと思います。
# GitHubActionsのymlファイルの修正
“`yml:phpstan.yml
name: LaraStan
on: [pull_request]jobs:
phpstan:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./src
Laravel Reverb 101
https://reverb.laravel.com/
https://github.com/laravel/reverb
# 導入
[Laravel Reverb](https://github.com/laravel/reverb) は、超高速でスケーラブルなリアルタイム WebSocket 通信を Laravel アプリケーションに直接提供し、Laravel の既存の[イベント ブロードキャスト ツール](https://laravel.com/docs/11.x/broadcasting)スイートとのシームレスな統合を提供します。
# インストール
`install:broadcasting`Artisan コマンドを使用して Reverb をインストールできます。
“`bash
php artisan install:broadcasting
“`# 構成
バックグラウンドで`install:broadcasting`Artisan コマンドが`reverb:install`コマンドを実行し、適切なデフォルト設定オプションのセットを使用して Reverb
Laravel OctaneをDockerで動かす
### Laravel Octane
Laravel Octaneは、アプリケーションの起動後全ての処理をメモリ上にロードした状態を維持しリクエスト間で使い回すことによって、高速なアプリケーションを提供するツールです。
SwooleやOpenSwooleなどを使った非同期処理のアプリケーションサーバーに載せることができます。またApacheやNginx不要でWebサーバーを建てることができます。
https://readouble.com/laravel/9.x/ja/octane.html
そこで今回はこの「Laravel Octane」をDockerで動かしてみました。
### やってみる
ディレクトリ構成
“`
├── octane-server
│ ├── app
│ ├── bootstrap
│ …
│
└── Dockerfile
“`とりあえず公式の手順に従ってLaravelのプロジェクトを作成します。
“`shell
$ composer create-project laravel/laravel octane-ser
Vue.js でPHPの連想配列を出力するときのたった一つのコツ
# はじめに
.phpファイル上でVue.jsを動かしていて、ブラウザ上でのアクションに合わせてPHPの変数を出力したくなり、はてどうやるんだ?と調べた結果、うまくいったものを紹介します。# 問題
筆者の環境
・CDNでVue.jsを導入
・PHPファイルで、HTMLを記述
・Vue.jsのv-forディレクティブで、PHPの連想配列を出力したくなった# 解決方法
PHP標準の、json_encode関数を用いることです。
PHPの連想配列そのままでは、Vue.jsで出力することができません。
実例
“`index.php1,
“name” => ‘John’
“age” => ’15’
),
array(
“id” => 2,
“name” => ‘Mary’
“age” => ’15’
),
array(
“id” => 3,
“name” => ‘Tom’
“age” => ’16’
),