PHP関連のことを調べてみた

PHP関連のことを調べてみた

【paizaラーニング】レベルアップ問題集 ソートメニュー応用編 「ペアソート」 PHP 

## 解答例
皆さん、こんにちは:raised_hand::cow:
<=>という訳の分からない演算子を使って解きました。
**三方比較演算子**、**宇宙船演算子**というらしいです。かっこいいので**宇宙船演算子**と呼びます。(宇宙船ぽいからこの名前?)
“`
$b[1];
// 2列目のほうが優先度が低いので、宇宙船演算子を使い、先にソート

元記事を表示

【ChatGPT】CakePHP で e ラーニングシステムを bake するコマンドを聞いてみた

CakePHP には
データベースの内容から
プログラムを生成できる
bake という機能があります。

今回は ChatGPT で
e ラーニングシステムを
bake するコマンドを聞いてみました。

ChatGPT と bake を組み合わせれば
e ラーニングシステムが簡単に作れる事を
かなり期待しています。

対戦よろしくお願いします。

***

ChatGPT に聞いた質問文

個人的に思っていることですが
ChatGPT は英語で聞いた方が
良い回答を得やすいと思っています。

恐らく日本語で聞いた場合は
内部で英語に変換しているのではないか
と勝手に思っているため
初めから Google 翻訳でしっくりくる英語を
入力した方が良い回答を
得やすいのではないかという勝手なイメージです。

そこで ChatGPT に以下の質問をしてみました。

“`smarty:質問文
I have a request.
Could you please tell me the command to bake an e-learning system with CakePHP?
I ca

元記事を表示

[Laravel] 基本的な操作まとめてみた

学習記録用にまとめました。

## ルートの登録
**web.php**(routesディレクトリ)にパスとHTTPメソッドの組み合わせに対応した処理を定義すること
下記の3つをルーティングファイルに設定する
1. パス
1. HTTPリクエストメソッド(GETやPOSTなど)
1. 処理内容

“`php:例
//http://localhost/hello-worldにアクセスすると「hello world」と表示される
Route::get(‘/hello-world’, function() {
return’hello world’;//returnしたものが表示される
});
“`
上記の例では「hello world」の文字列が表示されるだけ。
ブラウザに指定したHTMLファイルを表示させたい場合は**ビューファイル**使用する

## ビュー
ブラウザにHTMLファイルを表示したい場合は、**ビューファイル**というHTMLなどの表示内容が書かれたファイルをルートに指定する必要がある。
※Laravelでビューファイルを作成する方法はいくつかあるが、**Blad

元記事を表示

laravelの個人的に学んだこと(ディレクトリ)

# appディレクトリ
主にアプリケーションの処理を書いていく

# bootstrapディレクトリ
初期起動時の処理

# configディレクトリ
設定ファイル

# databaseディレクトリ
データベース関連

# publicディレクトリ
画面に表示されるディレクトリ

# resourceディレクトリ
画面に描写される関連ファイルの元となるディレクトリ

# routesディレクトリ
ルート定義のディレクトリ

# storageディレクトリ
倉庫

# testディレクトリ
テスト関連

# vendorディレクトリ
railsでいうgemみたいなもの

元記事を表示

【Laravel】API実行時のExceptionログにリクエスト情報を含める

Webアプリケーションの開発中や運用中に、実行時例外が発生することは避けられませんが、例外が発生した際にリクエストの内容がわからないと、問題の原因を特定するのが非常に困難になることがあります。

そこで、Laravelで例外が発生した際に、リクエスト内容をエラーの詳細と共にログに出力するように設定することで、問題の原因を迅速に特定し、調査をスムーズに進めることができるようにする方法について解説をします。

# やりたいこと

Laravelアプリケーションで例外が発生したときに、リクエストの詳細情報(URL、HTTPメソッド、リクエストパラメータ、ヘッダーなど)を含むログを出力するように設定します。

これにより、ログから直接、問題の原因を調査するのが容易になります。

# コード例

### Handler.phpの編集

まず、`app/Exceptions/Handler.php` ファイルを開きます。そして、以下のように修正します。

“`php

元記事を表示

横(列)方向に伸びるCSVを効率よく作成する方法の模索

# はじめに

通常データベースの内容をCSVなりExcelなりにエクスポートする場合、ひとつのカラムに対してひとつの列が割り当てられ、ひとつのレコードに対して行がひとつ、つまりレコード数が増えると見た目縦に伸びていくような構造に、通常はなると思います。

しかし今回お客様のご要望は縦横が逆で、カラムが縦に並び、1レコードが1列に対応するものでした。

通常
住所
山田 一郎 北海道
田中 二郎 沖縄県
<

【Laravel】独自の単位でリクエスト制限を設定する

この記事では、Laravelアプリケーションで独自のID単位でリクエスト制限を設定する方法を説明します。

デフォルトでは、LaravelはIPアドレスやユーザーID単位でリクエストを制限しますが、特定のシステムIDやユーザーセッションIDに基づいてリクエストを制限することで、より細かな制御が可能になります。

今回は、セッションIDを単位で1分間に10回のリクエスト制限を設定する例を用いて具体的に解説します。

## コードの説明

### 1. **カスタムミドルウェアの作成**

まず、特定のID(例としてセッションID)に基づいてリクエストを制限するためのカスタムミドルウェアを作成します。

“`php
namespace App\Http\Middleware;

use Illuminate\Routing\Middleware\ThrottleRequests;

class ThrottleRequestsByCustomID extends ThrottleRequests
{
protected function res

cakePHP4のmigrationで発生したSyntaxエラーの解消

## 発生したエラー
クエリビルダを使用してupdate文を作成した時に以下のエラーが発生しました。(コードは以下の通り)やりたかったことはorderカラムの値のアップデートです。

“`php
$this->getQueryBuilder()
->update(‘my_table’)
->set([
‘order’ => xx,
])
->where([‘id’ => xx])
->execute();
“`

このコードを実行すると以下のエラーが吐かれました。
“`php
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘order = ‘xx’ WHERE id

PHPで改行コードを取り除く

PHPの勉強始めました。
今までなんとなくで使っていたので、初心に戻って1つづつ学んでいます。
## trim()を使う
変数をechoした時に、謎の改行が出ていたので取り除く方法を探しました。
見つかったのがtrim()、先頭や文末の文字列を削除します。
“`
trim( “対応の文字列”, “削除したい文字列” );
“`

第2引数に何も指定しない場合は、以下の文字コードが削除されます。
今回削除したいのは、改行だったのでちょうど良い。
“`
” ” (ASCII 32 (0x20)), 通常の空白。
“\t” (ASCII 9 (0x09)), タブ。
“\n” (ASCII 10 (0x0A)), リターン。
“\r” (ASCII 13 (0x0D)), 改行。
“\0” (ASCII 0 (0x00)), NULバイト
“\v” (ASCII 11 (0x0B)), 垂直タブ

“`

始めての技術アウトプット、終わり。

## 参考記事
https://www.php.net/manual/ja/function.trim.php

【PHP8】password_hashを使ったハッシュ化について

## はじめに
PHPでの実装にて、ユーザ情報のパスワードのソルト(パスワードに付与するランダムな文字列)を作成し、`password_hash`関数に渡してハッシュ化しようとしたら問題が起きました。

その際にPHPでのハッシュ化について少し調べましたので記述します。

## `password_hash()`の動作

`password_hash`はPHP5.5以降で使うことができ、強力な一方向ハッシュアルゴリズムを使って、 新しいパスワードハッシュを作るハッシュ関数です。

`option`引数でソルトを設定可能ですが、指定しない場合はランダムソルトを使い、同じパスワードの文字列であっても毎回違うハッシュ値を生成します。

しかし、PHP7から`option`でのソルトは非推奨、PHP8からはソルトが設定されていても無視されてランダムソルトが使用されるので注意が必要です(これが原因でsymfonyをdevelopモードで動かしていて発生するとエラー画面でWarningが表示されてしまいます)。

### PHPバージョン7 ソルトを設定して`password_hash`実行 –

WordPressでiframeを埋め込んだらCSPエラーが発生した件

## はじめに
WordPressで作成したページにVimeoの動画を埋め込んだ際にContent Security Policy (CSP) エラーが発生したので、今回はそれについてまとめる。
CSPはセキュリティ対策の一環として重要だが、設定ミスや外部リソースの許可を適切に行わないとエラーが発生する。

## 問題点
以下のようなコードを追加して、Vimeoの動画を埋め込んだところ、以下のようなCSPエラーが発生しました。
“`php

ユーザーグループの作成、追加
“`
groupadd laravel
gpasswd -a root laravel
gpasswd -a nginx laravel
chown -R :laravel ./storage
chown -R :laravel ./bootstrap/cache
“`

出力されるログ・ファイルのパーミッションを変更

“`/config/logging.php
‘daily’ => [
‘driver’ => ‘daily’,
‘path’ => storage_path(‘logs/laravel.log’),
‘level’ => ‘

今回
山田 田中