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

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

【PHP】【JavaScript】PHPで簡易WebAPI作成 〜 JavaScriptで取得しブラウザに表示させるまで

バックエンド:PHP
フロントエンド:JavaScript
で開発する場合に、つなぎ込みの部分がよく分かっていなかったため学習して備忘録として残しました。
つなぎ込みの部分の理解が目的であるため、APIの内容はかなりシンプルです。

# ① 簡易WebAPIの実装

“`php:api.php

元記事を表示

【Laravel9】Policyを使って認可を与える

## Laravelで認可を与える方法
大きく2つの方法があり、`Gate`を使う方法と`Policy`を使う方法がある。

### Gate
特定のモデルに関連していないユーザーのアクションに関してアクセス制限を行う。

### Policy
ある特定のモデルに対して行うアクションに関してアクセス制限を行う。
※今回はこちらのPolicyを使って行う

## 前提
– Userモデル、Postモデルは既に作成している
– laravel9

## PostPolicyファイルを作成する

“`
$ php artisan make:policy PostPolicy
Policy created successfully.
“`
`make:policy`コマンドは、空のポリシークラスを生成する。
リソースの表示、作成、更新、削除に関連するポリシーメソッドのサンプルを含んだクラスを生成する場合は、
下記のようにコマンドの実行時に–modelオプションを指定する。

“`
$ php artisan make:policy PostPolicy –model=Post
Po

元記事を表示

非公開S3のpresignd-urlをonClickで発行しクライアント側でダウンロードさせる

## やりたいこと
S3に保管されているファイルをwebアプリ上でダウンロードしたいです。
オブジェクトを公開すればS3のURLをリンクするだけですが、
今回はセキュリティに配慮し非公開オブジェクトを扱うこととします。

なお今回はLaravel + Vue.jsでの実装ですが、どのフレームワークでも同じだと思いますので他言語の方もご参考ください。

またアップロード時もpresigned-urlが使えるようです。
実装方法を考えてみてください。

## やりかた
1. フロントのonClickをトリガーにバックエンドでpresigned-urlを発行する
1. `document.createElement(‘a’)`でaTagを作る。
1. バックエンドから返ってきたpresigned-urlを`aTag.href`に格納し`aTag.click()`でクリックさせる

## メリット
サーバーサイドでファイルをダウンロードしフロントエンドへ送り込む方法もありますが、
こちらの方法のほうが以下のようにメリットが多く感じられました。

– クライアント側でDLさせるため高速&サーバー

元記事を表示

【Laravel】フラッシュメッセージが再表示されるのを防ぐ

## やりたいこと

flashメソッドやwithメソッドを使ってフラッシュメッセージを表示させる際、
「当該ページでフラッシュメッセージを表示」→「他のページに移動」→「ブラウザの戻るボタンで元のページに戻る」
上記を行うと同じフラッシュメッセージが再表示されてしまう。これを防ぎたい。

## 結論

以下コードのように、phpで作成したユニーク値をJavaScriptを使用してブラウザのストレージに保存し「一度目の表示かどうか」を判定する。具体的なコードの説明は本記事の最下部に載せています。
“`html:example.blade.php

{{session(‘message’)}}