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

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

医療情報技師の過去問サイトを爆速で作った話

# 背景

医療情報技師の資格試験が8月にあり、過去問の勉強しようと過去問サイトを探していたが、なかなか良いWebサイトがない。。。

以下のWebサイトを見つけたが、いくつか問題点があって、自作でWebサイトを作ることにしました。

https://iryoujyouhou.wiki.fc2.com/wiki/トップページ

# 問題点について

[背景](#背景)で述べた問題点についてですが、以下となります。

### 1. 問題の正解不正解を記録してくれない

自分が今何問正解しているのかを毎回紙にメモするのが面倒でした。
合格基準を満たしているか確認するために正答率も出したかったので、システム側で記録して欲しかった。。。

### 2. スマホ画面だと解答が丸見え

01.jpg

上記の画像のようにスマ

元記事を表示

【PHP】PHPでActive Directoryを検索する方法

#### 今度はPHPでAD連携してみよう
今度はPHPでもAD連携をしてみます。
 PHPではPHP自体の設定ファイルphp.ini の以下の場所のコメントを外すと、
最初から入っている組込みのLDAP関数群が使えるようになります。
“`dosini
;extension=php_ldap.dll
“`
[PHP: LDAP 関数](http://php.net/manual/ja/ref.ldap.php)

 全て関数名の最初が“ldap*“ で始まるので分かりやすいのですが、使い方はC#とまったく違って独特です。
 以下、PHP 5.6 で確認しています。最新のPHP7-8ではないですが大きな違いはないかと思います。

#### AD接続クラス ADConnectSample
* ADのサーバ名+検索先ディレクトリのベースDN、ユーザ、パスワードの3つが必要な情報になります。与え方などは適宜修正してください。
* コメントにもありますが、“ldap_connect()“すると名前からしてもう繋がった……と思いきや、パラメータ検査と接続できるかの確認だけなの

元記事を表示

【個人開発】ディベート掲示板作ってみた!

初めに

この度
Avis
というwebアプリを開発しました。
ディベートに特化したSNSです。
本日も叫ばれる様々な社会問題(SDGsなど)、人それぞれが抱える人生の悩み、そして些細な日常の言い争いまで…様々な論題についてユーザー参加型のディベートを行い、何が正しいのかを模索してくサービスです。

https://avis.city/slist.php?mode=sdgs

Avisの機能

ディベート作成

ユーザーによりディベートを作成することができます。
作成されたディベートは東軍西軍いずれかが目標ポイント(250or500)に到達するとプログラムにより勝敗が確定します。

![senkyou.png](https://qiita-image-store.s3.ap-northea

元記事を表示

PHP array_filterを再帰的に行うarray_filter_recursiveを書いた

## 説明

必要だったから探した。探したけど納得できるものが見つからなかったから書いた。車輪の再発明。劣化コピー万歳!

1. 配列に対してarray_filterっぽいのを再帰的に行うarray_filter_recursive
2. オブジェクトに対してarray_filterっぽいのを再帰的に行うobject_filter_recursive
3. テストもあるよ

## プログラム
“`php
/**
* 再帰的に配列をフィルタリングする
*
* @param array $array
* @param $callback
* @return array
*/
function array_filter_recursive($array, $callback): array {

if (! is_array($array)) {
trigger_error(__FUNCTION__.'(): Argument #1 ($array) must be of type array.’, E_USER_ERROR);
}

元記事を表示

Laravel API 例外発生時のHTTP ResponseをJson Responseにする

Laravelで正常時にJsonレスポンスを返していても、例外時はHTTPレスポンスを返す場合があります。
HTTPヘッダーに`Accept`: `application/json` が指定されてないとHTTPレスポンスが返ってきます。

フロント側でHTTPヘッダーを追加して送ってもらうのも正しいですが、指定がないとHTTPレスポンスが返るのもAPIサーバーとしては謎な挙動なので常にJsonレスポンスを返すためにミドルウェアを作ります。

## 環境

– PHP: 8.1.5
– Laravel: 9.9.0

## 手順

“`shell-session
$ php artisan make:middleware ForceJsonResponse
“`

“`php:app/Http/Middleware/ForceJsonResponse.php

元記事を表示

【メモ】.htaccessが非推奨な理由

最近Laravelプロジェクトが動く仕組みを調べている初心者です。
XAMPPのドキュメントルートにLaravelプロジェクトを作ったのですが、Laravelプロジェクトのpublic配下にApacheのWebサーバの設定を記述できる.htaccessがありました。.htaccessはhttpd.confで使用できるか否かを設定できるのですがXAMPPのデフォルトでは.htaccessの使用が許可されていました。
ちなみに.htaccessが有効になっている場合はhttpd.confに記載されている内容より優先されます。
Laravelプロジェクトでpublic配下にあるファイルにアクセスしようとすると.htaccessの設定によってindex.phpに集約されるようになっていました。が、仕組みがいまいちわからない。。。
そこで使い方等を調べていたのですがどうやら.htaccessは非推奨でhttpd.confを極力使うのが公式が推奨している方法のようでした。今回は.htaccessが非推奨な理由のメモです。

# .htaccessで設定することが多いURLの書き換え
リクエストUR

元記事を表示

Yiiで学ぶDI

このの記事では、Yiiフレームワークの[公式ドキュメント](https://www.yiiframework.com/doc/guide/2.0/ja/concept-di-container “Yii 2.0 決定版ガイド”)に記載されている、[素晴らしい解説](https://martinfowler.com/articles/injection.html “Inversion of Control Containers and the Dependency Injection pattern”)をもとに、依存性の注入について、なるべく基本的なところから書いていこうと思います。

# 依存性の注入とは

wikipediaには、こう書かれています。
「依存性の注入とは、コンポーネント間の依存関係をプログラムのソースコードから排除するために、外部の設定ファイルなどでオブジェクトを注入できるようにするソフトウェアパターンである。」

こちらを理解するためには、いくつかの前提となる知識が必要ですので、それについて説明します。

## 疎結合

クラスが疎結合である、という考え方が

元記事を表示

laravel Framework 9.10.1 ユニットテストコマンド

個人思い出し用

““`ターミナル
php artisan test tests/Feature/ExampleTest.php
““`

元記事を表示

EC-CUBE 4.1系で商品の販売期間を限定するカスタム

# 販売期間を限定するカスタム
dtb_productに販売開始日時と販売終了日時を追加し、商品一覧ページと商品詳細ページにてカートボタンの表示を分岐させることで販売期間中のみに購入が可能になるカスタマイズを実装したい。なお、価格表示もその期間中とする。
カスタマイズを実装するにあたり、コミュニティにてアドバイスをいただくことができました。
ありがとうございます。

当初は商品の公開/非公開自体の予約機能を実装しようと考えていたため、その分は別記事を投稿する。

## 環境
* Docker Compose version v2.0.0-rc.1
* PHP 7.4
* mysql 5.7
* EC-CUBE 4.1.1

## 参考にしたドキュメント

https://doc4.ec-cube.net/customize_entity

https://qiita.com/JunjiUmemoto/items/8617dfe1e8109561caca

【EC-CUBE4】商品の公開日時が指定できる予約投稿機能を実装する方法

## Entityカスタマイズ
dtb_pro

元記事を表示

PHPでフレームワークを使わずに掲示板アプリを作ってみる⑤ 掲示板の画面作成

# はじめに
※自身の学習を記事に投稿することでアウトプットするのが目的です。
「よくわかるPHPの教科書」のchapter6に書いてある通りにアプリを
作成していくので、私と同じような駆け出しエンジニアの皆さんは、
書籍を買ってアプリを作っていただいた方がわかりやすいかもしれません。

# 使用しているエディタ、実行環境
* VS Code
* XAMPP

* PHP7
* windows

## 掲示板の画面を作成していく。
“`
time() ) { 
//ログインしている
$_SESSION[ ‘time’ ] = time();

$members = $db -> prepare( ‘SELECT * FROM members WHERE id=?’ );
$members -> execute( array($_SESSION[ ‘

元記事を表示

Laravelのタイムゾーンを日本時間に変更する

# ”UTC”から”Asia/Tokyo”に変更

LaravelのタイムゾーンはデフォルトでUTCになっているため、ログに残る時間やcreated_atが日本時間より9時間遅れた時間が記録されてしまう。
`config/app.php`ファイルの記述を変更すればよい

## 変更前

“`config/app.php
‘timezone’ => ‘UTC’,
“`

“`
$ php artisan tinker
>>> echo Carbon\Carbon::now();
2022-05-03 01:40:21⏎
“`

## 変更前

“`config/app.php
‘timezone’ => ‘Asia/Tokyo’,
“`

### キャッシュクリア
“`
$ php artisan config:clear
“`
### 確認

“`
$ php artisan tinker
>>> echo Carbon\Carbon::now();
2022-05-03 10:40:49⏎
“`

元記事を表示

スーパー初心者向け! WordPress構築?

人気ブログの一つに「Wordperss」がありますよね。
今回はインフラ基盤を一から作り自分の記事が書けることをゴールに設定しました!

# WordPressとは?
“WordPress(ワードプレス)とは、サイトの作成やブログの作成などが
できるCMS(コンテンツ管理システム)の1つ”

https://digital-marketing.jp/creative/what-is-wordpress/

では早速構築に移りましょう!
:::message
Amazon Linux2でのインストールを試みます。
:::

[参考サイト]
https://qiita.com/moomindani/items/9968df0d4396564bf74c#%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3-6-phpmyadmin-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B

yumのアップデート
“`js
yum update –

元記事を表示

Laravel API パスワードリセット機能を実装する

## パスワードリセットとは?

パスワード忘れた人がメールアドレスを入力して、メールのリンクを踏んで、パスワードを変更する一連のアレをAPIで実装します。パスワードリマインダーとも言う。

Laravel Breeze等の[Laravelアプリケーションスターターキット](https://readouble.com/laravel/9.x/ja/starter-kits.html)にパスワードリセット機能を含め、認証系のテンプレートは用意されてます。

今回はAPI向けに実装します。
認証機能の実装が終わったらついでに作ると良さそうです。
ちなみに認証機能の記事はこれです。

https://qiita.com/ucan-lab/items/3e7045e49658763a9566

## 参考資料

https://readouble.com/laravel/9.x/ja/passwords.html

公式ドキュメントにパスワードリセットを参考にします。

## 環境

– PHP: 8.1.5
– Laravel: 9.9.0

## 実装するAPI

– パスワードリセットメ

元記事を表示

【PHP】CakePHP4の導入

# 事前準備

### Composerのインストール
・[公式サイト](https://getcomposer.org/doc/00-intro.md#installation-windows)からComposer-Setup.exeをダウンロードしてインストール

### PHPインストール
・[公式サイト](https://www.php.net/downloads)からダウンロードしてインストール

※CakePHP4を使用する際にintlが必要になるため、php.iniでintlのコメントを外します。
“`
extension=intl
“`

### XAMPPインストール
・[公式サイト](https://www.apachefriends.org/jp/index.html)からダウンロードしてインストール

# CakePHP4のインストール
コマンドプロントで下記のコマンドを実行して、XAMPPの作業ディレクトリに
CakePHP4をインストールします。
“`
// 作業ディレクトリに移動
cd C:/xampp/htdocs
// cakephp4をイ

元記事を表示

サーバーのソフトウェア情報を非公開にする方法

はじめに
====
nginxはデフォルトで、エラーページと同様にServer HTTPヘッダでその使用に関する情報を送信します(例:nginx/1.11.1.

現在、出力されるヘッダを確認するには、ターミナルで以下のように実行します。

“`
curl -I https://test.com
“`

ソフトウェアバージョン情報の非表示

curlを実行してバージョン情報が表示されるということは、外部からソフトウェアのバージョンが確認できることを意味しています。

伝統的には、ソフトウェアのバージョンは公開しないべきという考え方が一般的なようです。この点に関して、標準的な解決方法は下記のようにしてバージョン情報を隠蔽することです。

**nginx(nginx.confのhttpブロックに以下を設定)**

“`
server_tokens off;
“`

**Apache(httpd.conf)**

“`
ServerTokens ProducOnly
ServerSignature Off
“`

**PHP(php.ini)**

“`
expose_p

元記事を表示

ParseErrorsyntax error, unexpected ‘Route’ (T_STRING) エラー(解決)

//文法エラー
Route::get(‘hello’, ‘function(){
return view(‘hello.index’);
});

⬇️

Route::get(‘hello’, function(){
return view(‘hello.index’);
});

functionの前にアポストロフィ(‘)があり、エラー。

https://prograshi.com/framework/laravel/parse-syntax-error/

→こちらの記事を参考にさせて頂きました。

元記事を表示

SmartyでPHPからテンプレートへ値を渡す

## 用途
SmartyでPHPからテンプレートに値を渡したい時に使う。
PHPで処理したものなどをSmartyでテンプレートに渡したい時に使う。

## 使用方法
“`php:phpファイルでの渡し方
$smarty->assign(“変数名”, “値”);
“`
渡す際は、`assign` の第1引数に「変数名」、第2引数に「渡したい値」を指定する。
“`html:テンプレートファイルでの受け取り方(表示の仕方)
{$変数名}
“`
受け取る際は、phpファイルで指定した変数名の先頭に `$` をつけて `{}` で囲む。

—————————————

### 文字列を渡す
“`php:phpファイルで文字列を渡す
$smarty->assign(“hoge”, “abcdefg”);
“`

“`html:テンプレートファイルで文字列を受け取る
{$hoge}です。

// 結果
abcdefgです。
“`
————————-

### 配列を渡す
“`php:phpファイルで

元記事を表示

laravelマイグレーションできない解決方法

マイグレーションする際、だいたい調べたらすぐ直るが今回なかなか治らんかったのメモに残しておきます。

■エラー内容
Class ‘Barryvdh\Debugbar\ServiceProvider’ not found

# 1,composerのオートロードし、キャッシュ削除

“`
composer dump-autoload

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
composer dump-autoload

php artisan migrate:refresh –seed

[参考]
https://qiita.com/kuma15/items/1687696bdd6be094c780
“`
# 2,bootstrap/cache以下削除し、composer dump-autoload
“`
composer dump-autoload

php artisan migrate:refresh –seed

[参

元記事を表示

Laravelを使ってユーザー認証機能を「本気で」実装してみる②

Laravel 6系を使ってユーザー認証機能を実装する方法を解説します。
本稿は、[Laravelを使ってユーザー認証機能を「本気で」実装してみる①](https://qiita.com/Michi1090/items/20cb5901666538114c4e)の続編になります。詳しい要件定義などは、そちらをご確認ください。

今回は、
– メール認証機能
– パスワードリセット機能
– ログイン後のリダイレクト先変更

を実装していきます。

# 実装

## メール認証・パスワードリセット

まずはメール認証・パスワードリセット機能の実装からです。

### モデル

“`diff_PHP:app/User.php

元記事を表示

WordPressのwebp、avif画像の読み込みを更に高速化する

## はじめに

https://qiita.com/nanakochi123456/items/adedfe54e50bbb3653d5

この記事を利用した、.htaccess によるリダイレクト型の
高圧縮画像表示には難点があり、
302リダイレクトが発生し、特に海外(米国)から計測すると
100バイト程度のリクエストとはいえ、
再度リクエストすることにより200ms~600msと大きな遅延を発生させてしまいます。

同じように国内においてもMVNO回線や電波の悪いモバイル回線でも同じようなことが発生しうると考えられます。

WordPressとphpの知識を必要としますが、リダイレクトを発生をさせないよう、uaを検出して最適な画像を配信します。

### 必要なもの
・Wordpressのfunctions.phpの知識
・キャッシュ系プラグインのOFF、キャッシュ系のサーバー設定のOFF
・Wordpressで自動的にwebpに変換するプラグイン

今回はこれを使用、有料課金すればavifも使用できますが、webpだけの対応とします。

https://wordpress.

元記事を表示

OTHERカテゴリの最新記事