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

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

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’ => ‘

元記事を表示

Laravel 多対多のテーブル設計と中間テーブルについて(初学者向け)

## はじめに
Laravelの学習中に、1対多のリレーションは組むことができたけれど、多対多の場合のテーブル設計はどう考えれば良いのか、また中間テーブルについてイメージが掴めなかったため、自分なりにまとめてみました。

## 作成するテーブル
以下の映画テーブルと俳優テーブルを例に考えてみます。

#### 映画テーブル
| id| タイトル (title) |公開年 (release_year) |
|:-:|:-:|:-:|
| 1 | インセプション | 2010 |
| 2 | タイタニック | 1997 |
| 3 | アベンジャーズ | 2012 |

#### 俳優テーブル
| id | 名前 (name) |性別 (gender)|
|:-:|:-:|:-:|
| 1 | レオナルド・ディカプリオ |male|
| 2 | ロバート・ダウニー・Jr |male|
| 3 | スカーレット・ヨハンソン |female|

1つの映画に複数の俳優が出演します。また1人の俳優は複数の映画に出演します。
つまり2つのテーブルの関係性は、多対多とな

元記事を表示

単純交換法(バブルソート)

## 単純交換法(バブルソート)とは

データを並べ替える整列アルゴリズムの一つ。
隣り合ったデータを交換する処理を繰り返して、全体を整列する。
実行速度は遅い。

### 対象データ

以下の配列を昇順に並べ替える

“`php
$array = [5, 3, 4, 1, 2];
“`

### フローチャート

変数`i`は比較する要素のうち右側の要素の添字を表す変数。
変数`k`は既に確定した要素の添字。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/e9d0e64b-8539-7b23-1b6f-3fa5374540a4.png)

#### 手順

①右端の要素から順に、隣り合ったデータを昇順に並べ替える
②左端の要素から一つずつ順番に、データが昇順に整列していく

元記事を表示

単純選択法(選択ソート)

## 単純選択法(選択ソート)とは

データを並べ替える整列アルゴリズムの一つ。
一番小さなデータを選択して、先頭から順に並べ替えていく。

### 対象データ

以下の配列を昇順に並べ替える

“`php
$array = [12, 13, 11, 14, 10];
“`

### フローチャート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/c88b3f08-a06d-6137-52ee-79a01f9a52c5.png)

#### 手順

①探索範囲の最小値を探す
②探索範囲の最小値を先頭要素と交換する

元記事を表示

PHPでiPhoneユーザーとAndroidユーザーを自動判別するサンプルコード

PHPでiPhoneユーザーとAndroidユーザーを自動判別してリンク先を分けるシステムを作成することは可能です。以下にその実装方法を示します。

PHPコード
以下の例では、User-Agent ヘッダーを解析して、ユーザーがiPhoneまたはAndroidデバイスを使用しているかどうかを判別し、それに基づいてリダイレクトするコードを示します。

“`PHP

元記事を表示

WP Offlaod Media Lite S3で画像アップロードが出来なかった…。

# WP Offlaod Media Lite S3で画像アップロードが出来なかった…。 ~php-gd~

AWS初心者向けのハンズオン形式の講座で、WordPress上の画像をS3に保存する処理がありましたが、どういうわけだかS3にアップロードできませんでした。

「AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得」
~~蛇足:AWSのコンソールやWP Offload Mediaの設定画面がハンズオン動画と異なるので苦労します…。~~
https://www.udemy.com/share/101Yby3@7BjNdcYUfFZEZkJbOQ2PFRKD2znhh2E07weMeqSegaewGTSl6u29J1MBsfp7HyIBPw==/

以下の投稿を参考に見直したところ、php関連パッケージのインストールで不足分が判明しました…。

https://qiita.com/kyusyu_syoyu/items/a1c183e4afb59788a67a

## php-gd
結論、

元記事を表示

【PHP】フレームワークFlowで多言語に対応したページを作成する

# 初めに
FlowではL10n(Localization)やI18n(Internationalization)に対応したページを作成することができます。今回は、Flowにおける対言語対応の方法をまとめていきます。

# Flowにおける多言語対応処理
Flowにおける多言語対応は以下の2ステップで行います。
* **文言を定義したメッセージファイルを言語(日本語、英語など)ごとに作成**
* **言語を指定し、対応するメッセージファイルを利用する**

翻訳は、以下の2つのクラスを使って行います。

* **Localeクラス**
* **Translaterクラス**

## Localeクラス
日本語や英語など、どの言語を使うかの情報を持つクラスです。

“`php
$locale = new Locale(‘ja’);
“`

## Translaterクラス
実際に翻訳を行うクラスです。
Localeを引数に、対応した文言を返すメソッドなどが定義してあります。

# 多言語対応やってみた
ということで、実際にやってみましょう。
今回は以下の二種類を試します。
* **

元記事を表示

PHPのヒアドキュメントで作成したSQLクエリが急に効かなくなった

# 環境
| 名称 | バージョン |
|:-:|:-:|
| PHP | 7.4.26 |

# 問題
フレームワークなしのPHPで作成されたWebシステムを機能改修している中で、ヒアドキュメントを使ってSQLクエリを作っていた箇所があった。
別の担当者がその部分のソースを触って、その人がPJから去った後に自分が動作確認したら、触ったソースが関与している処理が機能していなかった。

# 解決方法
誤入力で入れたのであろうインデント1個に不幸にされてた\(^o^)/

“`test.php

元記事を表示

【PHP】ローカル変数とグローバル変数

# ローカル変数とグローバル変数
PHPの変数には**ローカル変数**と**グローバル変数**の2種類がある。
その2つの違いを解説していきたい。

## ローカル変数

**ローカル変数**とは、決められた範囲内(ローカルスコープ)でしか扱えない変数のことを言う。

“`php:ローカル変数

“`

Undefined variable という警告が表示されてしまった。
なぜかというと、関数user()内で定義されている変数nameと、関数外で定義されている変数nameは**全くの別物として扱われている**ためである。
関数user()内で定義されて

元記事を表示

OTHERカテゴリの最新記事