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

PHP関連のことを調べてみた2022年12月03日
目次

JavaScriptを動かすことができるWordpress用チャットボット

一応プラグインが存在しますが、いろいろとあるので(特にチャットボットでJSを動かしたい)
単純なサーチ系のを作ってみました

入力キーワードのHTMLはすべてエスケープして受け付けませんが
botはほぼすべてのHTMLタグを返すことができます。

ライセンス MIT (C) neet.co.jp

“`functions.php
date_default_timezone_set(‘Asia/Tokyo’);
parse_str($_SERVER[‘QUERY_STRING’], $queue);

if($queue[‘jo’] != “”) {
require ‘json.php’;
jsonexec($queue);
exit;
}

function searchChat( $keyword ) {
$args = array(
‘posts_per_page’ => 10000,// デフォはかなり多め
‘orderby’ => ‘date’,// 更新日
‘order’ => ‘DESC’,// 降順
‘post_type’ => ‘ch

元記事を表示

Laravel 9 名前付きルートの階層指定方法

こんにちは 初心者フリーランスです
今回が初投稿ですが、Laravelの勉強中に躓いたことなどをメモしていこうと思います
もし誤りがあったり理解不足などがあればコメントいただけると嬉しいです!!

今回躓いたことと解消方法

`web.php`で名前付きルーティングの階層指定方法が間違ってた(しょうもないミス)
名前付きルートの区切り文字を`/ (スラッシュ)`で記述していたため、リダイレクトで`not defined.` エラーになった

“`php:誤
Route::get(‘/contact/complete’, [ContactController::class, ‘complete’])->name(‘contact/complete’);
“`

“`php:正
Route::get(‘/contact/complete’, [ContactController::class, ‘complete’])->name(‘contact.complete’);
“`

※ちゃんとURLとviewの名前付きルート指定を理解しましょう

ルーティン

元記事を表示

【WordPress】すぐできるセキュリティ対策を6個挙げてみたぞ〜〜〜

## はじめに

こんにちは。[yuki(ほりゆう)](https://twitter.com/yuki82511988/photo)と申します。

エンジニアになってから副業でWordPressでのサイト制作や、改修などを依頼されることが何度かありました。

何度か触るうちにWordPressに興味を持ち、世界中のいろいろなサイトがWordPressで開発されてると知り、セキュリティに関しても何か対策したいなと思うようになりました。

本記事では、自分が調べた上で行っているWordPressのセキュリティ対策をご紹介します。
**簡単なLinux周りの知識、PHP、WordPressのコード開発の基礎、FTPクライアントなどの知識が前提です。**

:::note warn
2022/12/02現在の内容です。
:::

元記事を表示

DockerでLAMP環境(Amazon Linux 2/Apache/MySQL/PHP8.1(Laravel9))を構築する手順 ③PHP8.1系のインストール(全8回)

# はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。

![スクリーンショット 2022-11-30 23.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/930bcd24-38e9-316e-bebd-cef83aea5924.png)

全 8 回を予定しています。

[① 作成する環境の確認](https://qiita.com/ryamate/items/47183e1ffd4843ef18fa)
[② Apache の導入](https://qiita.com/ryamate/items/e5ca19aece61717b6a01)
**③ PHP 8.1 系のインストール**
④ Composer のインストール
⑤ timezone, locale の設定
⑥ docker-compose.yml の作成(MySQL の導入)
⑦ Laravel 9

元記事を表示

livewire プロパティで使える型について

## 扱える?
### string
– 使う場面はあんまり無い
### int
– 文字列以外を入れると当然エラーが起きる
– 型を指定せずにプロパティを宣言し、その値を使う時にintにキャストして使うのが良いと思う

### bool
– 空文字や0の時にfalse
– ‘false’という文字列はダメ

:::note warn
初期化の必要あり
“`php
public bool $flag = false;
“`
または

“`php
public bool $flag;

public function mount()
{
$this->flag = false;
}
“`

:::

### array
– ネストしてライフサイクルフックを扱える(以下記述)

“`php
public $hogeArray = [‘title’ => null,’content’ => null ]

public function updatedHogeArrayTitle()
{
//titleが変更された時に動く処理
}

“`

### Mo

元記事を表示

[docker,laravel8,nginx(非Laradoc)] docker環境構築で躓いたところと解決した方法をまとめてみた

## なぜこの記事を書いた?
会社の業務でdocker環境を構築したときに、エラー文がどこにあるかも分からず全く糸口が見えない状況に何度か陥り苦しんだため、同じ状況で苦しんでいる後続の方のお役に立てればと思い書きました。

## 当初の環境とdockerで構築した環境について(前提条件の共有)

当初は1つ目に記載したローカル環境で開発していましたが、ecs運用を見据えて2つ目に記載したdocker環境に構築し直しました。

“`:当初のローカル環境
laravel8 (フロントは専用のフレームワークを使用せずlaravelに備え付けられている機能を使用。vue(inertia)とbladeを両方使用)
php8.0
node14.17.5
mysql5.7
“`

“`:dockerで構築した環境
laravel8 (フロントは専用のフレームワークを使用せずlaravelに備え付けられている機能を使用。vue(inertia)とbladeを両方使用)
php8.1
node14.17.5(諸事情で低くしていますが、後ほどバージョンアップの予定)
mysql8.0
redis(p

元記事を表示

イベントを制御する、”EventDispatcher”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の3日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Sy

元記事を表示

それでも Azure App Service Windows インスタンスで PHP を使いたい

# はじめに

PHP は、Apache Web サーバーだけでなく、Windows の IIS サーバーでもサポートされていました。
しかし、2022 年 11 月 28 日で、PHP バージョン 7.4 のサポートが終了になり、かつ Windows での PHP バージョン 8.0 以降はサポートしなくなりました。なお、この方針は、2 年くらい前 (2020 年 7 月) にアナウンスされています。

https://news-web.php.net/php.internals/110907

もちろん、この方針は、Azure (Azure App Service Windows インスタンスも含む) でも変わりません。

https://azure.microsoft.com/ja-jp/updates/community-support-for-php-74-is-ending-on-28-november-2022/?WT.mc_id=AZ-MVP-5003113

https://github.com/Azure/app-service-linux-docs/blob/ma

元記事を表示

画像ジェネレーターを真似して、AWS EC2に上げてみた

 前回の続きです。

## サーバー構築から設定
 AWS cloud9以外触れたことがないので、戦々恐々ですがとりあえず設定していきます。
 参考にした記事
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984231/ae72f5c3-ff39-403b-d4a3-03f3920003ef.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984231/3cdc19ec-d6bb-51da-55ec-b8312d1a509d.png)
![image.png](https://qiita-image-store

元記事を表示

DoctrineとEloquent比較大全3: レコードをid指定で取得

day3の今日はday2で新規登録したレコードをidを指定して取得するやり方を見ていきます。

## Doctrine

“`php
getRepository(Book::class)->find(1);

// この書き方でも良い(shortcut)
$book1 = $entityManager->find(Book::class, 1);
“`

元記事を表示

IntuitiveCustomPostOrderとget_terms()を併用できない条件がある

## 概要

表題どおりですが、↓のようなケースで地味にハマったので忘備録も兼ねて。

– Intuitive Custom Post Orderを使ってタクソノミーを並び替えている
– 並び替えた順序に従って、get_terms()でタームを取り出す

## 本題

端的に言うと、`orderby=menu_order` は fieldsプロパティと併用できないようです。

### 動かないコードの例
fieldsにデフォルト値以外が指定されていると動きません。

“`php
// ラベルを取り出したい
$terms = get_terms($taxName, [
‘orderby’ => ‘menu_order’,
‘fields’ => ‘name’
]);
“`

### 動くコードの例
一度オブジェクトで取り出した後にforeachで任意のfieldを取り出しましょう。

“`php
// 1. オブジェクトを取り出す
$terms = get_terms($taxName, [
‘orderby’ => ‘menu_order’,
‘field

元記事を表示

WordPressのテーマファイルの基本(コピペ素材)

WordPressのテーマファイルを0から作成する際に、イチから書くと面倒なのでコピペ素材。
スタイルは適宜あてるように、大枠のみ
凝ったデザインでなければ、テーマファイルは下記の通りで問題ない。
## テーマファイル
* index.php
* header.php
* footer.php
* sidebar.php
* archive.php
* singular.php
* home.php
* serch.php
* style.css
* functions.php

これに各種ファイル格納フォルダとして“`images“`、“`css“`、“`js“`、“`inc“`、“`fnc“`
“`fnc“`には、“`functions.php“`に入れるコードで、ログイン画面、ダッシュボード等のコントロール、パンくずリスト、カスタム投稿等をそれぞれファイルに分けてinclude。
(パンくずリストは別記事で)
“`header.php“`を簡素化するため、“`style.css“`以外のメディアサイズでのスタイルやWebフォント(google

元記事を表示

laravel existsバリデーションルールについて

# 概要

– laravelのexistsバリデーションルールについて別ページにまとめたのでリンクを貼っておく。

# 内容

https://anteku.jp/blog/develop/laravel-post%e3%81%95%e3%82%8c%e3%81%9f%e5%80%a4%e3%81%8c%e6%8c%87%e5%ae%9a%e3%81%95%e3%82%8c%e3%81%9f%e3%83%86%e3%83%bc%e3%83%96%e3%83%ab%e3%81%ae%e3%82%ab%e3%83%a9%e3%83%a0%e3%81%ab%e5%ad%98/

元記事を表示

【初心者】PHPで星占いAPIを使ってみた

この記事は、

– PHPの書き方はなんとなくわかった!
– でもPHPでどんな事ができるの?

といったレベル感の初心者が占いAPIを使ってページを作ってみたので、その時の覚え書きを残しています。

**参考ドキュメント**
・NobsCafe Jugem 星占い API 導入
https://www.nob.gr.jp/au/wordpress/1554/
・PHPでJSONデータの取得の仕方
https://qiita.com/fantm21/items/603cbabf2e78cb08133e


使用したのは下記の星座占いAPI(無料版)です。
http://jugemkey.jp/api/waf/api_free.php
使用する際は必ず「利用する条件」を読んで遵守しましょう。
(サイトが古いためかSSL化されていないようで、環境によっては警告が出る可能性があります。
JUGEM提供なので怪しいサービスではない認識ですが、気になる方はご注意ください)

この記事の通り実装して色々と装飾したサンプルがこちらになります。
・GitHub
https://gith

元記事を表示

CakePHP4.3 Deprecated ルーティング内のプレースホルダーの記載方法の変更

CakePHP4.2 以前から CakePHP4.3 にあげるとこんな警告が表示される。

“`php
Deprecated Error: Colon prefixed route placeholders like `:foo` are deprecated. Use braced placeholders like `{foo}` instead.
/var/www/html/api/vendor/cakephp/cakephp/src/Routing/Route/Route.php, line: 301
You can disable all deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED`. Adding `vendor/cakephp/cakephp/src/Routing/Route/Route.php` to `Error.ignoredDeprecationPaths` in your `config/app.php` config will mute

元記事を表示

laravel モデルクラスのexists()を用いてレコードが存在するか確認する

:::note info
この記事は[miriwoお一人様 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/miriwo)の2022-12-02の記事です
:::

# 概要

– モデルクラスの`exist()`を用いてレコードが存在するか確認する方法をまとめる。

# 方法

– 下記の様に記載することでレコードが存在していればtrueを、存在していなければfalseを返す。

“`php
モデル::where(‘カラム名’, 値)->exists();
“`

– 例えばusersテーブルに紐づくモデルUserを用いてusers.idカラムが1のレコードが存在しているかを確認する場合下記の様に記載する。

“`php
use App\Models\User;

User::where(‘id’, 1)->exists();
“`

– レコードが存在している時はtrueが帰り、存在していない時はfalseが変える。
– ちなみにおそらく、`wh

元記事を表示

画像ジェネレーターを真似してみました(まだローカルまで)

 初めまして、TaskAraiです。最近PHPを勉強し始めて一か月、とりあえず画像ジェネレーターを作りたいと思い至りました。
 画像ジェネレーターとは、元々用意している画像の上に文字を載せるものです。イメージしているのは、下に引用しているものです。
・参考資料
## 画像ジェネレーターを作る
 さて、画像ジェネレーターを作りたい僕ですが、何も分かりません。とりあえず、「PHP 画像に文字を載せる」とググります。
 どうやら「imagettftex()」というものが良さそう。早速、下記の公式マニュアルをコピペして実行してみます。これなら、少し手を加えるだけで簡単に実現できそうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984231/c4b5accb-5400-1c2d-d8cc-fdeca5d112c0.png)
引用元:【Laravel】Eloquentで多対多のリレーションを使い倒す

この記事は「[GoQSystem Advent Calendar 2022](https://qiita.com/advent-calendar/2022/goqsystem)」の2日目の記事です。

## はじめに
多対多のリレーションは「1対1」や「1対多」のリレーション([※リレーションとは](https://wa3.i-3-i.info/word11596.html))と比べて若干複雑です。というのも多対多のリレーションには「中間テーブル」という存在があるからです。

![sample.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040106/1802dcff-bee1-5212-c058-e993728b96a5.png)

まず「**多対多**」とは何か説明します(~~前置きが若干長いです~~)。
**いいから本題だ!という方は[こちら](#多対多リレーションをlaravelで扱う)からどうぞ!**

## 多対多とは
さて、そもそも多対多ってどういう関係やねんということで

元記事を表示

Vagrant + Amazon Linux2 + Laravel 9 + Apache 2.4の環境構築 2日目

# 1. 初めに
閲覧ありがとうございます。
また、1日目の記事を読んだ方は重ね重ねありがとうございます。
読んでない方はぜひ見てください!!!

# 2.概要
1日目の記事の続きになります。

1日目 : Vagrant設定、PHPインストール・設定、Laravel インストール・設定
2日目 : Apache インストール・設定、Mysql インストール・設定 **←ここ**

参考サイト :
https://qiita.com/hamburg-love/items/ae819a7abf921af77376
https://qiita.com/suzuki_web/items/2180a00a21d574bf7f55
https://terakoya.sejuku.net/question/detail/19710
https://zenn.dev/saxsir/scraps/d4815afb346582
https://ww

元記事を表示

PHP で Postgres の boolean 型を安全に扱う

## 忙しい人向けのまとめ

– PHP で Postgres のデータを取得すると、各カラムは文字列
– boolean 型を取得したときは “t” または “f”
– 普段 PHP で bool 型を扱っている時と同じように扱うには、テーブル定義に合わせて記述するクラスに boolean のカラムは含めず、マジックメソッドで別途処理するとよい

## 背景

通常、PHP で Postgres からデータを取得する際、各カラムの値が文字列で取得されます。
boolean 型のカラムは true が `”t”`、false が `”f”` で取得されます。

https://www.php.net/manual/ja/function.pg-fetch-result.php#refsect1-function.pg-fetch-result-returnvalues
> 論理型の値は “t” あるいは “f” の形式で返します。 配列を含むそれ以外の型は、PostgreSQL のやりかたにしたがって文字列として フォーマットされた形式で返します。

この仕様をあらかじめ把握していない

元記事を表示

OTHERカテゴリの最新記事